diff options
Diffstat (limited to 'fs')
-rw-r--r-- | fs/gfs2/log.c | 21 | ||||
-rw-r--r-- | fs/gfs2/log.h | 2 | ||||
-rw-r--r-- | fs/gfs2/meta_io.c | 17 | ||||
-rw-r--r-- | fs/gfs2/meta_io.h | 1 |
4 files changed, 21 insertions, 20 deletions
diff --git a/fs/gfs2/log.c b/fs/gfs2/log.c index 6456fc39aace..7713d5918672 100644 --- a/fs/gfs2/log.c +++ b/fs/gfs2/log.c | |||
@@ -15,6 +15,7 @@ | |||
15 | #include <linux/gfs2_ondisk.h> | 15 | #include <linux/gfs2_ondisk.h> |
16 | #include <linux/crc32.h> | 16 | #include <linux/crc32.h> |
17 | #include <linux/lm_interface.h> | 17 | #include <linux/lm_interface.h> |
18 | #include <linux/delay.h> | ||
18 | 19 | ||
19 | #include "gfs2.h" | 20 | #include "gfs2.h" |
20 | #include "incore.h" | 21 | #include "incore.h" |
@@ -142,7 +143,7 @@ static int gfs2_ail1_empty_one(struct gfs2_sbd *sdp, struct gfs2_ail *ai, int fl | |||
142 | return list_empty(&ai->ai_ail1_list); | 143 | return list_empty(&ai->ai_ail1_list); |
143 | } | 144 | } |
144 | 145 | ||
145 | void gfs2_ail1_start(struct gfs2_sbd *sdp, int flags) | 146 | static void gfs2_ail1_start(struct gfs2_sbd *sdp, int flags) |
146 | { | 147 | { |
147 | struct list_head *head = &sdp->sd_ail1_list; | 148 | struct list_head *head = &sdp->sd_ail1_list; |
148 | u64 sync_gen; | 149 | u64 sync_gen; |
@@ -689,3 +690,21 @@ void gfs2_log_shutdown(struct gfs2_sbd *sdp) | |||
689 | up_write(&sdp->sd_log_flush_lock); | 690 | up_write(&sdp->sd_log_flush_lock); |
690 | } | 691 | } |
691 | 692 | ||
693 | |||
694 | /** | ||
695 | * gfs2_meta_syncfs - sync all the buffers in a filesystem | ||
696 | * @sdp: the filesystem | ||
697 | * | ||
698 | */ | ||
699 | |||
700 | void gfs2_meta_syncfs(struct gfs2_sbd *sdp) | ||
701 | { | ||
702 | gfs2_log_flush(sdp, NULL); | ||
703 | for (;;) { | ||
704 | gfs2_ail1_start(sdp, DIO_ALL); | ||
705 | if (gfs2_ail1_empty(sdp, DIO_ALL)) | ||
706 | break; | ||
707 | msleep(10); | ||
708 | } | ||
709 | } | ||
710 | |||
diff --git a/fs/gfs2/log.h b/fs/gfs2/log.h index 7f5737d55612..8e7aa0f29109 100644 --- a/fs/gfs2/log.h +++ b/fs/gfs2/log.h | |||
@@ -48,7 +48,6 @@ static inline void gfs2_log_pointers_init(struct gfs2_sbd *sdp, | |||
48 | unsigned int gfs2_struct2blk(struct gfs2_sbd *sdp, unsigned int nstruct, | 48 | unsigned int gfs2_struct2blk(struct gfs2_sbd *sdp, unsigned int nstruct, |
49 | unsigned int ssize); | 49 | unsigned int ssize); |
50 | 50 | ||
51 | void gfs2_ail1_start(struct gfs2_sbd *sdp, int flags); | ||
52 | int gfs2_ail1_empty(struct gfs2_sbd *sdp, int flags); | 51 | int gfs2_ail1_empty(struct gfs2_sbd *sdp, int flags); |
53 | 52 | ||
54 | int gfs2_log_reserve(struct gfs2_sbd *sdp, unsigned int blks); | 53 | int gfs2_log_reserve(struct gfs2_sbd *sdp, unsigned int blks); |
@@ -61,5 +60,6 @@ void gfs2_log_flush(struct gfs2_sbd *sdp, struct gfs2_glock *gl); | |||
61 | void gfs2_log_commit(struct gfs2_sbd *sdp, struct gfs2_trans *trans); | 60 | void gfs2_log_commit(struct gfs2_sbd *sdp, struct gfs2_trans *trans); |
62 | 61 | ||
63 | void gfs2_log_shutdown(struct gfs2_sbd *sdp); | 62 | void gfs2_log_shutdown(struct gfs2_sbd *sdp); |
63 | void gfs2_meta_syncfs(struct gfs2_sbd *sdp); | ||
64 | 64 | ||
65 | #endif /* __LOG_DOT_H__ */ | 65 | #endif /* __LOG_DOT_H__ */ |
diff --git a/fs/gfs2/meta_io.c b/fs/gfs2/meta_io.c index 939a09f6e885..fbeba813c973 100644 --- a/fs/gfs2/meta_io.c +++ b/fs/gfs2/meta_io.c | |||
@@ -574,20 +574,3 @@ out: | |||
574 | return first_bh; | 574 | return first_bh; |
575 | } | 575 | } |
576 | 576 | ||
577 | /** | ||
578 | * gfs2_meta_syncfs - sync all the buffers in a filesystem | ||
579 | * @sdp: the filesystem | ||
580 | * | ||
581 | */ | ||
582 | |||
583 | void gfs2_meta_syncfs(struct gfs2_sbd *sdp) | ||
584 | { | ||
585 | gfs2_log_flush(sdp, NULL); | ||
586 | for (;;) { | ||
587 | gfs2_ail1_start(sdp, DIO_ALL); | ||
588 | if (gfs2_ail1_empty(sdp, DIO_ALL)) | ||
589 | break; | ||
590 | msleep(10); | ||
591 | } | ||
592 | } | ||
593 | |||
diff --git a/fs/gfs2/meta_io.h b/fs/gfs2/meta_io.h index 3ec939e20dff..e037425bc042 100644 --- a/fs/gfs2/meta_io.h +++ b/fs/gfs2/meta_io.h | |||
@@ -67,7 +67,6 @@ static inline int gfs2_meta_inode_buffer(struct gfs2_inode *ip, | |||
67 | } | 67 | } |
68 | 68 | ||
69 | struct buffer_head *gfs2_meta_ra(struct gfs2_glock *gl, u64 dblock, u32 extlen); | 69 | struct buffer_head *gfs2_meta_ra(struct gfs2_glock *gl, u64 dblock, u32 extlen); |
70 | void gfs2_meta_syncfs(struct gfs2_sbd *sdp); | ||
71 | 70 | ||
72 | #define buffer_busy(bh) \ | 71 | #define buffer_busy(bh) \ |
73 | ((bh)->b_state & ((1ul << BH_Dirty) | (1ul << BH_Lock) | (1ul << BH_Pinned))) | 72 | ((bh)->b_state & ((1ul << BH_Dirty) | (1ul << BH_Lock) | (1ul << BH_Pinned))) |