[Cluster-devel] [fsck.gfs2 v2 PATCH 16/40] fsck: make pass1 call bitmap reconciliation AKA pass5
Bob Peterson
rpeterso at redhat.com
Fri May 6 17:39:09 UTC 2016
This patch makes pass1 call what used to be pass5. That enables
pass1 to pass its private blockmap in as a private variable.
Signed-off-by: Bob Peterson <rpeterso at redhat.com>
---
gfs2/fsck/main.c | 34 ----------------------------------
gfs2/fsck/pass1.c | 5 +++++
gfs2/fsck/util.c | 29 +++++++++++++++++++++++++++++
gfs2/fsck/util.h | 6 ++++++
4 files changed, 40 insertions(+), 34 deletions(-)
diff --git a/gfs2/fsck/main.c b/gfs2/fsck/main.c
index 8f2c733..2cedb30 100644
--- a/gfs2/fsck/main.c
+++ b/gfs2/fsck/main.c
@@ -229,14 +229,8 @@ static int check_statfs(struct gfs2_sbd *sdp)
return 0;
}
-struct fsck_pass {
- const char *name;
- int (*f)(struct gfs2_sbd *sdp);
-};
-
static const struct fsck_pass passes[] = {
{ .name = "pass1", .f = pass1 },
- { .name = "reconcile_bitmaps", .f = pass5 },
{ .name = "pass1b", .f = pass1b },
{ .name = "pass2", .f = pass2 },
{ .name = "pass3", .f = pass3 },
@@ -245,34 +239,6 @@ static const struct fsck_pass passes[] = {
{ .name = NULL, }
};
-static void print_pass_duration(const char *name, struct timeval *start)
-{
- char duration[17] = ""; /* strlen("XXdXXhXXmXX.XXXs") + 1 */
- struct timeval end, diff;
- unsigned d, h, m, s;
- char *p = duration;
-
- gettimeofday(&end, NULL);
- timersub(&end, start, &diff);
-
- s = diff.tv_sec % 60;
- diff.tv_sec /= 60;
- m = diff.tv_sec % 60;
- diff.tv_sec /= 60;
- h = diff.tv_sec % 24;
- d = diff.tv_sec / 24;
-
- if (d)
- p += snprintf(p, 4, "%ud", d > 99 ? 99U : d);
- if (h)
- p += snprintf(p, 4, "%uh", h);
- if (m)
- p += snprintf(p, 4, "%um", m);
-
- snprintf(p, 8, "%u.%03lus", s, diff.tv_usec / 1000);
- log_notice(_("%s completed in %s\n"), name, duration);
-}
-
static int fsck_pass(const struct fsck_pass *p, struct gfs2_sbd *sdp)
{
int ret;
diff --git a/gfs2/fsck/pass1.c b/gfs2/fsck/pass1.c
index ca6f25f..876e565 100644
--- a/gfs2/fsck/pass1.c
+++ b/gfs2/fsck/pass1.c
@@ -1991,6 +1991,7 @@ int pass1(struct gfs2_sbd *sdp)
uint64_t i;
uint64_t rg_count = 0;
int ret;
+ struct timeval timer;
osi_list_init(&gfs1_rindex_blks.list);
@@ -2040,6 +2041,10 @@ int pass1(struct gfs2_sbd *sdp)
return ret;
}
+ log_notice(_("Reconciling bitmaps.\n"));
+ gettimeofday(&timer, NULL);
+ pass5(sdp);
+ print_pass_duration("reconcile_bitmaps", &timer);
gfs2_special_free(&gfs1_rindex_blks);
return FSCK_OK;
}
diff --git a/gfs2/fsck/util.c b/gfs2/fsck/util.c
index 7ca7b91..d6d664a 100644
--- a/gfs2/fsck/util.c
+++ b/gfs2/fsck/util.c
@@ -707,3 +707,32 @@ void delete_all_dups(struct gfs2_inode *ip)
}
}
}
+
+void print_pass_duration(const char *name, struct timeval *start)
+{
+ char duration[17] = ""; /* strlen("XXdXXhXXmXX.XXXs") + 1 */
+ struct timeval end, diff;
+ unsigned d, h, m, s;
+ char *p = duration;
+
+ gettimeofday(&end, NULL);
+ timersub(&end, start, &diff);
+
+ s = diff.tv_sec % 60;
+ diff.tv_sec /= 60;
+ m = diff.tv_sec % 60;
+ diff.tv_sec /= 60;
+ h = diff.tv_sec % 24;
+ d = diff.tv_sec / 24;
+
+ if (d)
+ p += snprintf(p, 4, "%ud", d > 99 ? 99U : d);
+ if (h)
+ p += snprintf(p, 4, "%uh", h);
+ if (m)
+ p += snprintf(p, 4, "%um", m);
+
+ snprintf(p, 8, "%u.%03lus", s, diff.tv_usec / 1000);
+ log_notice(_("%s completed in %s\n"), name, duration);
+}
+
diff --git a/gfs2/fsck/util.h b/gfs2/fsck/util.h
index 7753daf..50a3c8d 100644
--- a/gfs2/fsck/util.h
+++ b/gfs2/fsck/util.h
@@ -27,6 +27,11 @@ extern const char *reftypes[ref_types + 1];
#define BLOCKMAP_BYTE_OFFSET2(x) ((x & 0x0000000000000003) << 1)
#define BLOCKMAP_MASK2 (0x3)
+struct fsck_pass {
+ const char *name;
+ int (*f)(struct gfs2_sbd *sdp);
+};
+
static inline int block_type(uint64_t bblock)
{
static unsigned char *byte;
@@ -106,6 +111,7 @@ extern char gfs2_getch(void);
extern uint64_t find_free_blk(struct gfs2_sbd *sdp);
extern uint64_t *get_dir_hash(struct gfs2_inode *ip);
extern void delete_all_dups(struct gfs2_inode *ip);
+extern void print_pass_duration(const char *name, struct timeval *start);
#define stack log_debug("<backtrace> - %s()\n", __func__)
--
2.5.5
More information about the Cluster-devel
mailing list