On Mon, Apr 09, 2018 at 05:39:16PM +0200, Christoph Hellwig wrote: > blk_get_request is used for pass-through style I/O and thus doesn't need > GFP_NOIO. Obviously GFP_KERNEL is a big improvement over GFP_NOIO! But can we take it all the way to GFP_USER, if this is always done in the ioctl path (which it seems to be, except for nfsd, which presumably won't have a cpuset memory allocation policy ... and if it did, the admin might appreciate it honouring said policy). > Signed-off-by: Christoph Hellwig <hch@xxxxxx> > --- > block/blk-core.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/block/blk-core.c b/block/blk-core.c > index 432923751551..253a869558f9 100644 > --- a/block/blk-core.c > +++ b/block/blk-core.c > @@ -1578,7 +1578,7 @@ static struct request *blk_old_get_request(struct request_queue *q, > unsigned int op, blk_mq_req_flags_t flags) > { > struct request *rq; > - gfp_t gfp_mask = flags & BLK_MQ_REQ_NOWAIT ? GFP_ATOMIC : GFP_NOIO; > + gfp_t gfp_mask = flags & BLK_MQ_REQ_NOWAIT ? GFP_ATOMIC : GFP_KERNEL; > int ret = 0; > > WARN_ON_ONCE(q->mq_ops); > -- > 2.16.3 >