Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

gdth: switch to ->show_info()

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>

Al Viro 3e0552ee 408bb25b

+52 -170
+2 -1
drivers/scsi/gdth.c
··· 4676 4676 .eh_bus_reset_handler = gdth_eh_bus_reset, 4677 4677 .slave_configure = gdth_slave_configure, 4678 4678 .bios_param = gdth_bios_param, 4679 - .proc_info = gdth_proc_info, 4679 + .show_info = gdth_show_info, 4680 + .write_info = gdth_set_info, 4680 4681 .eh_timed_out = gdth_timed_out, 4681 4682 .proc_name = "gdth", 4682 4683 .can_queue = GDTH_MAXCMDS,
+2 -1
drivers/scsi/gdth.h
··· 1007 1007 1008 1008 /* function prototyping */ 1009 1009 1010 - int gdth_proc_info(struct Scsi_Host *, char *,char **,off_t,int,int); 1010 + int gdth_show_info(struct seq_file *, struct Scsi_Host *); 1011 + int gdth_set_info(struct Scsi_Host *, char *, int); 1011 1012 1012 1013 #endif
+48 -163
drivers/scsi/gdth_proc.c
··· 5 5 #include <linux/completion.h> 6 6 #include <linux/slab.h> 7 7 8 - int gdth_proc_info(struct Scsi_Host *host, char *buffer,char **start,off_t offset,int length, 9 - int inout) 8 + int gdth_set_info(struct Scsi_Host *host, char *buffer, int length) 10 9 { 11 10 gdth_ha_str *ha = shost_priv(host); 12 - 13 - TRACE2(("gdth_proc_info() length %d offs %d inout %d\n", 14 - length,(int)offset,inout)); 15 - 16 - if (inout) 17 - return(gdth_set_info(buffer,length,host,ha)); 18 - else 19 - return(gdth_get_info(buffer,start,offset,length,host,ha)); 20 - } 21 - 22 - static int gdth_set_info(char *buffer,int length,struct Scsi_Host *host, 23 - gdth_ha_str *ha) 24 - { 25 11 int ret_val = -EINVAL; 26 12 27 13 TRACE2(("gdth_set_info() ha %d\n",ha->hanum,)); ··· 135 149 return(-EINVAL); 136 150 } 137 151 138 - static int gdth_get_info(char *buffer,char **start,off_t offset,int length, 139 - struct Scsi_Host *host, gdth_ha_str *ha) 152 + int gdth_show_info(struct seq_file *m, struct Scsi_Host *host) 140 153 { 141 - int size = 0,len = 0; 154 + gdth_ha_str *ha = shost_priv(host); 142 155 int hlen; 143 - off_t begin = 0,pos = 0; 144 156 int id, i, j, k, sec, flag; 145 157 int no_mdrv = 0, drv_no, is_mirr; 146 158 u32 cnt; ··· 173 189 /* request is i.e. "cat /proc/scsi/gdth/0" */ 174 190 /* format: %-15s\t%-10s\t%-15s\t%s */ 175 191 /* driver parameters */ 176 - size = sprintf(buffer+len,"Driver Parameters:\n"); 177 - len += size; pos = begin + len; 192 + seq_printf(m, "Driver Parameters:\n"); 178 193 if (reserve_list[0] == 0xff) 179 194 strcpy(hrec, "--"); 180 195 else { ··· 184 201 hlen += snprintf(hrec + hlen , 161 - hlen, ",%d", reserve_list[i]); 185 202 } 186 203 } 187 - size = sprintf(buffer+len, 204 + seq_printf(m, 188 205 " reserve_mode: \t%d \treserve_list: \t%s\n", 189 206 reserve_mode, hrec); 190 - len += size; pos = begin + len; 191 - size = sprintf(buffer+len, 207 + seq_printf(m, 192 208 " max_ids: \t%-3d \thdr_channel: \t%d\n", 193 209 max_ids, hdr_channel); 194 - len += size; pos = begin + len; 195 210 196 211 /* controller information */ 197 - size = sprintf(buffer+len,"\nDisk Array Controller Information:\n"); 198 - len += size; pos = begin + len; 199 - strcpy(hrec, ha->binfo.type_string); 200 - size = sprintf(buffer+len, 212 + seq_printf(m,"\nDisk Array Controller Information:\n"); 213 + seq_printf(m, 201 214 " Number: \t%d \tName: \t%s\n", 202 - ha->hanum, hrec); 203 - len += size; pos = begin + len; 215 + ha->hanum, ha->binfo.type_string); 204 216 217 + seq_printf(m, 218 + " Driver Ver.: \t%-10s\tFirmware Ver.: \t", 219 + GDTH_VERSION_STR); 205 220 if (ha->more_proc) 206 - sprintf(hrec, "%d.%02d.%02d-%c%03X", 221 + seq_printf(m, "%d.%02d.%02d-%c%03X\n", 207 222 (u8)(ha->binfo.upd_fw_ver>>24), 208 223 (u8)(ha->binfo.upd_fw_ver>>16), 209 224 (u8)(ha->binfo.upd_fw_ver), 210 225 ha->bfeat.raid ? 'R':'N', 211 226 ha->binfo.upd_revision); 212 227 else 213 - sprintf(hrec, "%d.%02d", (u8)(ha->cpar.version>>8), 228 + seq_printf(m, "%d.%02d\n", (u8)(ha->cpar.version>>8), 214 229 (u8)(ha->cpar.version)); 215 - 216 - size = sprintf(buffer+len, 217 - " Driver Ver.: \t%-10s\tFirmware Ver.: \t%s\n", 218 - GDTH_VERSION_STR, hrec); 219 - len += size; pos = begin + len; 220 230 221 - if (ha->more_proc) { 231 + if (ha->more_proc) 222 232 /* more information: 1. about controller */ 223 - size = sprintf(buffer+len, 233 + seq_printf(m, 224 234 " Serial No.: \t0x%8X\tCache RAM size:\t%d KB\n", 225 235 ha->binfo.ser_no, ha->binfo.memsize / 1024); 226 - len += size; pos = begin + len; 227 - } 228 236 229 237 #ifdef GDTH_DMA_STATISTICS 230 238 /* controller statistics */ 231 - size = sprintf(buffer+len,"\nController Statistics:\n"); 232 - len += size; pos = begin + len; 233 - size = sprintf(buffer+len, 239 + seq_printf(m,"\nController Statistics:\n"); 240 + seq_printf(m, 234 241 " 32-bit DMA buffer:\t%lu\t64-bit DMA buffer:\t%lu\n", 235 242 ha->dma32_cnt, ha->dma64_cnt); 236 - len += size; pos = begin + len; 237 243 #endif 238 - 239 - if (pos < offset) { 240 - len = 0; 241 - begin = pos; 242 - } 243 - if (pos > offset + length) 244 - goto stop_output; 245 244 246 245 if (ha->more_proc) { 247 246 /* more information: 2. about physical devices */ 248 - size = sprintf(buffer+len,"\nPhysical Devices:"); 249 - len += size; pos = begin + len; 247 + seq_printf(m, "\nPhysical Devices:"); 250 248 flag = FALSE; 251 249 252 250 buf = gdth_ioctl_alloc(ha, GDTH_SCRATCH, FALSE, &paddr); ··· 273 309 strncpy(hrec+8,pdi->product,16); 274 310 strncpy(hrec+24,pdi->revision,4); 275 311 hrec[28] = 0; 276 - size = sprintf(buffer+len, 312 + seq_printf(m, 277 313 "\n Chn/ID/LUN: \t%c/%02d/%d \tName: \t%s\n", 278 314 'A'+i,pdi->target_id,pdi->lun,hrec); 279 - len += size; pos = begin + len; 280 315 flag = TRUE; 281 316 pdi->no_ldrive &= 0xffff; 282 317 if (pdi->no_ldrive == 0xffff) 283 318 strcpy(hrec,"--"); 284 319 else 285 320 sprintf(hrec,"%d",pdi->no_ldrive); 286 - size = sprintf(buffer+len, 321 + seq_printf(m, 287 322 " Capacity [MB]:\t%-6d \tTo Log. Drive: \t%s\n", 288 323 pdi->blkcnt/(1024*1024/pdi->blksize), 289 324 hrec); 290 - len += size; pos = begin + len; 291 325 } else { 292 326 pdi->devtype = 0xff; 293 327 } ··· 295 333 for (k = 0; k < pds->count; ++k) { 296 334 if (pds->list[k].tid == pdi->target_id && 297 335 pds->list[k].lun == pdi->lun) { 298 - size = sprintf(buffer+len, 336 + seq_printf(m, 299 337 " Retries: \t%-6d \tReassigns: \t%d\n", 300 338 pds->list[k].retries, 301 339 pds->list[k].reassigns); 302 - len += size; pos = begin + len; 303 340 break; 304 341 } 305 342 } ··· 316 355 pdef->sddc_type = 0x08; 317 356 318 357 if (gdth_execute(host, gdtcmd, cmnd, 30, NULL) == S_OK) { 319 - size = sprintf(buffer+len, 358 + seq_printf(m, 320 359 " Grown Defects:\t%d\n", 321 360 pdef->sddc_cnt); 322 - len += size; pos = begin + len; 323 361 } 324 362 } 325 - if (pos < offset) { 326 - len = 0; 327 - begin = pos; 328 - } 329 - if (pos > offset + length) { 330 - gdth_ioctl_free(ha, GDTH_SCRATCH, buf, paddr); 331 - goto stop_output; 332 - } 333 363 } 334 364 } 335 365 gdth_ioctl_free(ha, GDTH_SCRATCH, buf, paddr); 336 366 337 - if (!flag) { 338 - size = sprintf(buffer+len, "\n --\n"); 339 - len += size; pos = begin + len; 340 - } 367 + if (!flag) 368 + seq_printf(m, "\n --\n"); 341 369 342 370 /* 3. about logical drives */ 343 - size = sprintf(buffer+len,"\nLogical Drives:"); 344 - len += size; pos = begin + len; 371 + seq_printf(m,"\nLogical Drives:"); 345 372 flag = FALSE; 346 373 347 374 buf = gdth_ioctl_alloc(ha, GDTH_SCRATCH, FALSE, &paddr); ··· 367 418 } 368 419 369 420 if (drv_no == i) { 370 - size = sprintf(buffer+len, 421 + seq_printf(m, 371 422 "\n Number: \t%-2d \tStatus: \t%s\n", 372 423 drv_no, hrec); 373 - len += size; pos = begin + len; 374 424 flag = TRUE; 375 425 no_mdrv = pcdi->cd_ldcnt; 376 426 if (no_mdrv > 1 || pcdi->ld_slave != -1) { ··· 384 436 } else { 385 437 strcpy(hrec, "???"); 386 438 } 387 - size = sprintf(buffer+len, 439 + seq_printf(m, 388 440 " Capacity [MB]:\t%-6d \tType: \t%s\n", 389 441 pcdi->ld_blkcnt/(1024*1024/pcdi->ld_blksize), 390 442 hrec); 391 - len += size; pos = begin + len; 392 443 } else { 393 - size = sprintf(buffer+len, 444 + seq_printf(m, 394 445 " Slave Number: \t%-2d \tStatus: \t%s\n", 395 446 drv_no & 0x7fff, hrec); 396 - len += size; pos = begin + len; 397 447 } 398 448 drv_no = pcdi->ld_slave; 399 - if (pos < offset) { 400 - len = 0; 401 - begin = pos; 402 - } 403 - if (pos > offset + length) { 404 - gdth_ioctl_free(ha, GDTH_SCRATCH, buf, paddr); 405 - goto stop_output; 406 - } 407 449 } while (drv_no != -1); 408 450 409 - if (is_mirr) { 410 - size = sprintf(buffer+len, 451 + if (is_mirr) 452 + seq_printf(m, 411 453 " Missing Drv.: \t%-2d \tInvalid Drv.: \t%d\n", 412 454 no_mdrv - j - k, k); 413 - len += size; pos = begin + len; 414 - } 415 - 455 + 416 456 if (!ha->hdr[i].is_arraydrv) 417 457 strcpy(hrec, "--"); 418 458 else 419 459 sprintf(hrec, "%d", ha->hdr[i].master_no); 420 - size = sprintf(buffer+len, 460 + seq_printf(m, 421 461 " To Array Drv.:\t%s\n", hrec); 422 - len += size; pos = begin + len; 423 - if (pos < offset) { 424 - len = 0; 425 - begin = pos; 426 - } 427 - if (pos > offset + length) { 428 - gdth_ioctl_free(ha, GDTH_SCRATCH, buf, paddr); 429 - goto stop_output; 430 - } 431 462 } 432 463 gdth_ioctl_free(ha, GDTH_SCRATCH, buf, paddr); 433 464 434 - if (!flag) { 435 - size = sprintf(buffer+len, "\n --\n"); 436 - len += size; pos = begin + len; 437 - } 465 + if (!flag) 466 + seq_printf(m, "\n --\n"); 438 467 439 468 /* 4. about array drives */ 440 - size = sprintf(buffer+len,"\nArray Drives:"); 441 - len += size; pos = begin + len; 469 + seq_printf(m,"\nArray Drives:"); 442 470 flag = FALSE; 443 471 444 472 buf = gdth_ioctl_alloc(ha, GDTH_SCRATCH, FALSE, &paddr); ··· 449 525 strcat(hrec, "/expand"); 450 526 else if (pai->ai_ext_state & 0x1) 451 527 strcat(hrec, "/patch"); 452 - size = sprintf(buffer+len, 528 + seq_printf(m, 453 529 "\n Number: \t%-2d \tStatus: \t%s\n", 454 530 i,hrec); 455 - len += size; pos = begin + len; 456 531 flag = TRUE; 457 532 458 533 if (pai->ai_type == 0) ··· 462 539 strcpy(hrec, "RAID-5"); 463 540 else 464 541 strcpy(hrec, "RAID-10"); 465 - size = sprintf(buffer+len, 542 + seq_printf(m, 466 543 " Capacity [MB]:\t%-6d \tType: \t%s\n", 467 544 pai->ai_size/(1024*1024/pai->ai_secsize), 468 545 hrec); 469 - len += size; pos = begin + len; 470 - if (pos < offset) { 471 - len = 0; 472 - begin = pos; 473 - } 474 - if (pos > offset + length) { 475 - gdth_ioctl_free(ha, GDTH_SCRATCH, buf, paddr); 476 - goto stop_output; 477 - } 478 546 } 479 547 } 480 548 gdth_ioctl_free(ha, GDTH_SCRATCH, buf, paddr); 481 549 482 - if (!flag) { 483 - size = sprintf(buffer+len, "\n --\n"); 484 - len += size; pos = begin + len; 485 - } 550 + if (!flag) 551 + seq_printf(m, "\n --\n"); 486 552 487 553 /* 5. about host drives */ 488 - size = sprintf(buffer+len,"\nHost Drives:"); 489 - len += size; pos = begin + len; 554 + seq_printf(m,"\nHost Drives:"); 490 555 flag = FALSE; 491 556 492 557 buf = gdth_ioctl_alloc(ha, sizeof(gdth_hget_str), FALSE, &paddr); ··· 516 605 if (!(ha->hdr[i].present)) 517 606 continue; 518 607 519 - size = sprintf(buffer+len, 608 + seq_printf(m, 520 609 "\n Number: \t%-2d \tArr/Log. Drive:\t%d\n", 521 610 i, ha->hdr[i].ldr_no); 522 - len += size; pos = begin + len; 523 611 flag = TRUE; 524 612 525 - size = sprintf(buffer+len, 613 + seq_printf(m, 526 614 " Capacity [MB]:\t%-6d \tStart Sector: \t%d\n", 527 615 (u32)(ha->hdr[i].size/2048), ha->hdr[i].start_sec); 528 - len += size; pos = begin + len; 529 - if (pos < offset) { 530 - len = 0; 531 - begin = pos; 532 - } 533 - if (pos > offset + length) 534 - goto stop_output; 535 616 } 536 617 537 - if (!flag) { 538 - size = sprintf(buffer+len, "\n --\n"); 539 - len += size; pos = begin + len; 540 - } 618 + if (!flag) 619 + seq_printf(m, "\n --\n"); 541 620 } 542 621 543 622 /* controller events */ 544 - size = sprintf(buffer+len,"\nController Events:\n"); 545 - len += size; pos = begin + len; 623 + seq_printf(m,"\nController Events:\n"); 546 624 547 625 for (id = -1;;) { 548 626 id = gdth_read_event(ha, id, estr); ··· 543 643 do_gettimeofday(&tv); 544 644 sec = (int)(tv.tv_sec - estr->first_stamp); 545 645 if (sec < 0) sec = 0; 546 - size = sprintf(buffer+len," date- %02d:%02d:%02d\t%s\n", 646 + seq_printf(m," date- %02d:%02d:%02d\t%s\n", 547 647 sec/3600, sec%3600/60, sec%60, hrec); 548 - len += size; pos = begin + len; 549 - if (pos < offset) { 550 - len = 0; 551 - begin = pos; 552 - } 553 - if (pos > offset + length) 554 - goto stop_output; 555 648 } 556 649 if (id == -1) 557 650 break; 558 651 } 559 - 560 652 stop_output: 561 - *start = buffer +(offset-begin); 562 - len -= (offset-begin); 563 - if (len > length) 564 - len = length; 565 - TRACE2(("get_info() len %d pos %d begin %d offset %d length %d size %d\n", 566 - len,(int)pos,(int)begin,(int)offset,length,size)); 567 - rc = len; 568 - 653 + rc = 0; 569 654 free_fail: 570 655 kfree(gdtcmd); 571 656 kfree(estr);
-5
drivers/scsi/gdth_proc.h
··· 8 8 int gdth_execute(struct Scsi_Host *shost, gdth_cmd_str *gdtcmd, char *cmnd, 9 9 int timeout, u32 *info); 10 10 11 - static int gdth_set_info(char *buffer,int length,struct Scsi_Host *host, 12 - gdth_ha_str *ha); 13 - static int gdth_get_info(char *buffer,char **start,off_t offset,int length, 14 - struct Scsi_Host *host, gdth_ha_str *ha); 15 - 16 11 static int gdth_set_asc_info(struct Scsi_Host *host, char *buffer, 17 12 int length, gdth_ha_str *ha); 18 13