Loading drivers/scsi/dpt_i2o.c +12 −90 Original line number Diff line number Diff line Loading @@ -553,36 +553,14 @@ static const char *adpt_info(struct Scsi_Host *host) return (char *) (pHba->detail); } static int adpt_proc_info(struct Scsi_Host *host, char *buffer, char **start, off_t offset, int length, int inout) static int adpt_show_info(struct seq_file *m, struct Scsi_Host *host) { struct adpt_device* d; int id; int chan; int len = 0; int begin = 0; int pos = 0; adpt_hba* pHba; int unit; *start = buffer; if (inout == TRUE) { /* * The user has done a write and wants us to take the * data in the buffer and do something with it. * proc_scsiwrite calls us with inout = 1 * * Read data from buffer (writing to us) - NOT SUPPORTED */ return -EINVAL; } /* * inout = 0 means the user has done a read and wants information * returned, so we write information about the cards into the buffer * proc_scsiread() calls us with inout = 0 */ // Find HBA (host bus adapter) we are looking for mutex_lock(&adpt_configuration_lock); for (pHba = hba_chain; pHba; pHba = pHba->next) { Loading @@ -596,86 +574,30 @@ static int adpt_proc_info(struct Scsi_Host *host, char *buffer, char **start, of } host = pHba->host; len = sprintf(buffer , "Adaptec I2O RAID Driver Version: %s\n\n", DPT_I2O_VERSION); len += sprintf(buffer+len, "%s\n", pHba->detail); len += sprintf(buffer+len, "SCSI Host=scsi%d Control Node=/dev/%s irq=%d\n", seq_printf(m, "Adaptec I2O RAID Driver Version: %s\n\n", DPT_I2O_VERSION); seq_printf(m, "%s\n", pHba->detail); seq_printf(m, "SCSI Host=scsi%d Control Node=/dev/%s irq=%d\n", pHba->host->host_no, pHba->name, host->irq); len += sprintf(buffer+len, "\tpost fifo size = %d\n\treply fifo size = %d\n\tsg table size = %d\n\n", seq_printf(m, "\tpost fifo size = %d\n\treply fifo size = %d\n\tsg table size = %d\n\n", host->can_queue, (int) pHba->reply_fifo_size , host->sg_tablesize); pos = begin + len; /* CHECKPOINT */ if(pos > offset + length) { goto stop_output; } if(pos <= offset) { /* * If we haven't even written to where we last left * off (the last time we were called), reset the * beginning pointer. */ len = 0; begin = pos; } len += sprintf(buffer+len, "Devices:\n"); seq_printf(m, "Devices:\n"); for(chan = 0; chan < MAX_CHANNEL; chan++) { for(id = 0; id < MAX_ID; id++) { d = pHba->channel[chan].device[id]; while(d) { len += sprintf(buffer+len,"\t%-24.24s", d->pScsi_dev->vendor); len += sprintf(buffer+len," Rev: %-8.8s\n", d->pScsi_dev->rev); pos = begin + len; /* CHECKPOINT */ if(pos > offset + length) { goto stop_output; } if(pos <= offset) { len = 0; begin = pos; } seq_printf(m,"\t%-24.24s", d->pScsi_dev->vendor); seq_printf(m," Rev: %-8.8s\n", d->pScsi_dev->rev); unit = d->pI2o_dev->lct_data.tid; len += sprintf(buffer+len, "\tTID=%d, (Channel=%d, Target=%d, Lun=%d) (%s)\n\n", seq_printf(m, "\tTID=%d, (Channel=%d, Target=%d, Lun=%d) (%s)\n\n", unit, (int)d->scsi_channel, (int)d->scsi_id, (int)d->scsi_lun, scsi_device_online(d->pScsi_dev)? "online":"offline"); pos = begin + len; /* CHECKPOINT */ if(pos > offset + length) { goto stop_output; } if(pos <= offset) { len = 0; begin = pos; } d = d->next_lun; } } } /* * begin is where we last checked our position with regards to offset * begin is always less than offset. len is relative to begin. It * is the number of bytes written past begin * */ stop_output: /* stop the output and calculate the correct length */ *(buffer + len) = '\0'; *start = buffer + (offset - begin); /* Start of wanted data */ len -= (offset - begin); if(len > length) { len = length; } else if(len < 0){ len = 0; **start = '\0'; } return len; return 0; } /* Loading Loading @@ -3639,7 +3561,7 @@ static struct scsi_host_template driver_template = { .module = THIS_MODULE, .name = "dpt_i2o", .proc_name = "dpt_i2o", .proc_info = adpt_proc_info, .show_info = adpt_show_info, .info = adpt_info, .queuecommand = adpt_queue, .eh_abort_handler = adpt_abort, Loading Loading
drivers/scsi/dpt_i2o.c +12 −90 Original line number Diff line number Diff line Loading @@ -553,36 +553,14 @@ static const char *adpt_info(struct Scsi_Host *host) return (char *) (pHba->detail); } static int adpt_proc_info(struct Scsi_Host *host, char *buffer, char **start, off_t offset, int length, int inout) static int adpt_show_info(struct seq_file *m, struct Scsi_Host *host) { struct adpt_device* d; int id; int chan; int len = 0; int begin = 0; int pos = 0; adpt_hba* pHba; int unit; *start = buffer; if (inout == TRUE) { /* * The user has done a write and wants us to take the * data in the buffer and do something with it. * proc_scsiwrite calls us with inout = 1 * * Read data from buffer (writing to us) - NOT SUPPORTED */ return -EINVAL; } /* * inout = 0 means the user has done a read and wants information * returned, so we write information about the cards into the buffer * proc_scsiread() calls us with inout = 0 */ // Find HBA (host bus adapter) we are looking for mutex_lock(&adpt_configuration_lock); for (pHba = hba_chain; pHba; pHba = pHba->next) { Loading @@ -596,86 +574,30 @@ static int adpt_proc_info(struct Scsi_Host *host, char *buffer, char **start, of } host = pHba->host; len = sprintf(buffer , "Adaptec I2O RAID Driver Version: %s\n\n", DPT_I2O_VERSION); len += sprintf(buffer+len, "%s\n", pHba->detail); len += sprintf(buffer+len, "SCSI Host=scsi%d Control Node=/dev/%s irq=%d\n", seq_printf(m, "Adaptec I2O RAID Driver Version: %s\n\n", DPT_I2O_VERSION); seq_printf(m, "%s\n", pHba->detail); seq_printf(m, "SCSI Host=scsi%d Control Node=/dev/%s irq=%d\n", pHba->host->host_no, pHba->name, host->irq); len += sprintf(buffer+len, "\tpost fifo size = %d\n\treply fifo size = %d\n\tsg table size = %d\n\n", seq_printf(m, "\tpost fifo size = %d\n\treply fifo size = %d\n\tsg table size = %d\n\n", host->can_queue, (int) pHba->reply_fifo_size , host->sg_tablesize); pos = begin + len; /* CHECKPOINT */ if(pos > offset + length) { goto stop_output; } if(pos <= offset) { /* * If we haven't even written to where we last left * off (the last time we were called), reset the * beginning pointer. */ len = 0; begin = pos; } len += sprintf(buffer+len, "Devices:\n"); seq_printf(m, "Devices:\n"); for(chan = 0; chan < MAX_CHANNEL; chan++) { for(id = 0; id < MAX_ID; id++) { d = pHba->channel[chan].device[id]; while(d) { len += sprintf(buffer+len,"\t%-24.24s", d->pScsi_dev->vendor); len += sprintf(buffer+len," Rev: %-8.8s\n", d->pScsi_dev->rev); pos = begin + len; /* CHECKPOINT */ if(pos > offset + length) { goto stop_output; } if(pos <= offset) { len = 0; begin = pos; } seq_printf(m,"\t%-24.24s", d->pScsi_dev->vendor); seq_printf(m," Rev: %-8.8s\n", d->pScsi_dev->rev); unit = d->pI2o_dev->lct_data.tid; len += sprintf(buffer+len, "\tTID=%d, (Channel=%d, Target=%d, Lun=%d) (%s)\n\n", seq_printf(m, "\tTID=%d, (Channel=%d, Target=%d, Lun=%d) (%s)\n\n", unit, (int)d->scsi_channel, (int)d->scsi_id, (int)d->scsi_lun, scsi_device_online(d->pScsi_dev)? "online":"offline"); pos = begin + len; /* CHECKPOINT */ if(pos > offset + length) { goto stop_output; } if(pos <= offset) { len = 0; begin = pos; } d = d->next_lun; } } } /* * begin is where we last checked our position with regards to offset * begin is always less than offset. len is relative to begin. It * is the number of bytes written past begin * */ stop_output: /* stop the output and calculate the correct length */ *(buffer + len) = '\0'; *start = buffer + (offset - begin); /* Start of wanted data */ len -= (offset - begin); if(len > length) { len = length; } else if(len < 0){ len = 0; **start = '\0'; } return len; return 0; } /* Loading Loading @@ -3639,7 +3561,7 @@ static struct scsi_host_template driver_template = { .module = THIS_MODULE, .name = "dpt_i2o", .proc_name = "dpt_i2o", .proc_info = adpt_proc_info, .show_info = adpt_show_info, .info = adpt_info, .queuecommand = adpt_queue, .eh_abort_handler = adpt_abort, Loading