On Mon, Feb 08 2021 at 10:17am -0500, Mike Snitzer <snitzer@xxxxxxxxxx> wrote: > On Fri, Feb 05 2021 at 9:03pm -0500, > JeffleXu <jefflexu@xxxxxxxxxxxxxxxxx> wrote: > > > > > > > On 2/6/21 2:39 AM, Mike Snitzer wrote: > > > On Mon, Feb 01 2021 at 10:35pm -0500, > > > Jeffle Xu <jefflexu@xxxxxxxxxxxxxxxxx> wrote: > > > > > >> According to the definition of dm_iterate_devices_fn: > > >> * This function must iterate through each section of device used by the > > >> * target until it encounters a non-zero return code, which it then returns. > > >> * Returns zero if no callout returned non-zero. > > >> > > >> For some target type (e.g., dm-stripe), one call of iterate_devices() may > > >> iterate multiple underlying devices internally, in which case a non-zero > > >> return code returned by iterate_devices_callout_fn will stop the iteration > > >> in advance. > > >> > > >> Thus if we want to ensure that _all_ underlying devices support some kind of > > >> attribute, the iteration structure like dm_table_supports_nowait() should be > > >> used, while the input iterate_devices_callout_fn should handle the 'not > > >> support' semantics. On the opposite, the iteration structure like > > >> dm_table_any_device_attribute() should be used if _any_ underlying device > > >> supporting this attibute is sufficient. In this case, the input > > >> iterate_devices_callout_fn should handle the 'support' semantics. > > >> > > >> Fixes: 545ed20e6df6 ("dm: add infrastructure for DAX support") > > >> Fixes: c3c4555edd10 ("dm table: clear add_random unless all devices have it set") > > >> Fixes: 4693c9668fdc ("dm table: propagate non rotational flag") > > >> Cc: stable@xxxxxxxxxxxxxxx > > >> Signed-off-by: Jeffle Xu <jefflexu@xxxxxxxxxxxxxxxxx> > > > > > > Thanks for auditing and fixing this up. It has been on my todo so > > > you've really helped me out -- your changes look correct to me. > > > > > > I've staged it for 5.12, the stable fix will likely need manual fixups > > > depending on the stable tree... we'll just need to assist with > > > backport(s) as needed. > > > > I'm glad to help offer the stable backport. But I don't know which > > kernel version the stable kernel is still being maintained. Also which > > mailing list I should send to when I finished backporting? > > All your v2 changes speak to needing more discipline in crafting > individual stable@ fixes that are applicable to various kernels.. when > all applied to mainline then it'd be the equivalent of your single > monolithic patch. > > But without splitting the changes into separate patches, for stable@'s > benefit, we'll have a much more difficult time of shepherding the > applicable changes into the disparate stable@ kernels. > > I'll have a look at splitting your v2 up accordingly. Hi, please see these commits that I've staged in linux-next via: https://git.kernel.org/pub/scm/linux/kernel/git/device-mapper/linux-dm.git/log/?h=for-next 1141b9133777 dm table: fix iterate_devices based device capability checks 0224c5e6fd07 dm table: fix DAX iterate_devices based device capability checks 76b0e14be03f dm table: fix zoned iterate_devices based device capability checks 55cdd7435e97 dm table: remove needless request_queue NULL pointer checks -- dm-devel mailing list dm-devel@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/dm-devel