Loading fs/gfs2/daemon.c +0 −50 Original line number Diff line number Diff line Loading @@ -82,56 +82,6 @@ int gfs2_recoverd(void *data) return 0; } /** * gfs2_logd - Update log tail as Active Items get flushed to in-place blocks * @sdp: Pointer to GFS2 superblock * * Also, periodically check to make sure that we're using the most recent * journal index. */ int gfs2_logd(void *data) { struct gfs2_sbd *sdp = data; struct gfs2_holder ji_gh; unsigned long t; int need_flush; while (!kthread_should_stop()) { /* Advance the log tail */ t = sdp->sd_log_flush_time + gfs2_tune_get(sdp, gt_log_flush_secs) * HZ; gfs2_ail1_empty(sdp, DIO_ALL); gfs2_log_lock(sdp); need_flush = sdp->sd_log_num_buf > gfs2_tune_get(sdp, gt_incore_log_blocks); gfs2_log_unlock(sdp); if (need_flush || time_after_eq(jiffies, t)) { gfs2_log_flush(sdp, NULL); sdp->sd_log_flush_time = jiffies; } /* Check for latest journal index */ t = sdp->sd_jindex_refresh_time + gfs2_tune_get(sdp, gt_jindex_refresh_secs) * HZ; if (time_after_eq(jiffies, t)) { if (!gfs2_jindex_hold(sdp, &ji_gh)) gfs2_glock_dq_uninit(&ji_gh); sdp->sd_jindex_refresh_time = jiffies; } t = gfs2_tune_get(sdp, gt_logd_secs) * HZ; if (freezing(current)) refrigerator(); schedule_timeout_interruptible(t); } return 0; } /** * gfs2_quotad - Write cached quota changes into the quota file * @sdp: Pointer to GFS2 superblock Loading fs/gfs2/daemon.h +0 −1 Original line number Diff line number Diff line Loading @@ -12,7 +12,6 @@ int gfs2_glockd(void *data); int gfs2_recoverd(void *data); int gfs2_logd(void *data); int gfs2_quotad(void *data); #endif /* __DAEMON_DOT_H__ */ fs/gfs2/log.c +55 −1 Original line number Diff line number Diff line Loading @@ -16,6 +16,8 @@ #include <linux/crc32.h> #include <linux/lm_interface.h> #include <linux/delay.h> #include <linux/kthread.h> #include <linux/freezer.h> #include "gfs2.h" #include "incore.h" Loading @@ -26,6 +28,7 @@ #include "meta_io.h" #include "util.h" #include "dir.h" #include "super.h" #define PULL 1 Loading Loading @@ -208,7 +211,7 @@ static void gfs2_ail1_start(struct gfs2_sbd *sdp, int flags) gfs2_log_unlock(sdp); } int gfs2_ail1_empty(struct gfs2_sbd *sdp, int flags) static int gfs2_ail1_empty(struct gfs2_sbd *sdp, int flags) { struct gfs2_ail *ai, *s; int ret; Loading Loading @@ -859,3 +862,54 @@ void gfs2_meta_syncfs(struct gfs2_sbd *sdp) } } /** * gfs2_logd - Update log tail as Active Items get flushed to in-place blocks * @sdp: Pointer to GFS2 superblock * * Also, periodically check to make sure that we're using the most recent * journal index. */ int gfs2_logd(void *data) { struct gfs2_sbd *sdp = data; struct gfs2_holder ji_gh; unsigned long t; int need_flush; while (!kthread_should_stop()) { /* Advance the log tail */ t = sdp->sd_log_flush_time + gfs2_tune_get(sdp, gt_log_flush_secs) * HZ; gfs2_ail1_empty(sdp, DIO_ALL); gfs2_log_lock(sdp); need_flush = sdp->sd_log_num_buf > gfs2_tune_get(sdp, gt_incore_log_blocks); gfs2_log_unlock(sdp); if (need_flush || time_after_eq(jiffies, t)) { gfs2_log_flush(sdp, NULL); sdp->sd_log_flush_time = jiffies; } /* Check for latest journal index */ t = sdp->sd_jindex_refresh_time + gfs2_tune_get(sdp, gt_jindex_refresh_secs) * HZ; if (time_after_eq(jiffies, t)) { if (!gfs2_jindex_hold(sdp, &ji_gh)) gfs2_glock_dq_uninit(&ji_gh); sdp->sd_jindex_refresh_time = jiffies; } t = gfs2_tune_get(sdp, gt_logd_secs) * HZ; if (freezing(current)) refrigerator(); schedule_timeout_interruptible(t); } return 0; } fs/gfs2/log.h +1 −2 Original line number Diff line number Diff line Loading @@ -48,8 +48,6 @@ static inline void gfs2_log_pointers_init(struct gfs2_sbd *sdp, unsigned int gfs2_struct2blk(struct gfs2_sbd *sdp, unsigned int nstruct, unsigned int ssize); int gfs2_ail1_empty(struct gfs2_sbd *sdp, int flags); int gfs2_log_reserve(struct gfs2_sbd *sdp, unsigned int blks); void gfs2_log_release(struct gfs2_sbd *sdp, unsigned int blks); void gfs2_log_incr_head(struct gfs2_sbd *sdp); Loading @@ -70,5 +68,6 @@ void gfs2_remove_from_ail(struct gfs2_bufdata *bd); void gfs2_log_shutdown(struct gfs2_sbd *sdp); void gfs2_meta_syncfs(struct gfs2_sbd *sdp); int gfs2_logd(void *data); #endif /* __LOG_DOT_H__ */ Loading
fs/gfs2/daemon.c +0 −50 Original line number Diff line number Diff line Loading @@ -82,56 +82,6 @@ int gfs2_recoverd(void *data) return 0; } /** * gfs2_logd - Update log tail as Active Items get flushed to in-place blocks * @sdp: Pointer to GFS2 superblock * * Also, periodically check to make sure that we're using the most recent * journal index. */ int gfs2_logd(void *data) { struct gfs2_sbd *sdp = data; struct gfs2_holder ji_gh; unsigned long t; int need_flush; while (!kthread_should_stop()) { /* Advance the log tail */ t = sdp->sd_log_flush_time + gfs2_tune_get(sdp, gt_log_flush_secs) * HZ; gfs2_ail1_empty(sdp, DIO_ALL); gfs2_log_lock(sdp); need_flush = sdp->sd_log_num_buf > gfs2_tune_get(sdp, gt_incore_log_blocks); gfs2_log_unlock(sdp); if (need_flush || time_after_eq(jiffies, t)) { gfs2_log_flush(sdp, NULL); sdp->sd_log_flush_time = jiffies; } /* Check for latest journal index */ t = sdp->sd_jindex_refresh_time + gfs2_tune_get(sdp, gt_jindex_refresh_secs) * HZ; if (time_after_eq(jiffies, t)) { if (!gfs2_jindex_hold(sdp, &ji_gh)) gfs2_glock_dq_uninit(&ji_gh); sdp->sd_jindex_refresh_time = jiffies; } t = gfs2_tune_get(sdp, gt_logd_secs) * HZ; if (freezing(current)) refrigerator(); schedule_timeout_interruptible(t); } return 0; } /** * gfs2_quotad - Write cached quota changes into the quota file * @sdp: Pointer to GFS2 superblock Loading
fs/gfs2/daemon.h +0 −1 Original line number Diff line number Diff line Loading @@ -12,7 +12,6 @@ int gfs2_glockd(void *data); int gfs2_recoverd(void *data); int gfs2_logd(void *data); int gfs2_quotad(void *data); #endif /* __DAEMON_DOT_H__ */
fs/gfs2/log.c +55 −1 Original line number Diff line number Diff line Loading @@ -16,6 +16,8 @@ #include <linux/crc32.h> #include <linux/lm_interface.h> #include <linux/delay.h> #include <linux/kthread.h> #include <linux/freezer.h> #include "gfs2.h" #include "incore.h" Loading @@ -26,6 +28,7 @@ #include "meta_io.h" #include "util.h" #include "dir.h" #include "super.h" #define PULL 1 Loading Loading @@ -208,7 +211,7 @@ static void gfs2_ail1_start(struct gfs2_sbd *sdp, int flags) gfs2_log_unlock(sdp); } int gfs2_ail1_empty(struct gfs2_sbd *sdp, int flags) static int gfs2_ail1_empty(struct gfs2_sbd *sdp, int flags) { struct gfs2_ail *ai, *s; int ret; Loading Loading @@ -859,3 +862,54 @@ void gfs2_meta_syncfs(struct gfs2_sbd *sdp) } } /** * gfs2_logd - Update log tail as Active Items get flushed to in-place blocks * @sdp: Pointer to GFS2 superblock * * Also, periodically check to make sure that we're using the most recent * journal index. */ int gfs2_logd(void *data) { struct gfs2_sbd *sdp = data; struct gfs2_holder ji_gh; unsigned long t; int need_flush; while (!kthread_should_stop()) { /* Advance the log tail */ t = sdp->sd_log_flush_time + gfs2_tune_get(sdp, gt_log_flush_secs) * HZ; gfs2_ail1_empty(sdp, DIO_ALL); gfs2_log_lock(sdp); need_flush = sdp->sd_log_num_buf > gfs2_tune_get(sdp, gt_incore_log_blocks); gfs2_log_unlock(sdp); if (need_flush || time_after_eq(jiffies, t)) { gfs2_log_flush(sdp, NULL); sdp->sd_log_flush_time = jiffies; } /* Check for latest journal index */ t = sdp->sd_jindex_refresh_time + gfs2_tune_get(sdp, gt_jindex_refresh_secs) * HZ; if (time_after_eq(jiffies, t)) { if (!gfs2_jindex_hold(sdp, &ji_gh)) gfs2_glock_dq_uninit(&ji_gh); sdp->sd_jindex_refresh_time = jiffies; } t = gfs2_tune_get(sdp, gt_logd_secs) * HZ; if (freezing(current)) refrigerator(); schedule_timeout_interruptible(t); } return 0; }
fs/gfs2/log.h +1 −2 Original line number Diff line number Diff line Loading @@ -48,8 +48,6 @@ static inline void gfs2_log_pointers_init(struct gfs2_sbd *sdp, unsigned int gfs2_struct2blk(struct gfs2_sbd *sdp, unsigned int nstruct, unsigned int ssize); int gfs2_ail1_empty(struct gfs2_sbd *sdp, int flags); int gfs2_log_reserve(struct gfs2_sbd *sdp, unsigned int blks); void gfs2_log_release(struct gfs2_sbd *sdp, unsigned int blks); void gfs2_log_incr_head(struct gfs2_sbd *sdp); Loading @@ -70,5 +68,6 @@ void gfs2_remove_from_ail(struct gfs2_bufdata *bd); void gfs2_log_shutdown(struct gfs2_sbd *sdp); void gfs2_meta_syncfs(struct gfs2_sbd *sdp); int gfs2_logd(void *data); #endif /* __LOG_DOT_H__ */