Messages in this thread Patch in this message | | | Date | Fri, 18 Apr 2003 18:12:58 +0200 | From | Christoph Hellwig <> | Subject | [PATCH] devfs (4/7) - 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.
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/
| |