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 <[EMAIL PROTECTED]>
> >
> >  
> >
> >------------------------------------------------------------------------
> >
> >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;
> >             }
> >  
> >
> 

Reply via email to