diff options
-rw-r--r-- | fs/sync.c | 6 | ||||
-rw-r--r-- | include/linux/quotaops.h | 9 |
2 files changed, 14 insertions, 1 deletions
@@ -27,7 +27,11 @@ | |||
27 | */ | 27 | */ |
28 | static int __sync_filesystem(struct super_block *sb, int wait) | 28 | static int __sync_filesystem(struct super_block *sb, int wait) |
29 | { | 29 | { |
30 | sync_quota_sb(sb, -1); | 30 | /* Avoid doing twice syncing and cache pruning for quota sync */ |
31 | if (!wait) | ||
32 | writeout_quota_sb(sb, -1); | ||
33 | else | ||
34 | sync_quota_sb(sb, -1); | ||
31 | sync_inodes_sb(sb, wait); | 35 | sync_inodes_sb(sb, wait); |
32 | lock_super(sb); | 36 | lock_super(sb); |
33 | if (sb->s_dirt && sb->s_op->write_super) | 37 | if (sb->s_dirt && sb->s_op->write_super) |
diff --git a/include/linux/quotaops.h b/include/linux/quotaops.h index 047310fa22fb..7bc457593684 100644 --- a/include/linux/quotaops.h +++ b/include/linux/quotaops.h | |||
@@ -21,6 +21,11 @@ static inline struct quota_info *sb_dqopt(struct super_block *sb) | |||
21 | * declaration of quota_function calls in kernel. | 21 | * declaration of quota_function calls in kernel. |
22 | */ | 22 | */ |
23 | void sync_quota_sb(struct super_block *sb, int type); | 23 | void sync_quota_sb(struct super_block *sb, int type); |
24 | static inline void writeout_quota_sb(struct super_block *sb, int type) | ||
25 | { | ||
26 | if (sb->s_qcop->quota_sync) | ||
27 | sb->s_qcop->quota_sync(sb, type); | ||
28 | } | ||
24 | 29 | ||
25 | int dquot_initialize(struct inode *inode, int type); | 30 | int dquot_initialize(struct inode *inode, int type); |
26 | int dquot_drop(struct inode *inode); | 31 | int dquot_drop(struct inode *inode); |
@@ -333,6 +338,10 @@ static inline void sync_quota_sb(struct super_block *sb, int type) | |||
333 | { | 338 | { |
334 | } | 339 | } |
335 | 340 | ||
341 | static inline void writeout_quota_sb(struct super_block *sb, int type) | ||
342 | { | ||
343 | } | ||
344 | |||
336 | static inline int vfs_dq_off(struct super_block *sb, int remount) | 345 | static inline int vfs_dq_off(struct super_block *sb, int remount) |
337 | { | 346 | { |
338 | return 0; | 347 | return 0; |