From 2fedb9b26bc37c4bd430aa6b66cddf84b021c3d5 Mon Sep 17 00:00:00 2001 From: Jan Kara Date: Mon, 27 Apr 2009 16:43:55 +0200 Subject: [PATCH] --- yaml --- r: 147835 b: refs/heads/master c: c3f8a40c1cd5591b882497d1d00d43d0e5bb4698 h: refs/heads/master i: 147833: 6a881d8ea304c52170ba1fc7af0125541cc73046 147831: 90e79c053dac442277183790bba76433a4e7f866 v: v3 --- [refs] | 2 +- trunk/fs/sync.c | 6 +++++- trunk/include/linux/quotaops.h | 9 +++++++++ 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 75bc7b4e7040..58b4d5b9faf4 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 850b201b087f5525a0a7278551c2bcd0423c3b26 +refs/heads/master: c3f8a40c1cd5591b882497d1d00d43d0e5bb4698 diff --git a/trunk/fs/sync.c b/trunk/fs/sync.c index d90ab7764555..4487b5560dc8 100644 --- a/trunk/fs/sync.c +++ b/trunk/fs/sync.c @@ -27,7 +27,11 @@ */ static int __sync_filesystem(struct super_block *sb, int wait) { - sync_quota_sb(sb, -1); + /* Avoid doing twice syncing and cache pruning for quota sync */ + if (!wait) + writeout_quota_sb(sb, -1); + else + sync_quota_sb(sb, -1); sync_inodes_sb(sb, wait); lock_super(sb); if (sb->s_dirt && sb->s_op->write_super) diff --git a/trunk/include/linux/quotaops.h b/trunk/include/linux/quotaops.h index 047310fa22fb..7bc457593684 100644 --- a/trunk/include/linux/quotaops.h +++ b/trunk/include/linux/quotaops.h @@ -21,6 +21,11 @@ static inline struct quota_info *sb_dqopt(struct super_block *sb) * declaration of quota_function calls in kernel. */ void sync_quota_sb(struct super_block *sb, int type); +static inline void writeout_quota_sb(struct super_block *sb, int type) +{ + if (sb->s_qcop->quota_sync) + sb->s_qcop->quota_sync(sb, type); +} int dquot_initialize(struct inode *inode, int type); int dquot_drop(struct inode *inode); @@ -333,6 +338,10 @@ static inline void sync_quota_sb(struct super_block *sb, int type) { } +static inline void writeout_quota_sb(struct super_block *sb, int type) +{ +} + static inline int vfs_dq_off(struct super_block *sb, int remount) { return 0;