On 8/30/22 4:05 PM, Bart Van Assche wrote: > Instead of using scsi_host_template members to track the SCSI proc > directory entries, track these entries in a list. This patch changes the > time needed for looking up the proc dir pointer from O(1) into O(n). I > think this is acceptable since the number of SCSI host adapter types per > host is usually small (less than ten). > > This patch has been tested by attaching two USB storage devices to a > qemu host: > > } > @@ -149,15 +214,17 @@ void scsi_proc_hostdir_rm(struct scsi_host_template *sht) > void scsi_proc_host_add(struct Scsi_Host *shost) > { > struct scsi_host_template *sht = shost->hostt; > + struct scsi_proc_entry *e; > struct proc_dir_entry *p; > char name[10]; > > - if (!sht->proc_dir) > */ > void scsi_proc_host_rm(struct Scsi_Host *shost) > { > + struct scsi_proc_entry *e; > char name[10]; > > - if (!shost->hostt->proc_dir) Hey Bart, Would it better to replace those two checks with a if (!sht->show_info) return; like is done in scsi_proc_hostdir_add/scsi_proc_hostdir_rm? In those hostdir functions if show_info is not set, you will not add an entry to scsi_proc_list. So in the above functions if that callout is not set you know there is no entry on &scsi_proc_list and don't need to grab the global_host_template_mutex for those cases. I can't really test but someone did say they had 1000s of scsi_hosts for iscsi. I'm not really sure how big a deal it is since we wouldn't be doing a lot of work with that mutex hold, but it seems like a simple and nice change just in case.