aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJan Kara <jack@suse.cz>2009-04-27 10:43:55 -0400
committerAl Viro <viro@zeniv.linux.org.uk>2009-06-11 21:36:04 -0400
commitc3f8a40c1cd5591b882497d1d00d43d0e5bb4698 (patch)
tree8280d4c7748be5d3b2b96c6bd11a643280d0b232
parent850b201b087f5525a0a7278551c2bcd0423c3b26 (diff)
quota: Introduce writeout_quota_sb() (version 4)
Introduce this function which just writes all the quota structures but avoids all the syncing and cache pruning work to expose quota structures to userspace. Use this function from __sync_filesystem when wait == 0. Signed-off-by: Jan Kara <jack@suse.cz> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
-rw-r--r--fs/sync.c6
-rw-r--r--include/linux/quotaops.h9
2 files changed, 14 insertions, 1 deletions
diff --git a/fs/sync.c b/fs/sync.c
index d90ab7764555..4487b5560dc8 100644
--- a/fs/sync.c
+++ b/fs/sync.c
@@ -27,7 +27,11 @@
27 */ 27 */
28static int __sync_filesystem(struct super_block *sb, int wait) 28static 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 */
23void sync_quota_sb(struct super_block *sb, int type); 23void sync_quota_sb(struct super_block *sb, int type);
24static 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
25int dquot_initialize(struct inode *inode, int type); 30int dquot_initialize(struct inode *inode, int type);
26int dquot_drop(struct inode *inode); 31int 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
341static inline void writeout_quota_sb(struct super_block *sb, int type)
342{
343}
344
336static inline int vfs_dq_off(struct super_block *sb, int remount) 345static inline int vfs_dq_off(struct super_block *sb, int remount)
337{ 346{
338 return 0; 347 return 0;