lkml.org 
[lkml]   [2021]   [Nov]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.15 788/917] block/ataflop: provide a helper for cleanup up an atari disk
    Date
    From: Luis Chamberlain <mcgrof@kernel.org>

    [ Upstream commit deae1138d04758c7f8939fcb8aee330bc37e3015 ]

    Instead of using two separate code paths for cleaning up an atari disk,
    use one. We take the more careful approach to check for *all* disk
    types, as is done on exit. The init path didn't have that check as
    the alternative disk types are only probed for later, they are not
    initialized by default.

    Yes, there is a shared tag for all disks.

    Signed-off-by: Luis Chamberlain <mcgrof@kernel.org>
    Link: https://lore.kernel.org/r/20210927220302.1073499-14-mcgrof@kernel.org
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/block/ataflop.c | 34 +++++++++++++++++++---------------
    1 file changed, 19 insertions(+), 15 deletions(-)

    diff --git a/drivers/block/ataflop.c b/drivers/block/ataflop.c
    index 55f6d6f6dbd34..123ad58193098 100644
    --- a/drivers/block/ataflop.c
    +++ b/drivers/block/ataflop.c
    @@ -2030,6 +2030,20 @@ static void ataflop_probe(dev_t dev)
    mutex_unlock(&ataflop_probe_lock);
    }

    +static void atari_cleanup_floppy_disk(struct atari_floppy_struct *fs)
    +{
    + int type;
    +
    + for (type = 0; type < NUM_DISK_MINORS; type++) {
    + if (!fs->disk[type])
    + continue;
    + if (fs->registered[type])
    + del_gendisk(fs->disk[type]);
    + blk_cleanup_disk(fs->disk[type]);
    + }
    + blk_mq_free_tag_set(&fs->tag_set);
    +}
    +
    static int __init atari_floppy_init (void)
    {
    int i;
    @@ -2100,10 +2114,8 @@ static int __init atari_floppy_init (void)
    return 0;

    err:
    - while (--i >= 0) {
    - blk_cleanup_disk(unit[i].disk[0]);
    - blk_mq_free_tag_set(&unit[i].tag_set);
    - }
    + while (--i >= 0)
    + atari_cleanup_floppy_disk(&unit[i]);

    unregister_blkdev(FLOPPY_MAJOR, "fd");
    out_unlock:
    @@ -2152,18 +2164,10 @@ __setup("floppy=", atari_floppy_setup);

    static void __exit atari_floppy_exit(void)
    {
    - int i, type;
    + int i;

    - for (i = 0; i < FD_MAX_UNITS; i++) {
    - for (type = 0; type < NUM_DISK_MINORS; type++) {
    - if (!unit[i].disk[type])
    - continue;
    - if (unit[i].registered[type])
    - del_gendisk(unit[i].disk[type]);
    - blk_cleanup_disk(unit[i].disk[type]);
    - }
    - blk_mq_free_tag_set(&unit[i].tag_set);
    - }
    + for (i = 0; i < FD_MAX_UNITS; i++)
    + atari_cleanup_floppy_disk(&unit[i]);
    unregister_blkdev(FLOPPY_MAJOR, "fd");

    del_timer_sync(&fd_timer);
    --
    2.33.0


    \
     
     \ /
      Last update: 2021-11-16 01:45    [W:2.580 / U:0.844 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site