Commit c3f8a40c authored by Jan Kara's avatar Jan Kara Committed by Al Viro

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: default avatarJan Kara <jack@suse.cz>
Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent 850b201b
...@@ -27,7 +27,11 @@ ...@@ -27,7 +27,11 @@
*/ */
static int __sync_filesystem(struct super_block *sb, int wait) 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); sync_inodes_sb(sb, wait);
lock_super(sb); lock_super(sb);
if (sb->s_dirt && sb->s_op->write_super) if (sb->s_dirt && sb->s_op->write_super)
......
...@@ -21,6 +21,11 @@ static inline struct quota_info *sb_dqopt(struct super_block *sb) ...@@ -21,6 +21,11 @@ static inline struct quota_info *sb_dqopt(struct super_block *sb)
* declaration of quota_function calls in kernel. * declaration of quota_function calls in kernel.
*/ */
void sync_quota_sb(struct super_block *sb, int type); 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_initialize(struct inode *inode, int type);
int dquot_drop(struct inode *inode); int dquot_drop(struct inode *inode);
...@@ -333,6 +338,10 @@ static inline void sync_quota_sb(struct super_block *sb, int type) ...@@ -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) static inline int vfs_dq_off(struct super_block *sb, int remount)
{ {
return 0; return 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment