ocfs2: Implement quota syncing thread
PATCH 1/1 ocfs2: Implement quota syncing thread
This patch implements functions and timer setup which handles periodic syncing of locally cached quota information to global quota file.
Signed-off-by Jan Kara <[email protected]>
--- fs/ocfs2/quota.h | 3 ++ fs/ocfs2/quota_global.c | 66 +++++++++++++++++++++++++++++++++++++++++++++++ fs/ocfs2/quota_local.c | 4 +++ 3 files changed, 73 insertions(+), 0 deletions(-)
fs/ocfs2/quota.h +3 -0
@@ -14,6 +14,7 @@#include <linux/quota.h> #include <linux/list.h> #include <linux/dqblk_qtree.h> +#include <linux/timer.h> #include "ocfs2.h"
@@ -67,6 +68,7 @@ struct ocfs2_mem_dqinfo {unsigned int dqi_chunks;/* Number of chunks in local quota file */ unsigned int dqi_blocks;/* Number of blocks allocated for local quota file */ unsigned int dqi_syncms;/* How often should we sync with other nodes */ +unsigned int dqi_syncjiff;/* Precomputed dqi_syncms in jiffies */ struct list_head dqi_chunk;/* List of chunks */ struct inode *dqi_gqinode;/* Global quota file inode */ struct ocfs2_lock_res dqi_gqlock;/* Lock protecting quota information structure */
@@ -74,6 +76,7 @@ struct ocfs2_mem_dqinfo {struct buffer_head *dqi_lqi_bh;/* Buffer head with local quota file inode */ struct buffer_head *dqi_ibh;/* Buffer with information header */ struct qtree_mem_dqinfo dqi_gi;/* Info about global file */ +struct timer_list dqi_sync_timer;/* Timer for syncing dquots */ };static inline struct ocfs2_dquot *OCFS2_DQUOT (struct dquot *dquot)
fs/ocfs2/quota_global.c +66 -0
99 lines not on this page · raw message
fs/ocfs2/quota_local.c +4 -0
@@ -367,6 +367,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 */ +del_timer_sync (&oinfo->dqi_sync_timer);iput (oinfo->dqi_gqinode);ocfs2_simple_drop_lockres (OCFS2_SB (sb), &oinfo->dqi_gqlock);ocfs2_lock_res_free (&oinfo->dqi_gqlock);
Signature · 1 line
1.5.2.4