On Thu, Jun 07, 2018 at 07:41:40AM -0400, Brian Foster wrote: > On Thu, Jun 07, 2018 at 03:21:32PM +1000, Dave Chinner wrote: > > From: Dave Chinner <dchinner@xxxxxxxxxx> > > > > xfs_reflink_convert_cow() manipulates the incore extent list > > in GFP_KERNEL context in the IO submission path whilst holding > > locked pages under writeback. This is a memory reclaim deadlock > > vector. This code is not in a transaction, so any memory allocations > > it makes aren't protected via the memalloc_nofs_save() context that > > transactions carry. > > > > Hence we need to run this call under memalloc_nofs_save() context to > > prevent potential memory allocations from being run as GFP_KERNEL > > and deadlocking. > > > > Signed-Off-By: Dave Chinner <dchinner@xxxxxxxxxx> > > --- > > Looks fine modulo the header thing Allison already pointed out: > > Reviewed-by: Brian Foster <bfoster@xxxxxxxxxx> > > BTW, shouldn't we also be using XFS_TRANS_NOFS in > xfs_iomap_write_allocate()? Most likely, yes. However, I think the whole ->writepages path should be moved under memalloc_nofs_save() context. I'm kinda waiting for the bufferhead removal to land before auditing it fully and determining the scope we should be covering by nofs alloc contexts. This was just a drive-by patch to fix a problem that was reported... Cheers, Dave. -- Dave Chinner david@xxxxxxxxxxxxx -- To unsubscribe from this list: send the line "unsubscribe linux-xfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html