[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



Hi,

On Fri, 2008-01-18 at 14:35 -0600, Abhijith Das wrote:
> 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
> 
Why? I don't see the need for such a restriction. The original patch
looks ok to me,

Steve.

> 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]