devfs (4/7) - cleanup devfs use in scsi

devfs (4/7) - cleanup devfs use in scsi

Post by Christoph Hellwi » Sat, 19 Apr 2003 18:30:16



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 majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/