On 2/6/24 05:33, Mike Snitzer wrote: > On Mon, Feb 05 2024 at 12:38P -0500, > Damien Le Moal <dlemoal@xxxxxxxxxx> wrote: > >> On 2/4/24 02:58, Mike Snitzer wrote: >>> Love the overall improvement to the DM core code and the broader block >>> layer by switching to this bio-based ZWP approach. >>> >>> Reviewed-by: Mike Snitzer <snitzer@xxxxxxxxxx> >> >> Thanks Mike ! >> >>> But one incremental suggestion inlined below. >> >> I made this change, but in a lightly different form as I noticed that I was >> getting compile errors when CONFIG_BLK_DEV_ZONED is disabled. >> The change look like this now: >> >> static void dm_split_and_process_bio(struct mapped_device *md, >> struct dm_table *map, struct bio *bio) >> { >> ... >> need_split = is_abnormal = is_abnormal_io(bio); >> if (static_branch_unlikely(&zoned_enabled)) >> need_split = is_abnormal || dm_zone_bio_needs_split(md, bio); >> >> ... >> >> /* >> * Use the block layer zone write plugging for mapped devices that >> * need zone append emulation (e.g. dm-crypt). >> */ >> if (static_branch_unlikely(&zoned_enabled) && >> dm_zone_write_plug_bio(md, bio)) >> return; >> >> ... >> >> with these added to dm-core.h: >> >> static inline bool dm_zone_bio_needs_split(struct mapped_device *md, >> struct bio *bio) >> { >> return md->emulate_zone_append && bio_straddle_zones(bio); >> } >> static inline bool dm_zone_write_plug_bio(struct mapped_device *md, >> struct bio *bio) >> { >> return md->emulate_zone_append && blk_zone_write_plug_bio(bio, 0); >> } >> >> These 2 helpers define to "return false" for !CONFIG_BLK_DEV_ZONED. >> I hope this works for you. Otherwise, I will drop your review tag when posting V2. > > Why expose them in dm-core.h ? > > Just have what you point in dm-core.h above dm_split_and_process_bio in dm.c ? I wanted to avoid "#ifdef CONFIG_BLK_DEV_ZONED" in the .c files. But if you are OK with that, I can move these inline functions in dm.c. -- Damien Le Moal Western Digital Research