From 7bdc8e54b06aa7e09ea6e6d93428618c5002e559 Mon Sep 17 00:00:00 2001 From: Christoph Hellwig Date: Thu, 17 Apr 2003 19:19:42 -0700 Subject: [PATCH] [PATCH] devfs: cleanup devfs use in scsi Store the path of it's devfs directory in struct scsi_device. Use it in the devfs_register calls instead of the devfs_handle_t which will go away soon. --- drivers/scsi/osst.c | 28 +++++++++++++++------------- drivers/scsi/osst.h | 6 +----- drivers/scsi/scsi.h | 3 ++- drivers/scsi/scsi_scan.c | 5 +++-- drivers/scsi/sg.c | 16 +++++++++------- drivers/scsi/st.c | 25 +++++++++++++------------ drivers/scsi/st.h | 3 --- 7 files changed, 43 insertions(+), 43 deletions(-) diff --git a/drivers/scsi/osst.c b/drivers/scsi/osst.c index 8ccfb9e3642ba..56a707368d72c 100644 --- a/drivers/scsi/osst.c +++ b/drivers/scsi/osst.c @@ -47,6 +47,7 @@ const char * osst_version = "0.99.0"; #include #include #include +#include #include #include #include @@ -99,6 +100,8 @@ static struct osst_dev_parm { }; #endif +static char *osst_formats[ST_NBR_MODES] ={"", "l", "m", "a"}; + /* Some default definitions have been moved to osst_options.h */ #define OSST_BUFFER_SIZE (OSST_BUFFER_BLOCKS * ST_KILOBYTE) #define OSST_WRITE_THRESHOLD (OSST_WRITE_THRESHOLD_BLOCKS * ST_KILOBYTE) @@ -5524,11 +5527,12 @@ static int osst_attach(Scsi_Device * SDp) write_unlock(&os_scsi_tapes_lock); for (mode = 0; mode < ST_NBR_MODES; ++mode) { - char name[8]; - static char *formats[ST_NBR_MODES] ={"", "l", "m", "a"}; - + char name[8], devfs_name[64]; + /* Rewind entry */ - sprintf (name, "ot%s", formats[mode]); + sprintf(name, "ot%s", osst_formats[mode]); + sprintf(devfs_name, "%s/ot%s", SDp->devfs_name, osst_formats[mode]); + sprintf(tpnt->driverfs_dev_r[mode].bus_id, "%s:%s", SDp->sdev_driverfs_dev.bus_id, name); sprintf(tpnt->driverfs_dev_r[mode].name, "%s%s", @@ -5541,13 +5545,14 @@ static int osst_attach(Scsi_Device * SDp) device_create_file(&tpnt->driverfs_dev_r[mode], &dev_attr_type); device_create_file(&tpnt->driverfs_dev_r[mode], &dev_attr_kdev); - tpnt->de_r[mode] = - devfs_register (SDp->de, name, DEVFS_FL_DEFAULT, + devfs_register(NULL, devfs_name, 0, OSST_MAJOR, dev_num + (mode << 5), S_IFCHR | S_IRUGO | S_IWUGO, &osst_fops, NULL); /* No-rewind entry */ - sprintf (name, "ot%sn", formats[mode]); + sprintf (name, "ot%sn", osst_formats[mode]); + sprintf(devfs_name, "%s/ot%sn", SDp->devfs_name, osst_formats[mode]); + sprintf(tpnt->driverfs_dev_n[mode].bus_id, "%s:%s", SDp->sdev_driverfs_dev.bus_id, name); sprintf(tpnt->driverfs_dev_n[mode].name, "%s%s", @@ -5561,8 +5566,7 @@ static int osst_attach(Scsi_Device * SDp) &dev_attr_type); device_create_file(&tpnt->driverfs_dev_n[mode], &dev_attr_kdev); - tpnt->de_n[mode] = - devfs_register (SDp->de, name, DEVFS_FL_DEFAULT, + devfs_register(NULL, devfs_name, 0, OSST_MAJOR, dev_num + (mode << 5) + 128, S_IFCHR | S_IRUGO | S_IWUGO, &osst_fops, NULL); @@ -5595,10 +5599,8 @@ static void osst_detach(Scsi_Device * SDp) if((tpnt = os_scsi_tapes[i]) && (tpnt->device == SDp)) { tpnt->device = NULL; for (mode = 0; mode < ST_NBR_MODES; ++mode) { - devfs_unregister (tpnt->de_r[mode]); - tpnt->de_r[mode] = NULL; - devfs_unregister (tpnt->de_n[mode]); - tpnt->de_n[mode] = NULL; + devfs_remove("%s/ot%s", SDp->devfs_name, osst_formats[mode]); + devfs_remove("%s/ot%sn", SDp->devfs_name, osst_formats[mode]); } devfs_unregister_tape(tpnt->drive->number); put_disk(tpnt->drive); diff --git a/drivers/scsi/osst.h b/drivers/scsi/osst.h index d322df1fd3832..179c92eac5d5a 100644 --- a/drivers/scsi/osst.h +++ b/drivers/scsi/osst.h @@ -5,9 +5,7 @@ #include #include #include -#ifdef CONFIG_DEVFS_FS -#include -#endif + /* FIXME - rename and use the following two types or delete them! * and the types really should go to st.h anyway... @@ -557,8 +555,6 @@ typedef struct { /* Mode characteristics */ ST_mode modes[ST_NBR_MODES]; int current_mode; - devfs_handle_t de_r[ST_NBR_MODES]; /* Rewind entries */ - devfs_handle_t de_n[ST_NBR_MODES]; /* No-rewind entries */ struct device driverfs_dev_r[ST_NBR_MODES]; struct device driverfs_dev_n[ST_NBR_MODES]; diff --git a/drivers/scsi/scsi.h b/drivers/scsi/scsi.h index 08d94fa10fbaa..fa51ac6337639 100644 --- a/drivers/scsi/scsi.h +++ b/drivers/scsi/scsi.h @@ -588,7 +588,8 @@ struct scsi_device { int access_count; /* Count of open channels/mounts */ void *hostdata; /* available to low-level driver */ - devfs_handle_t de; /* directory for the device */ + char devfs_name[256]; /* devfs junk */ + devfs_handle_t de; /* will go away soon */ char type; char scsi_level; unsigned char inquiry_len; /* valid bytes in 'inquiry' */ diff --git a/drivers/scsi/scsi_scan.c b/drivers/scsi/scsi_scan.c index d794ade20c766..7a71c1c0260c8 100644 --- a/drivers/scsi/scsi_scan.c +++ b/drivers/scsi/scsi_scan.c @@ -1244,9 +1244,10 @@ static int scsi_add_lun(Scsi_Device *sdev, Scsi_Request *sreq, scsi_device_register(sdev); - sdev->de = devfs_mk_dir("scsi/host%d/bus%d/target%d/lun%d", + sprintf(sdev->devfs_name, "scsi/host%d/bus%d/target%d/lun%d", sdev->host->host_no, sdev->channel, sdev->id, sdev->lun); + sdev->de = devfs_mk_dir(sdev->devfs_name); /* * End driverfs/devfs code. @@ -1733,7 +1734,7 @@ int scsi_remove_device(struct scsi_device *sdev) if (sdev->attached) return -EINVAL; - devfs_unregister(sdev->de); + devfs_remove(sdev->devfs_name); scsi_device_unregister(sdev); scsi_free_sdev(sdev); diff --git a/drivers/scsi/sg.c b/drivers/scsi/sg.c index bd6d500251261..4042fed385270 100644 --- a/drivers/scsi/sg.c +++ b/drivers/scsi/sg.c @@ -182,7 +182,6 @@ typedef struct sg_device { /* holds the state of each scsi generic device */ wait_queue_head_t o_excl_wait; /* queue open() when O_EXCL in use */ int sg_tablesize; /* adapter's max scatter-gather table size */ Sg_fd *headfp; /* first open fd belonging to this device */ - devfs_handle_t de; volatile char detached; /* 0->attached, 1->detached pending removal */ volatile char exclude; /* opened for exclusive access */ char sgdebug; /* 0->off, 1->sense, 9->dump dev, 10-> all devs */ @@ -1350,6 +1349,7 @@ sg_attach(Scsi_Device * scsidp) struct gendisk *disk; Sg_device *sdp = NULL; unsigned long iflags; + char devfs_name[64]; int k, error; disk = alloc_disk(1); @@ -1447,10 +1447,13 @@ find_empty_slot: device_register(&sdp->sg_driverfs_dev); device_create_file(&sdp->sg_driverfs_dev, &dev_attr_type); device_create_file(&sdp->sg_driverfs_dev, &dev_attr_kdev); - sdp->de = devfs_register(scsidp->de, "generic", DEVFS_FL_DEFAULT, - SCSI_GENERIC_MAJOR, k, - S_IFCHR | S_IRUSR | S_IWUSR | S_IRGRP, - &sg_fops, sdp); + + sprintf(devfs_name, "%s/generic", scsidp->devfs_name); + devfs_register(NULL, devfs_name, 0, + SCSI_GENERIC_MAJOR, k, + S_IFCHR | S_IRUSR | S_IWUSR | S_IRGRP, + &sg_fops, sdp); + switch (scsidp->type) { case TYPE_DISK: case TYPE_MOD: @@ -1527,8 +1530,7 @@ sg_detach(Scsi_Device * scsidp) write_unlock_irqrestore(&sg_dev_arr_lock, iflags); if (sdp) { - devfs_unregister(sdp->de); - sdp->de = NULL; + devfs_remove("%s/generic", scsidp->devfs_name); device_remove_file(&sdp->sg_driverfs_dev, &dev_attr_type); device_remove_file(&sdp->sg_driverfs_dev, &dev_attr_kdev); device_unregister(&sdp->sg_driverfs_dev); diff --git a/drivers/scsi/st.c b/drivers/scsi/st.c index 3977535e7ce29..e11a76efd5f17 100644 --- a/drivers/scsi/st.c +++ b/drivers/scsi/st.c @@ -35,6 +35,7 @@ static char *verstr = "20030413"; #include #include #include +#include #include #include #include @@ -116,6 +117,7 @@ static struct st_dev_parm { }; #endif +static char *st_formats[ST_NBR_MODES] ={"", "l", "m", "a"}; /* The default definitions have been moved to st_options.h */ @@ -3863,11 +3865,12 @@ static int st_attach(Scsi_Device * SDp) write_unlock(&st_dev_arr_lock); for (mode = 0; mode < ST_NBR_MODES; ++mode) { - char name[8]; - static char *formats[ST_NBR_MODES] ={"", "l", "m", "a"}; + char name[8], devfs_name[64]; /* Rewind entry */ - sprintf (name, "mt%s", formats[mode]); + sprintf(name, "mt%s", st_formats[mode]); + sprintf(devfs_name, "%s/mt%s", SDp->devfs_name, st_formats[mode]); + sprintf(tpnt->driverfs_dev_r[mode].bus_id, "%s:%s", SDp->sdev_driverfs_dev.bus_id, name); sprintf(tpnt->driverfs_dev_r[mode].name, "%s%s", @@ -3880,13 +3883,14 @@ static int st_attach(Scsi_Device * SDp) device_create_file(&tpnt->driverfs_dev_r[mode], &dev_attr_type); device_create_file(&tpnt->driverfs_dev_r[mode], &dev_attr_kdev); - tpnt->de_r[mode] = - devfs_register (SDp->de, name, DEVFS_FL_DEFAULT, + devfs_register(NULL, devfs_name, 0, SCSI_TAPE_MAJOR, dev_num + (mode << 5), S_IFCHR | S_IRUGO | S_IWUGO, &st_fops, NULL); /* No-rewind entry */ - sprintf (name, "mt%sn", formats[mode]); + sprintf (name, "mt%sn", st_formats[mode]); + sprintf(devfs_name, "%s/mt%sn", SDp->devfs_name, st_formats[mode]); + sprintf(tpnt->driverfs_dev_n[mode].bus_id, "%s:%s", SDp->sdev_driverfs_dev.bus_id, name); sprintf(tpnt->driverfs_dev_n[mode].name, "%s%s", @@ -3900,8 +3904,7 @@ static int st_attach(Scsi_Device * SDp) &dev_attr_type); device_create_file(&tpnt->driverfs_dev_n[mode], &dev_attr_kdev); - tpnt->de_n[mode] = - devfs_register (SDp->de, name, DEVFS_FL_DEFAULT, + devfs_register(NULL, devfs_name, 0, SCSI_TAPE_MAJOR, dev_num + (mode << 5) + 128, S_IFCHR | S_IRUGO | S_IWUGO, &st_fops, NULL); @@ -3939,10 +3942,8 @@ static void st_detach(Scsi_Device * SDp) write_unlock(&st_dev_arr_lock); devfs_unregister_tape(tpnt->disk->number); for (mode = 0; mode < ST_NBR_MODES; ++mode) { - devfs_unregister (tpnt->de_r[mode]); - tpnt->de_r[mode] = NULL; - devfs_unregister (tpnt->de_n[mode]); - tpnt->de_n[mode] = NULL; + devfs_remove("%s/mt%s", SDp->devfs_name, st_formats[mode]); + devfs_remove("%s/mt%sn", SDp->devfs_name, st_formats[mode]); device_remove_file(&tpnt->driverfs_dev_r[mode], &dev_attr_type); device_remove_file(&tpnt->driverfs_dev_r[mode], diff --git a/drivers/scsi/st.h b/drivers/scsi/st.h index 5540a2f10d970..9ae9b1cf51524 100644 --- a/drivers/scsi/st.h +++ b/drivers/scsi/st.h @@ -5,7 +5,6 @@ #ifndef _SCSI_H #include "scsi.h" #endif -#include #include /* The tape buffer descriptor. */ @@ -104,8 +103,6 @@ typedef struct { /* Mode characteristics */ ST_mode modes[ST_NBR_MODES]; int current_mode; - devfs_handle_t de_r[ST_NBR_MODES]; /* Rewind entries */ - devfs_handle_t de_n[ST_NBR_MODES]; /* No-rewind entries */ struct device driverfs_dev_r[ST_NBR_MODES]; struct device driverfs_dev_n[ST_NBR_MODES]; -- 2.53.0