[PATCH 09/27] scsi proc_fops: convert ibmmca

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Signed-off-by: Alexey Dobriyan <adobriyan@xxxxxxxxx>
---

 drivers/scsi/ibmmca.c |  105 +++++++++++++++++++++++++++-----------------------
 1 file changed, 57 insertions(+), 48 deletions(-)

--- a/drivers/scsi/ibmmca.c
+++ b/drivers/scsi/ibmmca.c
@@ -27,6 +27,7 @@
 #include <linux/delay.h>
 #include <linux/blkdev.h>
 #include <linux/proc_fs.h>
+#include <linux/seq_file.h>
 #include <linux/stat.h>
 #include <linux/mca.h>
 #include <linux/spinlock.h>
@@ -43,7 +44,7 @@ static int ibmmca_queuecommand (Scsi_Cmnd *, void (*done) (Scsi_Cmnd *));
 static int ibmmca_abort (Scsi_Cmnd *);
 static int ibmmca_host_reset (Scsi_Cmnd *);
 static int ibmmca_biosparam (struct scsi_device *, struct block_device *, sector_t, int *);
-static int ibmmca_proc_info(struct Scsi_Host *shpnt, char *buffer, char **start, off_t offset, int length, int inout);
+static const struct file_operations ibmmca_proc_fops;
 
 
 
@@ -1490,7 +1491,7 @@ static int ibmmca_getinfo(char *buf, int slot, void *dev_id)
 
 static struct scsi_host_template ibmmca_driver_template = {
           .proc_name      = "ibmmca",
-	  .proc_info	  = ibmmca_proc_info,
+	  .proc_fops	  = &ibmmca_proc_fops,
           .name           = "IBM SCSI-Subsystem",
           .queuecommand   = ibmmca_queuecommand,
 	  .eh_abort_handler = ibmmca_abort,
@@ -2260,9 +2261,9 @@ static int ldn_access_total_modeselect(struct Scsi_Host *shpnt)
 }
 
 /* routine to display info in the proc-fs-structure (a deluxe feature) */
-static int ibmmca_proc_info(struct Scsi_Host *shpnt, char *buffer, char **start, off_t offset, int length, int inout)
+static int ibmmca_proc_show(struct seq_file *m, void *v)
 {
-	int len = 0;
+	struct Scsi_Host *shpnt = m->private;
 	int i, id, lun;
 	unsigned long flags;
 	int max_pun;
@@ -2272,64 +2273,73 @@ static int ibmmca_proc_info(struct Scsi_Host *shpnt, char *buffer, char **start,
 
 	max_pun = subsystem_maxid(shpnt);
 
-	len += sprintf(buffer + len, "\n             IBM-SCSI-Subsystem-Linux-Driver, Version %s\n\n\n", IBMMCA_SCSI_DRIVER_VERSION);
-	len += sprintf(buffer + len, " SCSI Access-Statistics:\n");
-	len += sprintf(buffer + len, "               Device Scanning Order....: %s\n", (ibm_ansi_order) ? "IBM/ANSI" : "New Industry Standard");
+	seq_printf(m, "\n             IBM-SCSI-Subsystem-Linux-Driver, Version %s\n\n\n", IBMMCA_SCSI_DRIVER_VERSION);
+	seq_printf(m, " SCSI Access-Statistics:\n");
+	seq_printf(m, "               Device Scanning Order....: %s\n", (ibm_ansi_order) ? "IBM/ANSI" : "New Industry Standard");
 #ifdef CONFIG_SCSI_MULTI_LUN
-	len += sprintf(buffer + len, "               Multiple LUN probing.....: Yes\n");
+	seq_printf(m, "               Multiple LUN probing.....: Yes\n");
 #else
-	len += sprintf(buffer + len, "               Multiple LUN probing.....: No\n");
+	seq_printf(m, "               Multiple LUN probing.....: No\n");
 #endif
-	len += sprintf(buffer + len, "               This Hostnumber..........: %d\n", shpnt->host_no);
-	len += sprintf(buffer + len, "               Base I/O-Port............: 0x%x\n", (unsigned int) (IM_CMD_REG(shpnt)));
-	len += sprintf(buffer + len, "               (Shared) IRQ.............: %d\n", IM_IRQ);
-	len += sprintf(buffer + len, "               Total Interrupts.........: %d\n", IBM_DS(shpnt).total_interrupts);
-	len += sprintf(buffer + len, "               Total SCSI Accesses......: %d\n", IBM_DS(shpnt).total_accesses);
-	len += sprintf(buffer + len, "               Total short SCBs.........: %d\n", IBM_DS(shpnt).scbs);
-	len += sprintf(buffer + len, "               Total long SCBs..........: %d\n", IBM_DS(shpnt).long_scbs);
-	len += sprintf(buffer + len, "                 Total SCSI READ/WRITE..: %d\n", ldn_access_total_read_write(shpnt));
-	len += sprintf(buffer + len, "                 Total SCSI Inquiries...: %d\n", ldn_access_total_inquiry(shpnt));
-	len += sprintf(buffer + len, "                 Total SCSI Modeselects.: %d\n", ldn_access_total_modeselect(shpnt));
-	len += sprintf(buffer + len, "                 Total SCSI other cmds..: %d\n", IBM_DS(shpnt).total_accesses - ldn_access_total_read_write(shpnt)
+	seq_printf(m, "               This Hostnumber..........: %d\n", shpnt->host_no);
+	seq_printf(m, "               Base I/O-Port............: 0x%x\n", (unsigned int) (IM_CMD_REG(shpnt)));
+	seq_printf(m, "               (Shared) IRQ.............: %d\n", IM_IRQ);
+	seq_printf(m, "               Total Interrupts.........: %d\n", IBM_DS(shpnt).total_interrupts);
+	seq_printf(m, "               Total SCSI Accesses......: %d\n", IBM_DS(shpnt).total_accesses);
+	seq_printf(m, "               Total short SCBs.........: %d\n", IBM_DS(shpnt).scbs);
+	seq_printf(m, "               Total long SCBs..........: %d\n", IBM_DS(shpnt).long_scbs);
+	seq_printf(m, "                 Total SCSI READ/WRITE..: %d\n", ldn_access_total_read_write(shpnt));
+	seq_printf(m, "                 Total SCSI Inquiries...: %d\n", ldn_access_total_inquiry(shpnt));
+	seq_printf(m, "                 Total SCSI Modeselects.: %d\n", ldn_access_total_modeselect(shpnt));
+	seq_printf(m, "                 Total SCSI other cmds..: %d\n", IBM_DS(shpnt).total_accesses - ldn_access_total_read_write(shpnt)
 		       - ldn_access_total_modeselect(shpnt)
 		       - ldn_access_total_inquiry(shpnt));
-	len += sprintf(buffer + len, "               Total SCSI command fails.: %d\n\n", IBM_DS(shpnt).total_errors);
-	len += sprintf(buffer + len, " Logical-Device-Number (LDN) Access-Statistics:\n");
-	len += sprintf(buffer + len, "         LDN | Accesses [%%] |   READ    |   WRITE   | ASSIGNMENTS\n");
-	len += sprintf(buffer + len, "        -----|--------------|-----------|-----------|--------------\n");
+	seq_printf(m, "               Total SCSI command fails.: %d\n\n", IBM_DS(shpnt).total_errors);
+	seq_printf(m, " Logical-Device-Number (LDN) Access-Statistics:\n");
+	seq_printf(m, "         LDN | Accesses [%%] |   READ    |   WRITE   | ASSIGNMENTS\n");
+	seq_printf(m, "        -----|--------------|-----------|-----------|--------------\n");
 	for (i = 0; i <= MAX_LOG_DEV; i++)
-		len += sprintf(buffer + len, "         %2X  |    %3d       |  %8d |  %8d | %8d\n", i, ldn_access_load(shpnt, i), IBM_DS(shpnt).ldn_read_access[i], IBM_DS(shpnt).ldn_write_access[i], IBM_DS(shpnt).ldn_assignments[i]);
-	len += sprintf(buffer + len, "        -----------------------------------------------------------\n\n");
-	len += sprintf(buffer + len, " Dynamical-LDN-Assignment-Statistics:\n");
-	len += sprintf(buffer + len, "               Number of physical SCSI-devices..: %d (+ Adapter)\n", IBM_DS(shpnt).total_scsi_devices);
-	len += sprintf(buffer + len, "               Dynamical Assignment necessary...: %s\n", IBM_DS(shpnt).dyn_flag ? "Yes" : "No ");
-	len += sprintf(buffer + len, "               Next LDN to be assigned..........: 0x%x\n", next_ldn(shpnt));
-	len += sprintf(buffer + len, "               Dynamical assignments done yet...: %d\n", IBM_DS(shpnt).dynamical_assignments);
-	len += sprintf(buffer + len, "\n Current SCSI-Device-Mapping:\n");
-	len += sprintf(buffer + len, "        Physical SCSI-Device Map               Logical SCSI-Device Map\n");
-	len += sprintf(buffer + len, "    ID\\LUN  0  1  2  3  4  5  6  7       ID\\LUN  0  1  2  3  4  5  6  7\n");
+		seq_printf(m, "         %2X  |    %3d       |  %8d |  %8d | %8d\n", i, ldn_access_load(shpnt, i), IBM_DS(shpnt).ldn_read_access[i], IBM_DS(shpnt).ldn_write_access[i], IBM_DS(shpnt).ldn_assignments[i]);
+	seq_printf(m, "        -----------------------------------------------------------\n\n");
+	seq_printf(m, " Dynamical-LDN-Assignment-Statistics:\n");
+	seq_printf(m, "               Number of physical SCSI-devices..: %d (+ Adapter)\n", IBM_DS(shpnt).total_scsi_devices);
+	seq_printf(m, "               Dynamical Assignment necessary...: %s\n", IBM_DS(shpnt).dyn_flag ? "Yes" : "No ");
+	seq_printf(m, "               Next LDN to be assigned..........: 0x%x\n", next_ldn(shpnt));
+	seq_printf(m, "               Dynamical assignments done yet...: %d\n", IBM_DS(shpnt).dynamical_assignments);
+	seq_printf(m, "\n Current SCSI-Device-Mapping:\n");
+	seq_printf(m, "        Physical SCSI-Device Map               Logical SCSI-Device Map\n");
+	seq_printf(m, "    ID\\LUN  0  1  2  3  4  5  6  7       ID\\LUN  0  1  2  3  4  5  6  7\n");
 	for (id = 0; id < max_pun; id++) {
-		len += sprintf(buffer + len, "    %2d     ", id);
+		seq_printf(m, "    %2d     ", id);
 		for (lun = 0; lun < 8; lun++)
-			len += sprintf(buffer + len, "%2s ", ti_p(get_scsi(shpnt)[id][lun]));
-		len += sprintf(buffer + len, "      %2d     ", id);
+			seq_printf(m, "%2s ", ti_p(get_scsi(shpnt)[id][lun]));
+		seq_printf(m, "      %2d     ", id);
 		for (lun = 0; lun < 8; lun++)
-			len += sprintf(buffer + len, "%2s ", ti_l(get_ldn(shpnt)[id][lun]));
-		len += sprintf(buffer + len, "\n");
+			seq_printf(m, "%2s ", ti_l(get_ldn(shpnt)[id][lun]));
+		seq_printf(m, "\n");
 	}
 
-	len += sprintf(buffer + len, "(A = IBM-Subsystem, D = Harddisk, T = Tapedrive, P = Processor, W = WORM,\n");
-	len += sprintf(buffer + len, " R = CD-ROM, S = Scanner, M = MO-Drive, C = Medium-Changer, + = unprovided LUN,\n");
-	len += sprintf(buffer + len, " - = nothing found, nothing assigned or unprobed LUN)\n\n");
+	seq_printf(m, "(A = IBM-Subsystem, D = Harddisk, T = Tapedrive, P = Processor, W = WORM,\n");
+	seq_printf(m, " R = CD-ROM, S = Scanner, M = MO-Drive, C = Medium-Changer, + = unprovided LUN,\n");
+	seq_printf(m, " - = nothing found, nothing assigned or unprobed LUN)\n\n");
 
-	*start = buffer + offset;
-	len -= offset;
-	if (len > length)
-		len = length;
 	spin_unlock_irqrestore(shpnt->host_lock, flags);
-	return len;
+	return 0;
 }
 
+static int ibmmca_proc_open(struct inode *inode, struct file *file)
+{
+	return single_open(file, ibmmca_proc_show, PDE(inode)->data);
+}
+
+static const struct file_operations ibmmca_proc_fops = {
+	.owner		= THIS_MODULE,
+	.open		= ibmmca_proc_open,
+	.read		= seq_read,
+	.llseek		= seq_lseek,
+	.release	= single_release,
+};
+
 static int option_setup(char *str)
 {
 	int ints[IM_MAX_HOSTS];
-- 
1.6.5.2

--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]
  Powered by Linux