block.c (03ab8e6297acd1bc0eedaa050e2a1635c576fd11) block.c (8b9ab62662048a3274361c7e5f64037c2c133e2c)
1// SPDX-License-Identifier: GPL-2.0-only
2/*
3 * Copyright (c) 2014 Ezequiel Garcia
4 * Copyright (c) 2011 Free Electrons
5 *
6 * Driver parameter handling strongly based on drivers/mtd/ubi/build.c
7 * Copyright (c) International Business Machines Corp., 2006
8 * Copyright (c) Nokia Corporation, 2007

--- 453 unchanged lines hidden (view full) ---

462 return 0;
463
464out_destroy_wq:
465 list_del(&dev->list);
466 destroy_workqueue(dev->wq);
467out_remove_minor:
468 idr_remove(&ubiblock_minor_idr, gd->first_minor);
469out_cleanup_disk:
1// SPDX-License-Identifier: GPL-2.0-only
2/*
3 * Copyright (c) 2014 Ezequiel Garcia
4 * Copyright (c) 2011 Free Electrons
5 *
6 * Driver parameter handling strongly based on drivers/mtd/ubi/build.c
7 * Copyright (c) International Business Machines Corp., 2006
8 * Copyright (c) Nokia Corporation, 2007

--- 453 unchanged lines hidden (view full) ---

462 return 0;
463
464out_destroy_wq:
465 list_del(&dev->list);
466 destroy_workqueue(dev->wq);
467out_remove_minor:
468 idr_remove(&ubiblock_minor_idr, gd->first_minor);
469out_cleanup_disk:
470 blk_cleanup_disk(dev->gd);
470 put_disk(dev->gd);
471out_free_tags:
472 blk_mq_free_tag_set(&dev->tag_set);
473out_free_dev:
474 kfree(dev);
475out_unlock:
476 mutex_unlock(&devices_mutex);
477
478 return ret;
479}
480
481static void ubiblock_cleanup(struct ubiblock *dev)
482{
483 /* Stop new requests to arrive */
484 del_gendisk(dev->gd);
485 /* Flush pending work */
486 destroy_workqueue(dev->wq);
487 /* Finally destroy the blk queue */
488 dev_info(disk_to_dev(dev->gd), "released");
471out_free_tags:
472 blk_mq_free_tag_set(&dev->tag_set);
473out_free_dev:
474 kfree(dev);
475out_unlock:
476 mutex_unlock(&devices_mutex);
477
478 return ret;
479}
480
481static void ubiblock_cleanup(struct ubiblock *dev)
482{
483 /* Stop new requests to arrive */
484 del_gendisk(dev->gd);
485 /* Flush pending work */
486 destroy_workqueue(dev->wq);
487 /* Finally destroy the blk queue */
488 dev_info(disk_to_dev(dev->gd), "released");
489 blk_cleanup_disk(dev->gd);
489 put_disk(dev->gd);
490 blk_mq_free_tag_set(&dev->tag_set);
491 idr_remove(&ubiblock_minor_idr, dev->gd->first_minor);
492}
493
494int ubiblock_remove(struct ubi_volume_info *vi)
495{
496 struct ubiblock *dev;
497 int ret;

--- 211 unchanged lines hidden ---
490 blk_mq_free_tag_set(&dev->tag_set);
491 idr_remove(&ubiblock_minor_idr, dev->gd->first_minor);
492}
493
494int ubiblock_remove(struct ubi_volume_info *vi)
495{
496 struct ubiblock *dev;
497 int ret;

--- 211 unchanged lines hidden ---