All of lore.kernel.org
 help / color / mirror / Atom feed
From: Eric Sandeen <sandeen@redhat.com>
To: Jan Kara <jack@suse.cz>
Cc: linux-ext4@vger.kernel.org
Subject: Re: [PATCH] ext3: Don't warn from writepage when readonly inode is spotted after error
Date: Thu, 22 Dec 2011 10:11:36 -0600	[thread overview]
Message-ID: <4EF356B8.5010605@redhat.com> (raw)
In-Reply-To: <1324569415-9824-1-git-send-email-jack@suse.cz>

On 12/22/11 9:56 AM, Jan Kara wrote:
> WARN_ON_ONCE(IS_RDONLY(inode)) tends to trip when filesystem hits error and is
> remounted read-only. This unnecessarily scares users (well, they should be
> scared because of filesystem error, but the stack trace distracts them from the
> right source of their fear ;-). We could as well just remove the WARN_ON but
> it's not hard to fix it to not trip on filesystem with errors and not use more
> cycles in the common case so that's what we do.

I've seen that too and it is distracting.

Looks good to me, aside from the rather long lines ;)

-Eric


> Signed-off-by: Jan Kara <jack@suse.cz>
> ---
>  fs/ext3/inode.c |   18 +++++++++++++++---
>  1 files changed, 15 insertions(+), 3 deletions(-)
> 
>   I carry this patch in my tree and will merge it with Linus in the next merge
> window if noone objects.
> 
> diff --git a/fs/ext3/inode.c b/fs/ext3/inode.c
> index a8d3217..91ac85b 100644
> --- a/fs/ext3/inode.c
> +++ b/fs/ext3/inode.c
> @@ -1623,7 +1623,11 @@ static int ext3_ordered_writepage(struct page *page,
>  	int err;
>  
>  	J_ASSERT(PageLocked(page));
> -	WARN_ON_ONCE(IS_RDONLY(inode));
> +	/*
> +	 * We don't want to warn for emergency remount. The condition is ordered to avoid
> +	 * dereferencing inode->i_sb in non-error case to avoid slow-downs.
> +	 */
> +	WARN_ON_ONCE(IS_RDONLY(inode) && !(EXT3_SB(inode->i_sb)->s_mount_state & EXT3_ERROR_FS));
>  
>  	/*
>  	 * We give up here if we're reentered, because it might be for a
> @@ -1698,7 +1702,11 @@ static int ext3_writeback_writepage(struct page *page,
>  	int err;
>  
>  	J_ASSERT(PageLocked(page));
> -	WARN_ON_ONCE(IS_RDONLY(inode));
> +	/*
> +	 * We don't want to warn for emergency remount. The condition is ordered to avoid
> +	 * dereferencing inode->i_sb in non-error case to avoid slow-downs.
> +	 */
> +	WARN_ON_ONCE(IS_RDONLY(inode) && !(EXT3_SB(inode->i_sb)->s_mount_state & EXT3_ERROR_FS));
>  
>  	if (ext3_journal_current_handle())
>  		goto out_fail;
> @@ -1741,7 +1749,11 @@ static int ext3_journalled_writepage(struct page *page,
>  	int err;
>  
>  	J_ASSERT(PageLocked(page));
> -	WARN_ON_ONCE(IS_RDONLY(inode));
> +	/*
> +	 * We don't want to warn for emergency remount. The condition is ordered to avoid
> +	 * dereferencing inode->i_sb in non-error case to avoid slow-downs.
> +	 */
> +	WARN_ON_ONCE(IS_RDONLY(inode) && !(EXT3_SB(inode->i_sb)->s_mount_state & EXT3_ERROR_FS));
>  
>  	if (ext3_journal_current_handle())
>  		goto no_write;


  reply	other threads:[~2011-12-22 16:12 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-12-22 15:56 [PATCH] ext3: Don't warn from writepage when readonly inode is spotted after error Jan Kara
2011-12-22 16:11 ` Eric Sandeen [this message]
2011-12-22 16:18   ` Jan Kara

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=4EF356B8.5010605@redhat.com \
    --to=sandeen@redhat.com \
    --cc=jack@suse.cz \
    --cc=linux-ext4@vger.kernel.org \
    /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.