Message ID | 20220127141351.30706-1-mwilck@suse.com |
---|---|
State | New |
Headers | show |
Series | scsi: make "access_state" sysfs attribute always visible | expand |
> If a SCSI device handler module is loaded after some SCSI devices have > already been probed (e.g. via request_module() by dm-multipath), the > "access_state" and "preferred_path" sysfs attributes remain invisible > for these devices, although the handler is attached and live. The > reason is that the visibility is only checked when the sysfs attribute > group is first created. This results in an inconsistent user > experience depending on the load order of SCSI low-level drivers > vs. device handler modules. > > This patch changes user space API: attempting to read the > "access_state" or "preferred_path" attributes will now result in > -EINVAL rather than -ENODEV for devices that have no device handler, > and tests for the existence of these attributes will have a different > result. Applied to 5.18/scsi-staging, thanks!
On Thu, 27 Jan 2022 15:13:51 +0100, mwilck@suse.com wrote: > From: Martin Wilck <mwilck@suse.com> > > If a SCSI device handler module is loaded after some SCSI devices > have already been probed (e.g. via request_module() by dm-multipath), > the "access_state" and "preferred_path" sysfs attributes remain invisible for > these devices, although the handler is attached and live. The reason is > that the visibility is only checked when the sysfs attribute group is > first created. This results in an inconsistent user experience depending > on the load order of SCSI low-level drivers vs. device handler modules. > > [...] Applied to 5.18/scsi-queue, thanks! [1/1] scsi: make "access_state" sysfs attribute always visible https://git.kernel.org/mkp/scsi/c/7cddf7e8d1e8
diff --git a/drivers/scsi/scsi_sysfs.c b/drivers/scsi/scsi_sysfs.c index f1e0c131b77c..226a50944c00 100644 --- a/drivers/scsi/scsi_sysfs.c +++ b/drivers/scsi/scsi_sysfs.c @@ -1228,14 +1228,6 @@ static umode_t scsi_sdev_attr_is_visible(struct kobject *kobj, !sdev->host->hostt->change_queue_depth) return 0; -#ifdef CONFIG_SCSI_DH - if (attr == &dev_attr_access_state.attr && - !sdev->handler) - return 0; - if (attr == &dev_attr_preferred_path.attr && - !sdev->handler) - return 0; -#endif return attr->mode; }