[PATCH] devfs (4/7) - cleanup devfs use in scsi

From: Christoph Hellwig (hch@lst.de)
Date: Fri Apr 18 2003 - 11:12:58 EST


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.

diff -Nru a/drivers/scsi/osst.c b/drivers/scsi/osst.c
--- a/drivers/scsi/osst.c Fri Apr 18 15:57:20 2003
+++ b/drivers/scsi/osst.c Fri Apr 18 15:57:20 2003
@@ -47,6 +47,7 @@
 #include <linux/vmalloc.h>
 #include <linux/version.h>
 #include <linux/blk.h>
+#include <linux/devfs_fs_kernel.h>
 #include <asm/uaccess.h>
 #include <asm/dma.h>
 #include <asm/system.h>
@@ -99,6 +100,8 @@
 };
 #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 @@
         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 @@
                 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 @@
                                 &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 @@
         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 -Nru a/drivers/scsi/osst.h b/drivers/scsi/osst.h
--- a/drivers/scsi/osst.h Fri Apr 18 15:57:20 2003
+++ b/drivers/scsi/osst.h Fri Apr 18 15:57:20 2003
@@ -5,9 +5,7 @@
 #include <asm/byteorder.h>
 #include <linux/config.h>
 #include <linux/completion.h>
-#ifdef CONFIG_DEVFS_FS
-#include <linux/devfs_fs_kernel.h>
-#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 @@
   /* 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 -Nru a/drivers/scsi/scsi.h b/drivers/scsi/scsi.h
--- a/drivers/scsi/scsi.h Fri Apr 18 15:57:20 2003
+++ b/drivers/scsi/scsi.h Fri Apr 18 15:57:20 2003
@@ -588,7 +588,8 @@
         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 -Nru a/drivers/scsi/scsi_scan.c b/drivers/scsi/scsi_scan.c
--- a/drivers/scsi/scsi_scan.c Fri Apr 18 15:57:20 2003
+++ b/drivers/scsi/scsi_scan.c Fri Apr 18 15:57:20 2003
@@ -1244,9 +1244,10 @@
         
         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 @@
         if (sdev->attached)
                 return -EINVAL;
 
- devfs_unregister(sdev->de);
+ devfs_remove(sdev->devfs_name);
         scsi_device_unregister(sdev);
 
         scsi_free_sdev(sdev);
diff -Nru a/drivers/scsi/sg.c b/drivers/scsi/sg.c
--- a/drivers/scsi/sg.c Fri Apr 18 15:57:20 2003
+++ b/drivers/scsi/sg.c Fri Apr 18 15:57:20 2003
@@ -182,7 +182,6 @@
         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 @@
         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 @@
         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 @@
         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 -Nru a/drivers/scsi/st.c b/drivers/scsi/st.c
--- a/drivers/scsi/st.c Fri Apr 18 15:57:20 2003
+++ b/drivers/scsi/st.c Fri Apr 18 15:57:20 2003
@@ -35,6 +35,7 @@
 #include <linux/spinlock.h>
 #include <linux/blk.h>
 #include <linux/moduleparam.h>
+#include <linux/devfs_fs_kernel.h>
 #include <asm/uaccess.h>
 #include <asm/dma.h>
 #include <asm/system.h>
@@ -116,6 +117,7 @@
 };
 #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 @@
         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 @@
             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 @@
                                &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 @@
                         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 -Nru a/drivers/scsi/st.h b/drivers/scsi/st.h
--- a/drivers/scsi/st.h Fri Apr 18 15:57:20 2003
+++ b/drivers/scsi/st.h Fri Apr 18 15:57:20 2003
@@ -5,7 +5,6 @@
 #ifndef _SCSI_H
 #include "scsi.h"
 #endif
-#include <linux/devfs_fs_kernel.h>
 #include <linux/completion.h>
 
 /* The tape buffer descriptor. */
@@ -104,8 +103,6 @@
         /* 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];
 
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Wed Apr 23 2003 - 22:00:24 EST