Commit 77916da7 authored by Bart Van Assche's avatar Bart Van Assche Committed by Martin K. Petersen

scsi: esas2r: Introduce scsi_template_proc_dir()

Prepare for removing the 'proc_dir' and 'present' members from the SCSI
host template. This commit does not change any functionality.
Reviewed-by: default avatarJohn Garry <john.garry@huawei.com>
Cc: Bradley Grove <linuxdrivers@attotech.com>
Cc: Christoph Hellwig <hch@lst.de>
Cc: Ming Lei <ming.lei@redhat.com>
Cc: Hannes Reinecke <hare@suse.de>
Cc: Mike Christie <michael.christie@oracle.com>
Cc: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Signed-off-by: default avatarBart Van Assche <bvanassche@acm.org>
Link: https://lore.kernel.org/r/20221015002418.30955-3-bvanassche@acm.orgSigned-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
parent b6da9235
...@@ -635,10 +635,13 @@ static void __exit esas2r_exit(void) ...@@ -635,10 +635,13 @@ static void __exit esas2r_exit(void)
esas2r_log(ESAS2R_LOG_INFO, "%s called", __func__); esas2r_log(ESAS2R_LOG_INFO, "%s called", __func__);
if (esas2r_proc_major > 0) { if (esas2r_proc_major > 0) {
struct proc_dir_entry *proc_dir;
esas2r_log(ESAS2R_LOG_INFO, "unregister proc"); esas2r_log(ESAS2R_LOG_INFO, "unregister proc");
remove_proc_entry(ATTONODE_NAME, proc_dir = scsi_template_proc_dir(esas2r_proc_host->hostt);
esas2r_proc_host->hostt->proc_dir); if (proc_dir)
remove_proc_entry(ATTONODE_NAME, proc_dir);
unregister_chrdev(esas2r_proc_major, ESAS2R_DRVR_NAME); unregister_chrdev(esas2r_proc_major, ESAS2R_DRVR_NAME);
esas2r_proc_major = 0; esas2r_proc_major = 0;
...@@ -728,10 +731,12 @@ const char *esas2r_info(struct Scsi_Host *sh) ...@@ -728,10 +731,12 @@ const char *esas2r_info(struct Scsi_Host *sh)
esas2r_proc_major); esas2r_proc_major);
if (esas2r_proc_major > 0) { if (esas2r_proc_major > 0) {
struct proc_dir_entry *pde; struct proc_dir_entry *proc_dir;
struct proc_dir_entry *pde = NULL;
pde = proc_create(ATTONODE_NAME, 0, proc_dir = scsi_template_proc_dir(sh->hostt);
sh->hostt->proc_dir, if (proc_dir)
pde = proc_create(ATTONODE_NAME, 0, proc_dir,
&esas2r_proc_ops); &esas2r_proc_ops);
if (!pde) { if (!pde) {
......
...@@ -83,6 +83,17 @@ static int proc_scsi_host_open(struct inode *inode, struct file *file) ...@@ -83,6 +83,17 @@ static int proc_scsi_host_open(struct inode *inode, struct file *file)
4 * PAGE_SIZE); 4 * PAGE_SIZE);
} }
/**
* scsi_template_proc_dir() - returns the procfs dir for a SCSI host template
* @sht: SCSI host template pointer.
*/
struct proc_dir_entry *
scsi_template_proc_dir(const struct scsi_host_template *sht)
{
return sht->proc_dir;
}
EXPORT_SYMBOL_GPL(scsi_template_proc_dir);
static const struct proc_ops proc_scsi_ops = { static const struct proc_ops proc_scsi_ops = {
.proc_open = proc_scsi_host_open, .proc_open = proc_scsi_host_open,
.proc_release = single_release, .proc_release = single_release,
......
...@@ -751,6 +751,12 @@ extern struct Scsi_Host *scsi_host_alloc(struct scsi_host_template *, int); ...@@ -751,6 +751,12 @@ extern struct Scsi_Host *scsi_host_alloc(struct scsi_host_template *, int);
extern int __must_check scsi_add_host_with_dma(struct Scsi_Host *, extern int __must_check scsi_add_host_with_dma(struct Scsi_Host *,
struct device *, struct device *,
struct device *); struct device *);
#if defined(CONFIG_SCSI_PROC_FS)
struct proc_dir_entry *
scsi_template_proc_dir(const struct scsi_host_template *sht);
#else
#define scsi_template_proc_dir(sht) NULL
#endif
extern void scsi_scan_host(struct Scsi_Host *); extern void scsi_scan_host(struct Scsi_Host *);
extern void scsi_rescan_device(struct device *); extern void scsi_rescan_device(struct device *);
extern void scsi_remove_host(struct Scsi_Host *); extern void scsi_remove_host(struct Scsi_Host *);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment