On Fri, Jun 28, 2019 at 07:30:49AM +0000, Damien Le Moal wrote: > > Yes, indeed. However, removing the gfp_flags from report_zones method > would limit possibilities to only GFP_NOIO or GFP_KERNEL (default > vmalloc). What if the caller is an FS and needs GFP_NOFS, or any other > reclaim flags ? Handling all possibilities does not seem reasonable. > Handling only GFP_KERNEL and GFP_IO is easy, but that would mean that > the caller of blkdev_report_zones would need to do itself calls to > whatever memalloc_noXX_save/restore() it needs. Is that OK ? I think it is ok. The only real possibily is noio anyway as far as I can tell. > > Currently, blkdev_report_zones() uses only either GFP_KERNEL (general > case, fs, dm and user ioctl), or GFP_NOIO for revalidate, disk scan and > dm-zoned error path. So removing the flag from the report zones method > while keeping it in the block layer API to distinguished these cases is > simple, but I am not sure if that will not pause problems for some > users. Thoughts ? I'd kill it from the block layer API and require the caller to set the per-task flag. If I understood the mm maintainers correctly the long term plan is to kill of GFP_NOFS and GFP_NOIO flowly and just rely on the contexts.