Loading drivers/block/cciss_scsi.c +45 −51 Original line number Diff line number Diff line Loading @@ -54,13 +54,11 @@ static CommandList_struct *cmd_special_alloc(ctlr_info_t *h); static void cmd_free(ctlr_info_t *h, CommandList_struct *c); static void cmd_special_free(ctlr_info_t *h, CommandList_struct *c); static int cciss_scsi_proc_info( struct Scsi_Host *sh, static int cciss_scsi_write_info(struct Scsi_Host *sh, char *buffer, /* data buffer */ char **start, /* where data in buffer starts */ off_t offset, /* offset from start of imaginary file */ int length, /* length of data in buffer */ int func); /* 0 == read, 1 == write */ int length); /* length of data in buffer */ static int cciss_scsi_show_info(struct seq_file *m, struct Scsi_Host *sh); static int cciss_scsi_queue_command (struct Scsi_Host *h, struct scsi_cmnd *cmd); Loading @@ -82,7 +80,8 @@ static struct scsi_host_template cciss_driver_template = { .module = THIS_MODULE, .name = "cciss", .proc_name = "cciss", .proc_info = cciss_scsi_proc_info, .write_info = cciss_scsi_write_info, .show_info = cciss_scsi_show_info, .queuecommand = cciss_scsi_queue_command, .this_id = 7, .cmd_per_lun = 1, Loading Loading @@ -1302,26 +1301,30 @@ cciss_scsi_user_command(ctlr_info_t *h, int hostno, char *buffer, int length) return length; } static int cciss_scsi_proc_info(struct Scsi_Host *sh, cciss_scsi_write_info(struct Scsi_Host *sh, char *buffer, /* data buffer */ char **start, /* where data in buffer starts */ off_t offset, /* offset from start of imaginary file */ int length, /* length of data in buffer */ int func) /* 0 == read, 1 == write */ int length) /* length of data in buffer */ { ctlr_info_t *h = (ctlr_info_t *) sh->hostdata[0]; if (h == NULL) /* This really shouldn't ever happen. */ return -EINVAL; int buflen, datalen; ctlr_info_t *h; return cciss_scsi_user_command(h, sh->host_no, buffer, length); } static int cciss_scsi_show_info(struct seq_file *m, struct Scsi_Host *sh) { ctlr_info_t *h = (ctlr_info_t *) sh->hostdata[0]; int i; h = (ctlr_info_t *) sh->hostdata[0]; if (h == NULL) /* This really shouldn't ever happen. */ return -EINVAL; if (func == 0) { /* User is reading from /proc/scsi/ciss*?/?* */ buflen = sprintf(buffer, "cciss%d: SCSI host: %d\n", seq_printf(m, "cciss%d: SCSI host: %d\n", h->ctlr, sh->host_no); /* this information is needed by apps to know which cciss Loading @@ -1335,7 +1338,7 @@ cciss_scsi_proc_info(struct Scsi_Host *sh, for (i = 0; i < ccissscsi[h->ctlr].ndevices; i++) { struct cciss_scsi_dev_t *sd = &ccissscsi[h->ctlr].dev[i]; buflen += sprintf(&buffer[buflen], "c%db%dt%dl%d %02d " seq_printf(m, "c%db%dt%dl%d %02d " "0x%02x%02x%02x%02x%02x%02x%02x%02x\n", sh->host_no, sd->bus, sd->target, sd->lun, sd->devtype, Loading @@ -1344,16 +1347,7 @@ cciss_scsi_proc_info(struct Scsi_Host *sh, sd->scsi3addr[4], sd->scsi3addr[5], sd->scsi3addr[6], sd->scsi3addr[7]); } datalen = buflen - offset; if (datalen < 0) { /* they're reading past EOF. */ datalen = 0; *start = buffer+buflen; } else *start = buffer + offset; return(datalen); } else /* User is writing to /proc/scsi/cciss*?/?* ... */ return cciss_scsi_user_command(h, sh->host_no, buffer, length); return 0; } /* cciss_scatter_gather takes a struct scsi_cmnd, (cmd), and does the pci Loading Loading
drivers/block/cciss_scsi.c +45 −51 Original line number Diff line number Diff line Loading @@ -54,13 +54,11 @@ static CommandList_struct *cmd_special_alloc(ctlr_info_t *h); static void cmd_free(ctlr_info_t *h, CommandList_struct *c); static void cmd_special_free(ctlr_info_t *h, CommandList_struct *c); static int cciss_scsi_proc_info( struct Scsi_Host *sh, static int cciss_scsi_write_info(struct Scsi_Host *sh, char *buffer, /* data buffer */ char **start, /* where data in buffer starts */ off_t offset, /* offset from start of imaginary file */ int length, /* length of data in buffer */ int func); /* 0 == read, 1 == write */ int length); /* length of data in buffer */ static int cciss_scsi_show_info(struct seq_file *m, struct Scsi_Host *sh); static int cciss_scsi_queue_command (struct Scsi_Host *h, struct scsi_cmnd *cmd); Loading @@ -82,7 +80,8 @@ static struct scsi_host_template cciss_driver_template = { .module = THIS_MODULE, .name = "cciss", .proc_name = "cciss", .proc_info = cciss_scsi_proc_info, .write_info = cciss_scsi_write_info, .show_info = cciss_scsi_show_info, .queuecommand = cciss_scsi_queue_command, .this_id = 7, .cmd_per_lun = 1, Loading Loading @@ -1302,26 +1301,30 @@ cciss_scsi_user_command(ctlr_info_t *h, int hostno, char *buffer, int length) return length; } static int cciss_scsi_proc_info(struct Scsi_Host *sh, cciss_scsi_write_info(struct Scsi_Host *sh, char *buffer, /* data buffer */ char **start, /* where data in buffer starts */ off_t offset, /* offset from start of imaginary file */ int length, /* length of data in buffer */ int func) /* 0 == read, 1 == write */ int length) /* length of data in buffer */ { ctlr_info_t *h = (ctlr_info_t *) sh->hostdata[0]; if (h == NULL) /* This really shouldn't ever happen. */ return -EINVAL; int buflen, datalen; ctlr_info_t *h; return cciss_scsi_user_command(h, sh->host_no, buffer, length); } static int cciss_scsi_show_info(struct seq_file *m, struct Scsi_Host *sh) { ctlr_info_t *h = (ctlr_info_t *) sh->hostdata[0]; int i; h = (ctlr_info_t *) sh->hostdata[0]; if (h == NULL) /* This really shouldn't ever happen. */ return -EINVAL; if (func == 0) { /* User is reading from /proc/scsi/ciss*?/?* */ buflen = sprintf(buffer, "cciss%d: SCSI host: %d\n", seq_printf(m, "cciss%d: SCSI host: %d\n", h->ctlr, sh->host_no); /* this information is needed by apps to know which cciss Loading @@ -1335,7 +1338,7 @@ cciss_scsi_proc_info(struct Scsi_Host *sh, for (i = 0; i < ccissscsi[h->ctlr].ndevices; i++) { struct cciss_scsi_dev_t *sd = &ccissscsi[h->ctlr].dev[i]; buflen += sprintf(&buffer[buflen], "c%db%dt%dl%d %02d " seq_printf(m, "c%db%dt%dl%d %02d " "0x%02x%02x%02x%02x%02x%02x%02x%02x\n", sh->host_no, sd->bus, sd->target, sd->lun, sd->devtype, Loading @@ -1344,16 +1347,7 @@ cciss_scsi_proc_info(struct Scsi_Host *sh, sd->scsi3addr[4], sd->scsi3addr[5], sd->scsi3addr[6], sd->scsi3addr[7]); } datalen = buflen - offset; if (datalen < 0) { /* they're reading past EOF. */ datalen = 0; *start = buffer+buflen; } else *start = buffer + offset; return(datalen); } else /* User is writing to /proc/scsi/cciss*?/?* ... */ return cciss_scsi_user_command(h, sh->host_no, buffer, length); return 0; } /* cciss_scatter_gather takes a struct scsi_cmnd, (cmd), and does the pci Loading