summaryrefslogtreecommitdiffstats
path: root/fs/quota
diff options
context:
space:
mode:
authorJan Kara <jack@suse.cz>2017-06-08 16:18:54 +0200
committerJan Kara <jack@suse.cz>2017-08-17 19:03:44 +0200
commitf0c5bae5cc562307f804335ddec3f793254c3766 (patch)
tree6c11d1c6ea99935142062f42163b0c0882c24af9 /fs/quota
parentquota: Do not acquire dqio_sem for dquot overwrites in v2 format (diff)
downloadlinux-f0c5bae5cc562307f804335ddec3f793254c3766.tar.xz
linux-f0c5bae5cc562307f804335ddec3f793254c3766.zip
quota: Remove locking for writing to the old quota format
The old quota quota format has fixed offset in quota file based on ID so there's no locking needed against concurrent modifications of the file (locking against concurrent IO on the same dquot is still provided by dq_lock). Reviewed-by: Andreas Dilger <adilger@dilger.ca> Signed-off-by: Jan Kara <jack@suse.cz>
Diffstat (limited to 'fs/quota')
-rw-r--r--fs/quota/quota_v1.c3
1 files changed, 0 insertions, 3 deletions
diff --git a/fs/quota/quota_v1.c b/fs/quota/quota_v1.c
index 94cceb76b9a3..12d69cda57cc 100644
--- a/fs/quota/quota_v1.c
+++ b/fs/quota/quota_v1.c
@@ -83,9 +83,7 @@ static int v1_commit_dqblk(struct dquot *dquot)
short type = dquot->dq_id.type;
ssize_t ret;
struct v1_disk_dqblk dqblk;
- struct quota_info *dqopt = sb_dqopt(dquot->dq_sb);
- down_write(&dqopt->dqio_sem);
v1_mem2disk_dqblk(&dqblk, &dquot->dq_dqb);
if (((type == USRQUOTA) && uid_eq(dquot->dq_id.uid, GLOBAL_ROOT_UID)) ||
((type == GRPQUOTA) && gid_eq(dquot->dq_id.gid, GLOBAL_ROOT_GID))) {
@@ -99,7 +97,6 @@ static int v1_commit_dqblk(struct dquot *dquot)
ret = dquot->dq_sb->s_op->quota_write(dquot->dq_sb, type,
(char *)&dqblk, sizeof(struct v1_disk_dqblk),
v1_dqoff(from_kqid(&init_user_ns, dquot->dq_id)));
- up_write(&dqopt->dqio_sem);
if (ret != sizeof(struct v1_disk_dqblk)) {
quota_error(dquot->dq_sb, "dquota write failed");
if (ret >= 0)