> +/* > + * 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. -- dm-devel mailing list dm-devel@xxxxxxxxxx https://listman.redhat.com/mailman/listinfo/dm-devel