Commit 6f84083bbb7d206c8555e5834a2c9b887452fd54
1 parent
8f29cd9f12
Exists in
master
and in
4 other branches
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; |