| To: | NeilBrown <neilb@xxxxxxx> |
|---|---|
| Subject: | Re: [PATCH 17/19] VFS: set PF_FSTRANS while namespace_sem is held. |
| From: | Al Viro <viro@xxxxxxxxxxxxxxxxxx> |
| Date: | Wed, 16 Apr 2014 05:46:18 +0100 |
| Cc: | linux-mm@xxxxxxxxx, linux-nfs@xxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx, xfs@xxxxxxxxxxx |
| Delivered-to: | xfs@xxxxxxxxxxx |
| In-reply-to: | <20140416040337.10604.86740.stgit@xxxxxxxxxxxxxx> |
| References: | <20140416033623.10604.69237.stgit@xxxxxxxxxxxxxx> <20140416040337.10604.86740.stgit@xxxxxxxxxxxxxx> |
| Sender: | Al Viro <viro@xxxxxxxxxxxxxxxx> |
| User-agent: | Mutt/1.5.21 (2010-09-15) |
On Wed, Apr 16, 2014 at 02:03:37PM +1000, NeilBrown wrote:
> namespace_sem can be taken while various i_mutex locks are held, so we
> need to avoid reclaim from blocking on an FS (particularly loop-back
> NFS).
I would really prefer to deal with that differently - by explicit change of
gfp_t arguments of allocators.
The thing is, namespace_sem is held *only* over allocations, and not a lot
of them, at that - only mnt_alloc_id(), mnt_alloc_group_id(), alloc_vfsmnt()
and new_mountpoint(). That is all that is allowed.
Again, actual work with filesystems (setup, shutdown, remount, pathname
resolution, etc.) is all done outside of namespace_sem; it's held only
for manipulations of fs/{namespace,pnode}.c data structures and the only
reason it isn't a spinlock is that we need to do some allocations.
So I'd rather slap GFP_NOFS on those few allocations...
|
| Previous by Date: | [PATCH 19/19] XFS: set PF_FSTRANS while ilock is held in xfs_free_eofblocks, NeilBrown |
|---|---|
| Next by Date: | [PATCH -v2] check: add support for an external file containing tests to exclude, Theodore Ts'o |
| Previous by Thread: | [PATCH 17/19] VFS: set PF_FSTRANS while namespace_sem is held., NeilBrown |
| Next by Thread: | Re: [PATCH 17/19] VFS: set PF_FSTRANS while namespace_sem is held., NeilBrown |
| Indexes: | [Date] [Thread] [Top] [All Lists] |