From: Dave Chinner <david@fromorbit.com>
To: NeilBrown <neilb@suse.de>
Cc: linux-mm@kvack.org, linux-nfs@vger.kernel.org,
linux-kernel@vger.kernel.org, Ming Lei <ming.lei@canonical.com>,
xfs@oss.sgi.com
Subject: Re: [PATCH 04/19] Make effect of PF_FSTRANS to disable __GFP_FS universal.
Date: Wed, 16 Apr 2014 15:37:56 +1000 [thread overview]
Message-ID: <20140416053756.GC15995@dastard> (raw)
In-Reply-To: <20140416040336.10604.58240.stgit@notabene.brown>
On Wed, Apr 16, 2014 at 02:03:36PM +1000, NeilBrown wrote:
> Currently both xfs and nfs will handle PF_FSTRANS by disabling
> __GFP_FS.
>
> Make this effect global by repurposing memalloc_noio_flags (which
> does the same thing for PF_MEMALLOC_NOIO and __GFP_IO) to generally
> impost the task flags on a gfp_t.
> Due to this repurposing we change the name of memalloc_noio_flags
> to gfp_from_current().
>
> As PF_FSTRANS now uniformly removes __GFP_FS we can remove special
> code for this from xfs and nfs.
>
> As we can now expect other code to set PF_FSTRANS, its meaning is more
> general, so the WARN_ON in xfs_vm_writepage() which checks PF_FSTRANS
> is not set is no longer appropriate. PF_FSTRANS may be set for other
> reasons than an XFS transaction.
So PF_FSTRANS no longer means "filesystem in transaction context".
Are you going to rename to match whatever it's meaning is now?
I'm not exactly clear on what it means now...
> As lockdep cares about __GFP_FS, we need to translate PF_FSTRANS to
> __GFP_FS before calling lockdep_alloc_trace() in various places.
>
> Signed-off-by: NeilBrown <neilb@suse.de>
....
> diff --git a/fs/xfs/kmem.h b/fs/xfs/kmem.h
> index 64db0e53edea..882b86270ebe 100644
> --- a/fs/xfs/kmem.h
> +++ b/fs/xfs/kmem.h
> @@ -50,8 +50,6 @@ kmem_flags_convert(xfs_km_flags_t flags)
> lflags = GFP_ATOMIC | __GFP_NOWARN;
> } else {
> lflags = GFP_KERNEL | __GFP_NOWARN;
> - if ((current->flags & PF_FSTRANS) || (flags & KM_NOFS))
> - lflags &= ~__GFP_FS;
> }
I think KM_NOFS needs to remain here, as it has use outside of
transaction contexts that set PF_FSTRANS....
> if (flags & KM_ZERO)
> diff --git a/fs/xfs/xfs_aops.c b/fs/xfs/xfs_aops.c
> index db2cfb067d0b..207a7f86d5d7 100644
> --- a/fs/xfs/xfs_aops.c
> +++ b/fs/xfs/xfs_aops.c
> @@ -952,13 +952,6 @@ xfs_vm_writepage(
> PF_MEMALLOC))
> goto redirty;
>
> - /*
> - * Given that we do not allow direct reclaim to call us, we should
> - * never be called while in a filesystem transaction.
> - */
> - if (WARN_ON(current->flags & PF_FSTRANS))
> - goto redirty;
We still need to ensure this rule isn't broken. If it is, the
filesystem will silently deadlock in delayed allocation rather than
gracefully handle the problem with a warning....
Cheers,
Dave.
--
Dave Chinner
david@fromorbit.com
WARNING: multiple messages have this Message-ID (diff)
From: Dave Chinner <david@fromorbit.com>
To: NeilBrown <neilb@suse.de>
Cc: linux-mm@kvack.org, linux-nfs@vger.kernel.org,
linux-kernel@vger.kernel.org, Ming Lei <ming.lei@canonical.com>,
xfs@oss.sgi.com
Subject: Re: [PATCH 04/19] Make effect of PF_FSTRANS to disable __GFP_FS universal.
Date: Wed, 16 Apr 2014 15:37:56 +1000 [thread overview]
Message-ID: <20140416053756.GC15995@dastard> (raw)
In-Reply-To: <20140416040336.10604.58240.stgit@notabene.brown>
On Wed, Apr 16, 2014 at 02:03:36PM +1000, NeilBrown wrote:
> Currently both xfs and nfs will handle PF_FSTRANS by disabling
> __GFP_FS.
>
> Make this effect global by repurposing memalloc_noio_flags (which
> does the same thing for PF_MEMALLOC_NOIO and __GFP_IO) to generally
> impost the task flags on a gfp_t.
> Due to this repurposing we change the name of memalloc_noio_flags
> to gfp_from_current().
>
> As PF_FSTRANS now uniformly removes __GFP_FS we can remove special
> code for this from xfs and nfs.
>
> As we can now expect other code to set PF_FSTRANS, its meaning is more
> general, so the WARN_ON in xfs_vm_writepage() which checks PF_FSTRANS
> is not set is no longer appropriate. PF_FSTRANS may be set for other
> reasons than an XFS transaction.
So PF_FSTRANS no longer means "filesystem in transaction context".
Are you going to rename to match whatever it's meaning is now?
I'm not exactly clear on what it means now...
> As lockdep cares about __GFP_FS, we need to translate PF_FSTRANS to
> __GFP_FS before calling lockdep_alloc_trace() in various places.
>
> Signed-off-by: NeilBrown <neilb@suse.de>
....
> diff --git a/fs/xfs/kmem.h b/fs/xfs/kmem.h
> index 64db0e53edea..882b86270ebe 100644
> --- a/fs/xfs/kmem.h
> +++ b/fs/xfs/kmem.h
> @@ -50,8 +50,6 @@ kmem_flags_convert(xfs_km_flags_t flags)
> lflags = GFP_ATOMIC | __GFP_NOWARN;
> } else {
> lflags = GFP_KERNEL | __GFP_NOWARN;
> - if ((current->flags & PF_FSTRANS) || (flags & KM_NOFS))
> - lflags &= ~__GFP_FS;
> }
I think KM_NOFS needs to remain here, as it has use outside of
transaction contexts that set PF_FSTRANS....
> if (flags & KM_ZERO)
> diff --git a/fs/xfs/xfs_aops.c b/fs/xfs/xfs_aops.c
> index db2cfb067d0b..207a7f86d5d7 100644
> --- a/fs/xfs/xfs_aops.c
> +++ b/fs/xfs/xfs_aops.c
> @@ -952,13 +952,6 @@ xfs_vm_writepage(
> PF_MEMALLOC))
> goto redirty;
>
> - /*
> - * Given that we do not allow direct reclaim to call us, we should
> - * never be called while in a filesystem transaction.
> - */
> - if (WARN_ON(current->flags & PF_FSTRANS))
> - goto redirty;
We still need to ensure this rule isn't broken. If it is, the
filesystem will silently deadlock in delayed allocation rather than
gracefully handle the problem with a warning....
Cheers,
Dave.
--
Dave Chinner
david@fromorbit.com
_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs
WARNING: multiple messages have this Message-ID (diff)
From: Dave Chinner <david@fromorbit.com>
To: NeilBrown <neilb@suse.de>
Cc: linux-mm@kvack.org, linux-nfs@vger.kernel.org,
linux-kernel@vger.kernel.org, Ming Lei <ming.lei@canonical.com>,
xfs@oss.sgi.com
Subject: Re: [PATCH 04/19] Make effect of PF_FSTRANS to disable __GFP_FS universal.
Date: Wed, 16 Apr 2014 15:37:56 +1000 [thread overview]
Message-ID: <20140416053756.GC15995@dastard> (raw)
In-Reply-To: <20140416040336.10604.58240.stgit@notabene.brown>
On Wed, Apr 16, 2014 at 02:03:36PM +1000, NeilBrown wrote:
> Currently both xfs and nfs will handle PF_FSTRANS by disabling
> __GFP_FS.
>
> Make this effect global by repurposing memalloc_noio_flags (which
> does the same thing for PF_MEMALLOC_NOIO and __GFP_IO) to generally
> impost the task flags on a gfp_t.
> Due to this repurposing we change the name of memalloc_noio_flags
> to gfp_from_current().
>
> As PF_FSTRANS now uniformly removes __GFP_FS we can remove special
> code for this from xfs and nfs.
>
> As we can now expect other code to set PF_FSTRANS, its meaning is more
> general, so the WARN_ON in xfs_vm_writepage() which checks PF_FSTRANS
> is not set is no longer appropriate. PF_FSTRANS may be set for other
> reasons than an XFS transaction.
So PF_FSTRANS no longer means "filesystem in transaction context".
Are you going to rename to match whatever it's meaning is now?
I'm not exactly clear on what it means now...
> As lockdep cares about __GFP_FS, we need to translate PF_FSTRANS to
> __GFP_FS before calling lockdep_alloc_trace() in various places.
>
> Signed-off-by: NeilBrown <neilb@suse.de>
....
> diff --git a/fs/xfs/kmem.h b/fs/xfs/kmem.h
> index 64db0e53edea..882b86270ebe 100644
> --- a/fs/xfs/kmem.h
> +++ b/fs/xfs/kmem.h
> @@ -50,8 +50,6 @@ kmem_flags_convert(xfs_km_flags_t flags)
> lflags = GFP_ATOMIC | __GFP_NOWARN;
> } else {
> lflags = GFP_KERNEL | __GFP_NOWARN;
> - if ((current->flags & PF_FSTRANS) || (flags & KM_NOFS))
> - lflags &= ~__GFP_FS;
> }
I think KM_NOFS needs to remain here, as it has use outside of
transaction contexts that set PF_FSTRANS....
> if (flags & KM_ZERO)
> diff --git a/fs/xfs/xfs_aops.c b/fs/xfs/xfs_aops.c
> index db2cfb067d0b..207a7f86d5d7 100644
> --- a/fs/xfs/xfs_aops.c
> +++ b/fs/xfs/xfs_aops.c
> @@ -952,13 +952,6 @@ xfs_vm_writepage(
> PF_MEMALLOC))
> goto redirty;
>
> - /*
> - * Given that we do not allow direct reclaim to call us, we should
> - * never be called while in a filesystem transaction.
> - */
> - if (WARN_ON(current->flags & PF_FSTRANS))
> - goto redirty;
We still need to ensure this rule isn't broken. If it is, the
filesystem will silently deadlock in delayed allocation rather than
gracefully handle the problem with a warning....
Cheers,
Dave.
--
Dave Chinner
david@fromorbit.com
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
next prev parent reply other threads:[~2014-04-16 5:38 UTC|newest]
Thread overview: 151+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-04-16 4:03 [PATCH/RFC 00/19] Support loop-back NFS mounts NeilBrown
2014-04-16 4:03 ` NeilBrown
2014-04-16 4:03 ` NeilBrown
2014-04-16 4:03 ` NeilBrown
2014-04-16 4:03 ` [PATCH 14/19] driver core: set PF_FSTRANS while holding gdp_mutex NeilBrown
2014-04-16 4:03 ` NeilBrown
2014-04-16 4:03 ` NeilBrown
2014-04-16 4:03 ` [PATCH 05/19] SUNRPC: track whether a request is coming from a loop-back interface NeilBrown
2014-04-16 4:03 ` NeilBrown
2014-04-16 4:03 ` NeilBrown
2014-04-16 4:03 ` NeilBrown
2014-04-16 14:47 ` Jeff Layton
2014-04-16 14:47 ` Jeff Layton
2014-04-16 14:47 ` Jeff Layton
2014-04-16 23:25 ` NeilBrown
2014-04-16 23:25 ` NeilBrown
2014-04-16 4:03 ` [PATCH 07/19] nfsd and VM: use PF_LESS_THROTTLE to avoid throttle in shrink_inactive_list NeilBrown
2014-04-16 4:03 ` NeilBrown
2014-04-16 4:03 ` NeilBrown
2014-04-16 4:03 ` [PATCH 11/19] FS: set PF_FSTRANS while holding mmap_sem in exec.c NeilBrown
2014-04-16 4:03 ` NeilBrown
2014-04-16 4:03 ` NeilBrown
2014-04-16 4:03 ` [PATCH 03/19] lockdep: improve scenario messages for RECLAIM_FS errors NeilBrown
2014-04-16 4:03 ` NeilBrown
2014-04-16 4:03 ` NeilBrown
2014-04-16 7:22 ` Peter Zijlstra
2014-04-16 7:22 ` Peter Zijlstra
2014-04-16 7:22 ` Peter Zijlstra
2014-04-16 4:03 ` [PATCH 02/19] lockdep: lockdep_set_current_reclaim_state should save old value NeilBrown
2014-04-16 4:03 ` NeilBrown
2014-04-16 4:03 ` NeilBrown
2014-04-16 4:03 ` [PATCH 10/19] NET: set PF_FSTRANS while holding sk_lock NeilBrown
2014-04-16 4:03 ` NeilBrown
2014-04-16 4:03 ` NeilBrown
2014-04-16 4:03 ` NeilBrown
2014-04-16 5:13 ` Eric Dumazet
2014-04-16 5:13 ` Eric Dumazet
2014-04-16 5:13 ` Eric Dumazet
2014-04-16 5:13 ` Eric Dumazet
2014-04-16 5:47 ` NeilBrown
2014-04-16 5:47 ` NeilBrown
2014-04-16 5:47 ` NeilBrown
2014-04-16 13:00 ` David Miller
2014-04-16 13:00 ` David Miller
2014-04-16 13:00 ` David Miller
2014-04-17 2:38 ` NeilBrown
2014-04-17 2:38 ` NeilBrown
2014-04-16 4:03 ` [PATCH 12/19] NET: set PF_FSTRANS while holding rtnl_lock NeilBrown
2014-04-16 4:03 ` NeilBrown
2014-04-16 4:03 ` NeilBrown
2014-04-16 4:03 ` NeilBrown
2014-04-16 4:03 ` [PATCH 09/19] XFS: ensure xfs_file_*_read cannot deadlock in memory allocation NeilBrown
2014-04-16 4:03 ` NeilBrown
2014-04-16 4:03 ` NeilBrown
2014-04-16 6:04 ` Dave Chinner
2014-04-16 6:04 ` Dave Chinner
2014-04-16 6:04 ` Dave Chinner
2014-04-16 6:27 ` NeilBrown
2014-04-16 6:27 ` NeilBrown
2014-04-16 6:31 ` Dave Chinner
2014-04-16 6:31 ` Dave Chinner
2014-04-16 6:31 ` Dave Chinner
2014-04-16 4:03 ` [PATCH 04/19] Make effect of PF_FSTRANS to disable __GFP_FS universal NeilBrown
2014-04-16 4:03 ` NeilBrown
2014-04-16 4:03 ` NeilBrown
2014-04-16 5:37 ` Dave Chinner [this message]
2014-04-16 5:37 ` Dave Chinner
2014-04-16 5:37 ` Dave Chinner
2014-04-16 6:17 ` NeilBrown
2014-04-16 6:17 ` NeilBrown
2014-04-17 1:03 ` NeilBrown
2014-04-17 1:03 ` NeilBrown
2014-04-17 4:41 ` Dave Chinner
2014-04-17 4:41 ` Dave Chinner
2014-04-17 4:41 ` Dave Chinner
2014-04-16 4:03 ` [PATCH 13/19] MM: set PF_FSTRANS while allocating per-cpu memory to avoid deadlock NeilBrown
2014-04-16 4:03 ` NeilBrown
2014-04-16 4:03 ` NeilBrown
2014-04-16 5:49 ` Dave Chinner
2014-04-16 5:49 ` Dave Chinner
2014-04-16 5:49 ` Dave Chinner
2014-04-16 6:22 ` NeilBrown
2014-04-16 6:22 ` NeilBrown
2014-04-16 6:30 ` Dave Chinner
2014-04-16 6:30 ` Dave Chinner
2014-04-16 6:30 ` Dave Chinner
2014-04-16 4:03 ` [PATCH 06/19] nfsd: set PF_FSTRANS for nfsd threads NeilBrown
2014-04-16 4:03 ` NeilBrown
2014-04-16 4:03 ` NeilBrown
2014-04-16 7:28 ` Peter Zijlstra
2014-04-16 7:28 ` Peter Zijlstra
2014-04-16 7:28 ` Peter Zijlstra
2014-04-16 4:03 ` [PATCH 01/19] Promote current_{set, restore}_flags_nested from xfs to global NeilBrown
2014-04-16 4:03 ` NeilBrown
2014-04-16 4:03 ` NeilBrown
2014-04-16 4:03 ` [PATCH 08/19] Set PF_FSTRANS while write_cache_pages calls ->writepage NeilBrown
2014-04-16 4:03 ` NeilBrown
2014-04-16 4:03 ` NeilBrown
2014-04-16 4:03 ` [PATCH 16/19] VFS: use GFP_NOFS rather than GFP_KERNEL in __d_alloc NeilBrown
2014-04-16 4:03 ` NeilBrown
2014-04-16 4:03 ` NeilBrown
2014-04-16 6:25 ` Dave Chinner
2014-04-16 6:25 ` Dave Chinner
2014-04-16 6:25 ` Dave Chinner
2014-04-16 6:49 ` NeilBrown
2014-04-16 6:49 ` NeilBrown
2014-04-16 9:00 ` Dave Chinner
2014-04-16 9:00 ` Dave Chinner
2014-04-16 9:00 ` Dave Chinner
2014-04-17 0:51 ` NeilBrown
2014-04-17 0:51 ` NeilBrown
2014-04-17 5:58 ` Dave Chinner
2014-04-17 5:58 ` Dave Chinner
2014-04-17 5:58 ` Dave Chinner
2014-04-16 4:03 ` [PATCH 17/19] VFS: set PF_FSTRANS while namespace_sem is held NeilBrown
2014-04-16 4:03 ` NeilBrown
2014-04-16 4:03 ` NeilBrown
2014-04-16 4:46 ` Al Viro
2014-04-16 4:46 ` Al Viro
2014-04-16 5:52 ` NeilBrown
2014-04-16 5:52 ` NeilBrown
2014-04-16 16:37 ` Al Viro
2014-04-16 16:37 ` Al Viro
2014-04-16 16:37 ` Al Viro
2014-04-16 4:03 ` [PATCH 19/19] XFS: set PF_FSTRANS while ilock is held in xfs_free_eofblocks NeilBrown
2014-04-16 4:03 ` NeilBrown
2014-04-16 4:03 ` NeilBrown
2014-04-16 6:18 ` Dave Chinner
2014-04-16 6:18 ` Dave Chinner
2014-04-16 6:18 ` Dave Chinner
2014-04-16 4:03 ` [PATCH 18/19] nfsd: set PF_FSTRANS during nfsd4_do_callback_rpc NeilBrown
2014-04-16 4:03 ` NeilBrown
2014-04-16 4:03 ` NeilBrown
2014-04-16 4:03 ` [PATCH 15/19] nfsd: set PF_FSTRANS when client_mutex is held NeilBrown
2014-04-16 4:03 ` NeilBrown
2014-04-16 4:03 ` NeilBrown
2014-04-16 14:42 ` [PATCH/RFC 00/19] Support loop-back NFS mounts Jeff Layton
2014-04-16 14:42 ` Jeff Layton
2014-04-16 14:42 ` Jeff Layton
2014-04-17 0:20 ` NeilBrown
2014-04-17 0:20 ` NeilBrown
2014-04-17 0:20 ` NeilBrown
2014-04-17 1:27 ` Dave Chinner
2014-04-17 1:27 ` Dave Chinner
2014-04-17 1:27 ` Dave Chinner
2014-04-17 1:50 ` NeilBrown
2014-04-17 1:50 ` NeilBrown
2014-04-17 1:50 ` NeilBrown
2014-04-17 4:23 ` Dave Chinner
2014-04-17 4:23 ` Dave Chinner
2014-04-17 4:23 ` Dave Chinner
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=20140416053756.GC15995@dastard \
--to=david@fromorbit.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=linux-nfs@vger.kernel.org \
--cc=ming.lei@canonical.com \
--cc=neilb@suse.de \
--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.