[Ocfs2-tools-devel] [PATCH] fsck.ocfs2: close ost_fs in case of check superblock fails

Joseph Qi joseph.qi at huawei.com
Fri Sep 23 20:55:44 PDT 2016


open_and_check may happen that check_superblock fails after ocfs2_open.
Currently it goes to out without close ost->ost_fs. So close it in this
case.
And check ost->ost_fs to make maybe_replay_journals works properly in
all cases.

Signed-off-by: Joseph Qi <joseph.qi at huawei.com>
---
 fsck.ocfs2/fsck.c | 15 +++++++++------
 1 file changed, 9 insertions(+), 6 deletions(-)

diff --git a/fsck.ocfs2/fsck.c b/fsck.ocfs2/fsck.c
index dc5209d..f71fb21 100644
--- a/fsck.ocfs2/fsck.c
+++ b/fsck.ocfs2/fsck.c
@@ -471,6 +471,7 @@ static errcode_t open_and_check(o2fsck_state *ost, char *filename,
 	if (ret) {
 		printf("fsck saw unrecoverable errors in the super block and "
 		       "will not continue.\n");
+		ocfs2_close(ost->ost_fs);
 		goto out;
 	}

@@ -1097,12 +1098,14 @@ close:
 		ocfs2_shutdown_dlm(ost->ost_fs, whoami);
 	block_signals(SIG_UNBLOCK);

-	ret = ocfs2_close(ost->ost_fs);
-	if (ret) {
-		com_err(whoami, ret, "while closing file \"%s\"", filename);
-		/* XXX I wonder about this error.. */
-		fsck_mask |= FSCK_ERROR;
-	}
+	if (ost->ost_fs) {
+		ret = ocfs2_close(ost->ost_fs);
+		if (ret) {
+			com_err(whoami, ret, "while closing file \"%s\"", filename);
+			/* XXX I wonder about this error.. */
+			fsck_mask |= FSCK_ERROR;
+		}
+	}

 out:
 	return fsck_mask;
-- 
1.8.4.3





More information about the Ocfs2-tools-devel mailing list