aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/fs/ocfs2/quota_local.c
diff options
context:
space:
mode:
authorMark Fasheh <mfasheh@suse.com>2008-10-20 15:36:47 +0200
committerMark Fasheh <mfasheh@suse.com>2009-01-05 08:40:24 -0800
commit171bf93ce11f4c9929fdce6ce63df8da2f3c4475 (patch)
treea6f29032a86bcc2b0e9971c85ec8fab22b3300ef /fs/ocfs2/quota_local.c
parentocfs2: Add quota calls for allocation and freeing of inodes and space (diff)
downloadwireguard-linux-171bf93ce11f4c9929fdce6ce63df8da2f3c4475.tar.xz
wireguard-linux-171bf93ce11f4c9929fdce6ce63df8da2f3c4475.zip
ocfs2: Periodic quota syncing
This patch creates a work queue for periodic syncing of locally cached quota information to the global quota files. We constantly queue a delayed work item, to get the periodic behavior. Signed-off-by: Mark Fasheh <mfasheh@suse.com> Acked-by: Jan Kara <jack@suse.cz>
Diffstat (limited to 'fs/ocfs2/quota_local.c')
-rw-r--r--fs/ocfs2/quota_local.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/fs/ocfs2/quota_local.c b/fs/ocfs2/quota_local.c
index 55c3f2f98dcd..40e82b483136 100644
--- a/fs/ocfs2/quota_local.c
+++ b/fs/ocfs2/quota_local.c
@@ -368,6 +368,10 @@ static int ocfs2_local_free_info(struct super_block *sb, int type)
int mark_clean = 1, len;
int status;
+ /* At this point we know there are no more dquots and thus
+ * even if there's some sync in the pdflush queue, it won't
+ * find any dquots and return without doing anything */
+ cancel_delayed_work_sync(&oinfo->dqi_sync_work);
iput(oinfo->dqi_gqinode);
ocfs2_simple_drop_lockres(OCFS2_SB(sb), &oinfo->dqi_gqlock);
ocfs2_lock_res_free(&oinfo->dqi_gqlock);