[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: [Cluster-devel] [GFS2][PATCH] - Allow journal recovery on read-only mount



I'm NACKing this on Dave's suggestion that we restrict this behavior to
standalone gfs2 filesystems (lock_nolock). I'm working on a patch for
that and will post it soon.

--Abhi

Abhijith Das wrote:

>This patch allows gfs2 to perform journal recovery even if it is mounted
>read-only. Strictly speaking, a read-only mount should not be writing to
>the filesystem, but we do this only to perform journal recovery. A
>read-only mount will fail if we don't recover the dirty journal. Also,
>when gfs2 is used as a root filesystem, it will be mounted read-only
>before being mounted read-write during the boot sequence. A failed
>read-only mount will panic the machine during bootup.
>
>Signed-off-by: Abhijith Das <adas redhat com>
>
>  
>
>------------------------------------------------------------------------
>
>diff --git a/fs/gfs2/recovery.c b/fs/gfs2/recovery.c
>index 27c994f..b249e29 100644
>--- a/fs/gfs2/recovery.c
>+++ b/fs/gfs2/recovery.c
>@@ -504,13 +504,21 @@ int gfs2_recover_journal(struct gfs2_jde
> 			if (!test_bit(SDF_JOURNAL_LIVE, &sdp->sd_flags))
> 				ro = 1;
> 		} else {
>-			if (sdp->sd_vfs->s_flags & MS_RDONLY)
>-				ro = 1;
>+			if (sdp->sd_vfs->s_flags & MS_RDONLY) {
>+				/* check if device itself is read-only */
>+				ro = bdev_read_only(sdp->sd_vfs->s_bdev);
>+				if (!ro) {
>+					fs_info(sdp, "recovery required on "
>+						"read-only filesystem.\n");
>+					fs_info(sdp, "write access will be "
>+						"enabled during recovery.\n");
>+				}
>+			}
> 		}
> 
> 		if (ro) {
>-			fs_warn(sdp, "jid=%u: Can't replay: read-only FS\n",
>-				jd->jd_jid);
>+			fs_warn(sdp, "jid=%u: Can't replay: read-only block "
>+				"device\n", jd->jd_jid);
> 			error = -EROFS;
> 			goto fail_gunlock_tr;
> 		}
>  
>


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]