[Ocfs2-tools-devel] [PATCH 04/18] tunefs.ocfs2: Display progress while locking down the filesystem

Joel Becker joel.becker at oracle.com
Mon Jan 5 18:33:40 PST 2009


Locking and unlocking the filesystem takes time with o2cb.  Add progress
display for it.

Signed-off-by: Joel Becker <joel.becker at oracle.com>
---
 tunefs.ocfs2/libocfs2ne.c |   29 +++++++++++++++++++++++++++++
 1 files changed, 29 insertions(+), 0 deletions(-)

diff --git a/tunefs.ocfs2/libocfs2ne.c b/tunefs.ocfs2/libocfs2ne.c
index 2c036ea..0403a55 100644
--- a/tunefs.ocfs2/libocfs2ne.c
+++ b/tunefs.ocfs2/libocfs2ne.c
@@ -707,6 +707,15 @@ static errcode_t tunefs_unlock_cluster(ocfs2_filesys *fs)
 {
 	errcode_t tmp, err = 0;
 	struct tunefs_filesystem_state *state = tunefs_get_state(fs);
+	struct tools_progress *prog = NULL;
+
+	if (fs->fs_dlm_ctxt)
+		prog = tools_progress_start("Unlocking filesystem",
+					    "unlocking", 2);
+	/*
+	 * We continue even with no progress, because we're unlocking
+	 * and probably exiting.
+	 */
 
 	assert(state->ts_master == fs);
 	if (state->ts_cluster_locked) {
@@ -717,6 +726,8 @@ static errcode_t tunefs_unlock_cluster(ocfs2_filesys *fs)
 		tunefs_unblock_signals();
 		state->ts_cluster_locked = 0;
 	}
+	if (prog)
+		tools_progress_step(prog, 1);
 
 	/* We shut down the dlm regardless of err */
 	if (fs->fs_dlm_ctxt) {
@@ -724,6 +735,10 @@ static errcode_t tunefs_unlock_cluster(ocfs2_filesys *fs)
 		if (!err)
 			err = tmp;
 	}
+	if (prog) {
+		tools_progress_step(prog, 1);
+		tools_progress_stop(prog);
+	}
 
 	return err;
 }
@@ -751,6 +766,7 @@ static errcode_t tunefs_lock_cluster(ocfs2_filesys *fs, int flags)
 	errcode_t err = 0;
 	struct tunefs_filesystem_state *state = tunefs_get_state(fs);
 	ocfs2_filesys *master_fs = state->ts_master;
+	struct tools_progress *prog = NULL;
 
 	if (state->ts_cluster_locked)
 		goto out;
@@ -760,6 +776,12 @@ static errcode_t tunefs_lock_cluster(ocfs2_filesys *fs, int flags)
 		goto out;
 	}
 
+	prog = tools_progress_start("Locking filesystem", "locking", 2);
+	if (!prog) {
+		err = TUNEFS_ET_NO_MEMORY;
+		goto out;
+	}
+
 	if (!master_fs->fs_dlm_ctxt) {
 		err = o2cb_init();
 		if (err)
@@ -787,6 +809,8 @@ static errcode_t tunefs_lock_cluster(ocfs2_filesys *fs, int flags)
 			goto out;
 	}
 
+	tools_progress_step(prog, 1);
+
 	tunefs_block_signals();
 	err = ocfs2_lock_down_cluster(master_fs);
 	tunefs_unblock_signals();
@@ -798,7 +822,12 @@ static errcode_t tunefs_lock_cluster(ocfs2_filesys *fs, int flags)
 	else
 		ocfs2_shutdown_dlm(fs, WHOAMI);
 
+	tools_progress_step(prog, 1);
+
 out:
+	if (prog)
+		tools_progress_stop(prog);
+
 	return err;
 }
 
-- 
1.5.6.5




More information about the Ocfs2-tools-devel mailing list