All of lore.kernel.org
 help / color / mirror / Atom feed
From: Akinobu Mita <akinobu.mita@gmail.com>
To: linux-kernel@vger.kernel.org
Cc: xfs@oss.sgi.com, Tim Shimmin <xfs-masters@oss.sgi.com>,
	Christoph Hellwig <hch@lst.de>
Subject: [PATCH] update sb->s_frozen when freezing read-only mounted device, too
Date: Sat, 29 Sep 2007 19:09:12 +0900	[thread overview]
Message-ID: <20070929100912.GB4121@APFDCB5C> (raw)

freeze_bdev() with the device which is mounted as read only
does not change sb->s_frozen from SB_UNFROZEN to SB_FREEZE_TRANS.

Because of this behavior, xfs_freeze can break read-only XFS filesystem.

Because xfs_thaw does nothing for the filesystem whose sb->s_frozen is
SB_UNFROZEN. So freezed readonly XFS filesystem will never be unfreezed.
Then we cannot do any unmount/remount operations for that filesystem.

This patch updates sb->s_frozen when freeze_bdev() is called for read-only
mounted device, too.

Cc:  Tim Shimmin <xfs-masters@oss.sgi.com>
Cc: Christoph Hellwig <hch@lst.de>
Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com>

---
 fs/buffer.c |   13 ++++++++-----
 1 file changed, 8 insertions(+), 5 deletions(-)

Index: 2.6-git/fs/buffer.c
===================================================================
--- 2.6-git.orig/fs/buffer.c
+++ 2.6-git/fs/buffer.c
@@ -190,19 +190,22 @@ struct super_block *freeze_bdev(struct b
 
 	down(&bdev->bd_mount_sem);
 	sb = get_super(bdev);
-	if (sb && !(sb->s_flags & MS_RDONLY)) {
+	if (sb) {
 		sb->s_frozen = SB_FREEZE_WRITE;
 		smp_wmb();
 
-		__fsync_super(sb);
+		if (!(sb->s_flags & MS_RDONLY))
+			__fsync_super(sb);
 
 		sb->s_frozen = SB_FREEZE_TRANS;
 		smp_wmb();
 
-		sync_blockdev(sb->s_bdev);
+		if (!(sb->s_flags & MS_RDONLY)) {
+			sync_blockdev(sb->s_bdev);
 
-		if (sb->s_op->write_super_lockfs)
-			sb->s_op->write_super_lockfs(sb);
+			if (sb->s_op->write_super_lockfs)
+				sb->s_op->write_super_lockfs(sb);
+		}
 	}
 
 	sync_blockdev(bdev);

             reply	other threads:[~2007-09-29 10:12 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-09-29 10:09 Akinobu Mita [this message]
2007-10-04 20:20 ` [PATCH] update sb->s_frozen when freezing read-only mounted device, too Christoph Hellwig
2007-10-05 13:20   ` Akinobu Mita
2007-10-10 15:20     ` Akinobu Mita

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20070929100912.GB4121@APFDCB5C \
    --to=akinobu.mita@gmail.com \
    --cc=hch@lst.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=xfs-masters@oss.sgi.com \
    --cc=xfs@oss.sgi.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.