On 30 Oct 2024, at 9:52, Christoph Hellwig wrote: > On Wed, Oct 30, 2024 at 08:57:56AM -0400, Benjamin Coddington wrote: >> This adds support to obtain a device's unique id through dm, similar to the >> existing ioctl and persistent resevation handling. We limit this to >> single-target devices. >> >> This enables knfsd to export pNFS SCSI luns that have been exported from >> multipath devices. > > Is there anything that ensures that the underlying IDs actually > match? Match each other in a multipath device you mean? No, this will just return the first one where get_unique_id returns non-zero. Can they actually be different, and if so should we return an error? > >> + struct dm_unique_id *dmuuid = data; >> + const struct block_device_operations *fops = dev->bdev->bd_disk->fops; >> + >> + if (fops->get_unique_id) >> + return fops->get_unique_id(dev->bdev->bd_disk, dmuuid->id, dmuuid->type); >> + >> + return 0; > > Overly long line here. Also maybe just personal, but I find code easier > to read when the exit early condition is in the branch, e.g. > > strut gendisk *disk = dev->bdev->bd_disk > > if (!disk->fops->get_unique_id) > return 0; > return disk->fops->get_unique_id(disk, dmuuid->id, dmuuid->type); That is nicer, will do. Ben