| To: | NeilBrown <neilb@xxxxxxx> |
|---|---|
| Subject: | Re: [PATCH 19/19] XFS: set PF_FSTRANS while ilock is held in xfs_free_eofblocks |
| From: | Dave Chinner <david@xxxxxxxxxxxxx> |
| Date: | Wed, 16 Apr 2014 16:18:20 +1000 |
| Cc: | linux-mm@xxxxxxxxx, linux-nfs@xxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx, xfs@xxxxxxxxxxx |
| Delivered-to: | xfs@xxxxxxxxxxx |
| In-reply-to: | <20140416040337.10604.7488.stgit@xxxxxxxxxxxxxx> |
| References: | <20140416033623.10604.69237.stgit@xxxxxxxxxxxxxx> <20140416040337.10604.7488.stgit@xxxxxxxxxxxxxx> |
| User-agent: | Mutt/1.5.21 (2010-09-15) |
On Wed, Apr 16, 2014 at 02:03:37PM +1000, NeilBrown wrote:
> memory allocates can happen while the xfs ilock is held in
> xfs_free_eofblocks, particularly
>
> [<ffffffff813e6667>] kmem_zone_alloc+0x67/0xc0
> [<ffffffff813e5945>] xfs_trans_add_item+0x25/0x50
> [<ffffffff8143d64c>] xfs_trans_ijoin+0x2c/0x60
> [<ffffffff8142275e>] xfs_itruncate_extents+0xbe/0x400
> [<ffffffff813c72f4>] xfs_free_eofblocks+0x1c4/0x240
>
> So set PF_FSTRANS to avoid this causing a deadlock.
Another "You broke KM_NOFS" moment. You win a Kit Kat. ;)
xfs_trans_add_item():
lidp = kmem_zone_zalloc(xfs_log_item_desc_zone, KM_SLEEP | KM_NOFS);
KM_NOFS needs to work, otherwise XFS is just a huge steaming pile of
memory reclaim deadlocks regardless of whether you are using
loopback NFS or not.
Cheers,
Dave.
--
Dave Chinner
david@xxxxxxxxxxxxx
|
| Previous by Date: | Re: [PATCH 04/19] Make effect of PF_FSTRANS to disable __GFP_FS universal., NeilBrown |
|---|---|
| Next by Date: | Re: [PATCH 13/19] MM: set PF_FSTRANS while allocating per-cpu memory to avoid deadlock., NeilBrown |
| Previous by Thread: | [PATCH 19/19] XFS: set PF_FSTRANS while ilock is held in xfs_free_eofblocks, NeilBrown |
| Next by Thread: | Re: [PATCH/RFC 00/19] Support loop-back NFS mounts, Jeff Layton |
| Indexes: | [Date] [Thread] [Top] [All Lists] |