Fueled by the LSFMM discussion on removing GFP_NOFS initiated by Willy, I've looked into the sole GFP_NOFS allocation in zonefs. As it turned out, it is only done for zone management commands and can be removed. After digging into more callers of blkdev_zone_mgmt() I came to the conclusion that the gfp_mask parameter can be removed alltogether. So this series switches all callers of blkdev_zone_mgmt() to either use GFP_KERNEL where possible or grab a memalloc_no{fs,io} context. The final patch in this series is getting rid of the gfp_mask parameter. Link: https://lore.kernel.org/all/ZZcgXI46AinlcBDP@xxxxxxxxxxxxxxxxxxxx/ --- Changes in v3: - Fix build error after rebase in dm-zoned-metadata.c - Link to v2: https://lore.kernel.org/r/20240125-zonefs_nofs-v2-0-2d975c8c1690@xxxxxxx Changes in v2: - guard blkdev_zone_mgmt in dm-zoned-metadata.c with memalloc_noio context - Link to v1: https://lore.kernel.org/r/20240123-zonefs_nofs-v1-0-cc0b0308ef25@xxxxxxx --- Johannes Thumshirn (5): zonefs: pass GFP_KERNEL to blkdev_zone_mgmt() call dm: dm-zoned: guard blkdev_zone_mgmt with noio scope btrfs: zoned: call blkdev_zone_mgmt in nofs scope f2fs: guard blkdev_zone_mgmt with nofs scope block: remove gfp_flags from blkdev_zone_mgmt block/blk-zoned.c | 19 ++++++++----------- drivers/md/dm-zoned-metadata.c | 5 ++++- drivers/nvme/target/zns.c | 5 ++--- fs/btrfs/zoned.c | 35 +++++++++++++++++++++++++---------- fs/f2fs/segment.c | 15 ++++++++++++--- fs/zonefs/super.c | 2 +- include/linux/blkdev.h | 2 +- 7 files changed, 53 insertions(+), 30 deletions(-) --- base-commit: 615d300648869c774bd1fe54b4627bb0c20faed4 change-id: 20240110-zonefs_nofs-dd1e22b2e046 Best regards, -- Johannes Thumshirn <johannes.thumshirn@xxxxxxx>