On Mon, 27 Jul 2009, Mike Snitzer wrote: > On Mon, Jul 27 2009 at 9:21am -0400, > Mikulas Patocka <mpatocka@xxxxxxxxxx> wrote: > > > Hi > > > > This patch fixes a bug introduced in 2.6.31-rc1. Targets that define > > iterate_devices and don't contain any devices (such as dm-loop in fsio) > > don't work. > > > > Mikulas > > > > --- > > > > Fix reverse logic in device_area_is_valid > > > > ->iterate_devices method calls the callback for every underlying device > > in the target. If the callback returns non-zero, iterate_devices exits > > and returns this value. If the callback returns zero for all the devices, > > iterate_devices returns zero. > > > > The logic to check for invalid device areas was reversed. > > device_area_is_valid returned 0 on error and 1 on success. > > > > Thus: > > - error was returned only if all the devices vere errorneous. If some of them > > returned 1 (success), dm_calculate_queue_limits understood this as success. > > - if the target had no device (the example is dm-loop target in FSIO mode), > > iterate_devices returned error straight away and dm_calculate_queue_limits > > understood this as an error. > > > > This patch reverses the logic so that 0 means success and 1 means error. > > > > Signed-off-by: Mikulas Patocka <mpatocka@xxxxxxxxxx> > > Nice catch, interesting that this was somehow missed. All targets do > treat a non-zero return from .iterate_devices as an error. > > We should probably rename device_area_is_valid to device_area_invalid. > > Mike Yes, you can rename it to that. Mikulas -- dm-devel mailing list dm-devel@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/dm-devel