Commit 6f84083bbb7d206c8555e5834a2c9b887452fd54

Authored by Bartlomiej Zolnierkiewicz
1 parent 8f29cd9f12

ide-floppy: use drive->capacity64 for caching current capacity

* Use drive->capacity64 for caching current capacity.

* Switch ide_floppy_capacity() to use drive->capacity64.

* Call set_capacity() in idefloppy_open() and ide_floppy_probe()
  instead of ide_floppy_get_capacity().

There should be no functional changes caused by this patch.

Cc: Borislav Petkov <petkovbb@gmail.com>
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>

Showing 1 changed file with 13 additions and 10 deletions Side-by-side Diff

drivers/ide/ide-floppy.c
... ... @@ -445,7 +445,9 @@
445 445 drive->name, lba_capacity, capacity);
446 446 floppy->blocks = floppy->block_size ?
447 447 capacity / floppy->block_size : 0;
  448 + drive->capacity64 = floppy->blocks * floppy->bs_factor;
448 449 }
  450 +
449 451 return 0;
450 452 }
451 453  
... ... @@ -466,7 +468,7 @@
466 468 drive->bios_head = drive->bios_sect = 0;
467 469 floppy->blocks = 0;
468 470 floppy->bs_factor = 1;
469   - set_capacity(floppy->disk, 0);
  471 + drive->capacity64 = 0;
470 472  
471 473 ide_floppy_create_read_capacity_cmd(&pc);
472 474 if (ide_queue_pc_tail(drive, disk, &pc)) {
... ... @@ -523,6 +525,8 @@
523 525 "non 512 bytes block size not "
524 526 "fully supported\n",
525 527 drive->name);
  528 + drive->capacity64 =
  529 + floppy->blocks * floppy->bs_factor;
526 530 rc = 0;
527 531 }
528 532 break;
529 533  
... ... @@ -547,17 +551,12 @@
547 551 if (!(drive->atapi_flags & IDE_AFLAG_CLIK_DRIVE))
548 552 (void) ide_floppy_get_flexible_disk_page(drive);
549 553  
550   - set_capacity(disk, floppy->blocks * floppy->bs_factor);
551   -
552 554 return rc;
553 555 }
554 556  
555 557 sector_t ide_floppy_capacity(ide_drive_t *drive)
556 558 {
557   - idefloppy_floppy_t *floppy = drive->driver_data;
558   - unsigned long capacity = floppy->blocks * floppy->bs_factor;
559   -
560   - return capacity;
  559 + return drive->capacity64;
561 560 }
562 561  
563 562 static void idefloppy_setup(ide_drive_t *drive)
564 563  
... ... @@ -671,14 +670,16 @@
671 670 if (ide_do_test_unit_ready(drive, disk))
672 671 ide_do_start_stop(drive, disk, 1);
673 672  
674   - if (ide_floppy_get_capacity(drive)
675   - && (filp->f_flags & O_NDELAY) == 0
  673 + ret = ide_floppy_get_capacity(drive);
  674 +
  675 + set_capacity(disk, ide_floppy_capacity(drive));
  676 +
  677 + if (ret && (filp->f_flags & O_NDELAY) == 0) {
676 678 /*
677 679 * Allow O_NDELAY to open a drive without a disk, or with an
678 680 * unreadable disk, so that we can get the format capacity
679 681 * of the drive or begin the format - Sam
680 682 */
681   - ) {
682 683 ret = -EIO;
683 684 goto out_put_floppy;
684 685 }
... ... @@ -810,6 +811,8 @@
810 811 drive->debug_mask = debug_mask;
811 812  
812 813 idefloppy_setup(drive);
  814 +
  815 + set_capacity(g, ide_floppy_capacity(drive));
813 816  
814 817 g->minors = 1 << PARTN_BITS;
815 818 g->driverfs_dev = &drive->gendev;