All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dmitry Monakhov <dmonakhov@openvz.org>
To: Al Viro <viro@ZenIV.linux.org.uk>
Cc: Eric Sandeen <sandeen@redhat.com>,
	"linux-fsdevel\@vger.kernel.org" <linux-fsdevel@vger.kernel.org>,
	Jan Kara <jack@suse.cz>,
	Fernando Luis Vazquez Cao <fernando_b1@lab.ntt.co.jp>
Subject: Re: [PATCH] fs: block pipe_write() on a frozen filesystem PING..
Date: Wed, 03 Apr 2013 00:30:07 +0400	[thread overview]
Message-ID: <87k3okvfow.fsf@openvz.org> (raw)
In-Reply-To: <20130402195727.GJ21522@ZenIV.linux.org.uk>

[-- Attachment #1: Type: text/plain, Size: 692 bytes --]

On Tue, 2 Apr 2013 20:57:27 +0100, Al Viro <viro@ZenIV.linux.org.uk> wrote:
> On Tue, Apr 02, 2013 at 04:38:22PM +0400, Dmitry Monakhov wrote:
> > On Thu, 27 Sep 2012 10:47:59 -0500, Eric Sandeen <sandeen@redhat.com> wrote:
> > > I noticed that this can sneak past a frozen filesystem:
> > Ping.. any body want to take care about that patch?
> 
> NAK.  Note that writing to FIFO that sits on filesystem that is outright
> read-only is allowed just fine; blocking it for frozen ones is bogus.
> 
> IOW, it should be treated the same way we treat touch_atime().  Moreover,
> it should only be done around file_update_time().  With trylock.
Ok fair enough.
Please take a look at updated version

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-PATCH-fs-skip-mtime-update-for-fifo-on-a-frozen-file.patch --]
[-- Type: text/x-patch, Size: 1421 bytes --]

>From c01acb73b8dc9e7a891b8f087ad3eb53bb06d270 Mon Sep 17 00:00:00 2001
From: Dmitry Monakhov <dmonakhov@openvz.org>
Date: Wed, 3 Apr 2013 00:19:15 +0400
Subject: [PATCH] [PATCH] fs: skip mtime update for fifo on a frozen filesystem

Eric noticed that this can sneak past a frozen filesystem:
# mkfifo /mnt/test/fifo
# echo foo > /mnt/test/fifo &
# fsfreeze -f /mnt/test
# cat /mnt/test/fifo
and we get a warning that jbd2 has entered a transaction while frozen:
WARNING: at fs/ext4/super.c:240 ext4_journal_start_sb+0xce/0xe0 [ext4]() (Not tainted)
which is: WARN_ON(sb->s_writers.frozen == SB_FREEZE_COMPLETE);
and we get there via the file_update_time() path in pipe_write().
If filesystem is frozen we can block pipe_write() but this is not optimal
because fifo is special_file so let's skip mtime update as we do
with touch_atime()

Signed-off-by: Dmitry Monakhov <dmonakhov@openvz.org>
---
 fs/pipe.c |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/fs/pipe.c b/fs/pipe.c
index 2234f3f..62f63d5 100644
--- a/fs/pipe.c
+++ b/fs/pipe.c
@@ -654,10 +654,11 @@ out:
 		wake_up_interruptible_sync_poll(&pipe->wait, POLLIN | POLLRDNORM);
 		kill_fasync(&pipe->fasync_readers, SIGIO, POLL_IN);
 	}
-	if (ret > 0) {
+	if (ret > 0 && sb_start_write_trylock(inode->i_sb)) {
 		int err = file_update_time(filp);
 		if (err)
 			ret = err;
+		sb_end_write(inode->i_sb);
 	}
 	return ret;
 }
-- 
1.7.1


      reply	other threads:[~2013-04-02 20:30 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-09-27 15:47 [PATCH] fs: block pipe_write() on a frozen filesystem Eric Sandeen
2012-10-01 15:34 ` Jan Kara
2013-04-02 12:38 ` [PATCH] fs: block pipe_write() on a frozen filesystem PING Dmitry Monakhov
2013-04-02 19:57   ` Al Viro
2013-04-02 20:30     ` Dmitry Monakhov [this message]

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=87k3okvfow.fsf@openvz.org \
    --to=dmonakhov@openvz.org \
    --cc=fernando_b1@lab.ntt.co.jp \
    --cc=jack@suse.cz \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=sandeen@redhat.com \
    --cc=viro@ZenIV.linux.org.uk \
    /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.