devfs (4/7) - cleanup devfs use in scsi
Subsystems (3)
PATCH 1/1 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.
drivers/scsi/osst.c +15 -13
@@ -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);
drivers/scsi/osst.h +1 -5
@@ -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 ];
drivers/scsi/scsi.h +2 -1
@@ -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' */
drivers/scsi/scsi_scan.c +3 -2
@@ -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);
drivers/scsi/sg.c +9 -7
@@ -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);
drivers/scsi/st.c +13 -12
@@ -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],
drivers/scsi/st.h +0 -3
@@ -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 ];