X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=fs%2Fquota.c;h=d6a2be826e29880abd0f6873caa2344f88f2c5f8;hb=cf66c897d7fa07f57452b1a369aec37d97b11e31;hp=1df7832b4e087460876251bf7b70d79566264f1a;hpb=de69e5f44ecbf1d9faca4f473f4210473d26cd41;p=powerpc.git diff --git a/fs/quota.c b/fs/quota.c index 1df7832b4e..d6a2be826e 100644 --- a/fs/quota.c +++ b/fs/quota.c @@ -15,6 +15,8 @@ #include #include #include +#include +#include /* Check validity of generic quotactl commands */ static int generic_quotactl_valid(struct super_block *sb, int type, int cmd, qid_t id) @@ -167,11 +169,11 @@ static void quota_sync_sb(struct super_block *sb, int type) sync_blockdev(sb->s_bdev); /* Now when everything is written we can discard the pagecache so - * that userspace sees the changes. We need i_sem and so we could - * not do it inside dqonoff_sem. Moreover we need to be carefull + * that userspace sees the changes. We need i_mutex and so we could + * not do it inside dqonoff_mutex. Moreover we need to be carefull * about races with quotaoff() (that is the reason why we have own * reference to inode). */ - down(&sb_dqopt(sb)->dqonoff_sem); + mutex_lock(&sb_dqopt(sb)->dqonoff_mutex); for (cnt = 0; cnt < MAXQUOTAS; cnt++) { discard[cnt] = NULL; if (type != -1 && cnt != type) @@ -180,12 +182,12 @@ static void quota_sync_sb(struct super_block *sb, int type) continue; discard[cnt] = igrab(sb_dqopt(sb)->files[cnt]); } - up(&sb_dqopt(sb)->dqonoff_sem); + mutex_unlock(&sb_dqopt(sb)->dqonoff_mutex); for (cnt = 0; cnt < MAXQUOTAS; cnt++) { if (discard[cnt]) { - down(&discard[cnt]->i_sem); + mutex_lock(&discard[cnt]->i_mutex); truncate_inode_pages(&discard[cnt]->i_data, 0); - up(&discard[cnt]->i_sem); + mutex_unlock(&discard[cnt]->i_mutex); iput(discard[cnt]); } }