On Fri, Jul 10, 2020 at 05:08:04PM +0100, Christoph Hellwig wrote: > > diff --git a/fs/xfs/xfs_icache.c b/fs/xfs/xfs_icache.c > > index 5daef654956cb..8c3fe7ef56e27 100644 > > --- a/fs/xfs/xfs_icache.c > > +++ b/fs/xfs/xfs_icache.c > > @@ -35,15 +35,20 @@ xfs_inode_alloc( > > xfs_ino_t ino) > > { > > struct xfs_inode *ip; > > + gfp_t gfp_mask = GFP_KERNEL; > > > > /* > > - * if this didn't occur in transactions, we could use > > - * KM_MAYFAIL and return NULL here on ENOMEM. Set the > > - * code up to do this anyway. > > + * If this is inside a transaction, we can not fail here, > > + * otherwise we can return NULL on ENOMEM. > > */ > > - ip = kmem_zone_alloc(xfs_inode_zone, 0); > > + > > + if (current->flags & PF_MEMALLOC_NOFS) > > + gfp_mask |= __GFP_NOFAIL; > > I'm a little worried about this change in beavior here. Can we > just keep the unconditional __GFP_NOFAIL and if we really care do the > change separately after the series? At that point it should probably > use the re-added PF_FSTRANS flag as well. Checking PF_FSTRANS was what I suggested should be done here, not PF_MEMALLOC_NOFS... Cheers, Dave. -- Dave Chinner david@xxxxxxxxxxxxx