On 3/14/23 3:38?AM, Matthew Wilcox wrote: > On Tue, Mar 07, 2023 at 08:10:32PM -0700, Jens Axboe wrote: >> @@ -493,9 +507,13 @@ pipe_write(struct kiocb *iocb, struct iov_iter *from) >> int copied; >> >> if (!page) { >> - page = alloc_page(GFP_HIGHUSER | __GFP_ACCOUNT); >> + gfp_t gfp = __GFP_HIGHMEM | __GFP_ACCOUNT; >> + >> + if (!nonblock) >> + gfp |= GFP_USER; >> + page = alloc_page(gfp); > > Hmm, looks like you drop __GFP_HARDWALL in the nonblock case. People who > use cpusets might be annoyed by that. Ah good catch! Yes, that's an oversight, I'll rectify that in v2. >> if (unlikely(!page)) { >> - ret = ret ? : -ENOMEM; >> + ret = ret ? : nonblock ? -EAGAIN : -ENOMEM; > > double ternary operator? really? yeah sorry... See reply to Christian, I'll make this cleaner. -- Jens Axboe