[Cluster-devel] [GFS2][PATCH] - Allow journal recovery on read-only mount
Abhijith Das <[email protected]>
| Newsgroups | com.redhat.cluster-devel |
|---|---|
| Message-ID | <[email protected]> |
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 <[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; > } > >