[PATCH] null_blk: add helper for deleting the nullb_list

Chaitanya Kulkarni
2020-07-01T04:26:57Z

The nullb_list is destroyed when error occurs in the null_init() and
when removing the module in null_exit(). The identical code is repeated
in those functions which can be a part of helper function. This also
removes the extra variable struct nullb *nullb in the both functions.
---
drivers/block/null_blk_main.c | 32 +++++++++++++++-----------------
1 file changed, 15 insertions(+), 17 deletions(-)

diff --git a/drivers/block/null_blk_main.c b/drivers/block/null_blk_main.c
index 82259242b9b5..870290f686ae 100644
--- a/drivers/block/null_blk_main.c
+++ b/drivers/block/null_blk_main.c
@@ -1859,11 +1859,23 @@ static int null_add_dev(struct nullb_device *dev)
return rv;
}

+static void null_delete_nullb_list(void)
+{
+ struct nullb_device *dev;
+ struct nullb *nullb;
+
+ while (!list_empty(&nullb_list)) {
+ nullb = list_entry(nullb_list.next, struct nullb, list);
+ dev = nullb->dev;
+ null_del_dev(nullb);
+ null_free_dev(dev);
+ }
+}
+
static int __init null_init(void)
{
int ret = 0;
unsigned int i;
- struct nullb *nullb;
struct nullb_device *dev;

if (g_bs > PAGE_SIZE) {
@@ -1930,12 +1942,7 @@ static int __init null_init(void)
return 0;

err_dev:
- while (!list_empty(&nullb_list)) {
- nullb = list_entry(nullb_list.next, struct nullb, list);
- dev = nullb->dev;
- null_del_dev(nullb);
- null_free_dev(dev);
- }
+ null_delete_nullb_list();
unregister_blkdev(null_major, "nullb");
err_conf:
configfs_unregister_subsystem(&nullb_subsys);
@@ -1947,21 +1954,12 @@ static int __init null_init(void)

static void __exit null_exit(void)
{
- struct nullb *nullb;
-
configfs_unregister_subsystem(&nullb_subsys);

unregister_blkdev(null_major, "nullb");

mutex_lock(&lock);
- while (!list_empty(&nullb_list)) {
- struct nullb_device *dev;
-
- nullb = list_entry(nullb_list.next, struct nullb, list);
- dev = nullb->dev;
- null_del_dev(nullb);
- null_free_dev(dev);
- }
+ null_delete_nullb_list();
mutex_unlock(&lock);

if (g_queue_mode == NULL_Q_MQ && shared_tags)
--
2.26.0