On 25.01.22 18:24, mwilck@xxxxxxxx wrote: > From: Martin Wilck <mwilck@xxxxxxxx> > > 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. > I suppose you looked at sysfs_update_group(), and it's not a good fit? > 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. > > Signed-off-by: Martin Wilck <mwilck@xxxxxxxx> > --- > drivers/scsi/scsi_sysfs.c | 8 -------- > 1 file changed, 8 deletions(-) > > 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; > } > ]