aha152x: switch to ->show_info()
authorAl Viro <viro@zeniv.linux.org.uk>
Sun, 31 Mar 2013 07:12:15 +0000 (03:12 -0400)
committerAl Viro <viro@zeniv.linux.org.uk>
Tue, 9 Apr 2013 18:13:22 +0000 (14:13 -0400)
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
drivers/scsi/aha152x.c

index a284be17699f32ce37e7315adbc56d512d75b19e..3f7b6fee0a74ace322495bad7bbbc6c420b15c0c 100644 (file)
@@ -2977,11 +2977,10 @@ static void show_queues(struct Scsi_Host *shpnt)
 }
 
 #undef SPRINTF
-#define SPRINTF(args...) pos += sprintf(pos, ## args)
+#define SPRINTF(args...) seq_printf(m, ##args)
 
-static int get_command(char *pos, Scsi_Cmnd * ptr)
+static void get_command(struct seq_file *m, Scsi_Cmnd * ptr)
 {
-       char *start = pos;
        int i;
 
        SPRINTF("%p: target=%d; lun=%d; cmnd=( ",
@@ -3011,13 +3010,10 @@ static int get_command(char *pos, Scsi_Cmnd * ptr)
        if (ptr->SCp.phase & syncneg)
                SPRINTF("syncneg|");
        SPRINTF("; next=0x%p\n", SCNEXT(ptr));
-
-       return (pos - start);
 }
 
-static int get_ports(struct Scsi_Host *shpnt, char *pos)
+static void get_ports(struct seq_file *m, struct Scsi_Host *shpnt)
 {
-       char *start = pos;
        int s;
 
        SPRINTF("\n%s: %s(%s) ", CURRENT_SC ? "on bus" : "waiting", states[STATE].name, states[PREVSTATE].name);
@@ -3273,11 +3269,9 @@ static int get_ports(struct Scsi_Host *shpnt, char *pos)
        if (s & ENREQINIT)
                SPRINTF("ENREQINIT ");
        SPRINTF(")\n");
-
-       return (pos - start);
 }
 
-static int aha152x_set_info(char *buffer, int length, struct Scsi_Host *shpnt)
+static int aha152x_set_info(struct Scsi_Host *shpnt, char *buffer, int length)
 {
        if(!shpnt || !buffer || length<8 || strncmp("aha152x ", buffer, 8)!=0)
                return -EINVAL;
@@ -3320,26 +3314,11 @@ static int aha152x_set_info(char *buffer, int length, struct Scsi_Host *shpnt)
        return length;
 }
 
-#undef SPRINTF
-#define SPRINTF(args...) \
-       do { if(pos < buffer + length) pos += sprintf(pos, ## args); } while(0)
-
-static int aha152x_proc_info(struct Scsi_Host *shpnt, char *buffer, char **start,
-                     off_t offset, int length, int inout)
+static int aha152x_show_info(struct seq_file *m, struct Scsi_Host *shpnt)
 {
        int i;
-       char *pos = buffer;
        Scsi_Cmnd *ptr;
        unsigned long flags;
-       int thislength;
-
-       DPRINTK(debug_procinfo, 
-              KERN_DEBUG "aha152x_proc_info: buffer=%p offset=%ld length=%d hostno=%d inout=%d\n",
-              buffer, offset, length, shpnt->host_no, inout);
-
-
-       if (inout)
-               return aha152x_set_info(buffer, length, shpnt);
 
        SPRINTF(AHA152X_REVID "\n");
 
@@ -3392,25 +3371,25 @@ static int aha152x_proc_info(struct Scsi_Host *shpnt, char *buffer, char **start
        if (ISSUE_SC) {
                SPRINTF("not yet issued commands:\n");
                for (ptr = ISSUE_SC; ptr; ptr = SCNEXT(ptr))
-                       pos += get_command(pos, ptr);
+                       get_command(m, ptr);
        } else
                SPRINTF("no not yet issued commands\n");
        DO_UNLOCK(flags);
 
        if (CURRENT_SC) {
                SPRINTF("current command:\n");
-               pos += get_command(pos, CURRENT_SC);
+               get_command(m, CURRENT_SC);
        } else
                SPRINTF("no current command\n");
 
        if (DISCONNECTED_SC) {
                SPRINTF("disconnected commands:\n");
                for (ptr = DISCONNECTED_SC; ptr; ptr = SCNEXT(ptr))
-                       pos += get_command(pos, ptr);
+                       get_command(m, ptr);
        } else
                SPRINTF("no disconnected commands\n");
 
-       pos += get_ports(shpnt, pos);
+       get_ports(m, shpnt);
 
 #if defined(AHA152X_STAT)
        SPRINTF("statistics:\n"
@@ -3440,24 +3419,7 @@ static int aha152x_proc_info(struct Scsi_Host *shpnt, char *buffer, char **start
                        HOSTDATA(shpnt)->time[i]);
        }
 #endif
-
-       DPRINTK(debug_procinfo, KERN_DEBUG "aha152x_proc_info: pos=%p\n", pos);
-
-       thislength = pos - (buffer + offset);
-       DPRINTK(debug_procinfo, KERN_DEBUG "aha152x_proc_info: length=%d thislength=%d\n", length, thislength);
-
-       if(thislength<0) {
-               DPRINTK(debug_procinfo, KERN_DEBUG "aha152x_proc_info: output too short\n");
-               *start = NULL;
-               return 0;
-       }
-
-       thislength = thislength<length ? thislength : length;
-
-       DPRINTK(debug_procinfo, KERN_DEBUG "aha152x_proc_info: return %d\n", thislength);
-
-       *start = buffer + offset;
-       return thislength < length ? thislength : length;
+       return 0;
 }
 
 static int aha152x_adjust_queue(struct scsi_device *device)
@@ -3470,7 +3432,8 @@ static struct scsi_host_template aha152x_driver_template = {
        .module                         = THIS_MODULE,
        .name                           = AHA152X_REVID,
        .proc_name                      = "aha152x",
-       .proc_info                      = aha152x_proc_info,
+       .show_info                      = aha152x_show_info,
+       .write_info                     = aha152x_set_info,
        .queuecommand                   = aha152x_queue,
        .eh_abort_handler               = aha152x_abort,
        .eh_device_reset_handler        = aha152x_device_reset,