On 3/6/22 2:29 AM, Christoph Hellwig wrote: >> +/* >> + * Reuse ->bi_end_io as hlist head for storing all dm_io instances >> + * associated with this bio, and this bio's bi_end_io has to be >> + * stored in one of 'dm_io' instance first. >> + */ >> +static inline struct hlist_head *dm_get_bio_hlist_head(struct bio *bio) >> +{ >> + WARN_ON_ONCE(!(bio->bi_opf & REQ_DM_POLL_LIST)); >> + >> + return (struct hlist_head *)&bio->bi_end_io; >> +} > > So this reuse is what I really hated. I still think we should be able > to find space in the bio by creatively shifting fields around to just > add the hlist there directly, which would remove the need for this > override and more importantly the quite cumbersome saving and restoring > of the end_io handler. If it's possible, then that would be preferable. But I don't think that's going to be easy to do... -- Jens Axboe -- dm-devel mailing list dm-devel@xxxxxxxxxx https://listman.redhat.com/mailman/listinfo/dm-devel