md: raid1/raid10: drop pending_cnt
authorMariusz Tkaczyk <mariusz.tkaczyk@linux.intel.com>
Mon, 17 Jan 2022 11:38:47 +0000 (12:38 +0100)
committerSong Liu <song@kernel.org>
Tue, 8 Mar 2022 23:16:54 +0000 (15:16 -0800)
Those counters are not necessary after commit 11bb45e8aaf6 ("md: drop queue
limitation for RAID1 and RAID10"). Remove them from all code (conf and
plug structs). raid1_plug_cb and raid10_plug_cb are identical, so move
definition of raid1_plug_cb to common raid1-10 definitions and use it for
RAID10 too.

Signed-off-by: Mariusz Tkaczyk <mariusz.tkaczyk@linux.intel.com>
Signed-off-by: Song Liu <song@kernel.org>
drivers/md/raid1-10.c
drivers/md/raid1.c
drivers/md/raid1.h
drivers/md/raid10.c
drivers/md/raid10.h

index 83f9a4f3d82e01631de00d87bdff6af0dbf8adab..e61f6cad4e08e9bef57faaecfef4305f1a621200 100644 (file)
@@ -28,6 +28,11 @@ struct resync_pages {
        struct page     *pages[RESYNC_PAGES];
 };
 
+struct raid1_plug_cb {
+       struct blk_plug_cb      cb;
+       struct bio_list         pending;
+};
+
 static void rbio_pool_free(void *rbio, void *data)
 {
        kfree(rbio);
index c3288d46948ded595223e2c5066338aff67c93af..0fb4d252034b954b4d5de905d549dddce6ece199 100644 (file)
@@ -824,7 +824,6 @@ static void flush_pending_writes(struct r1conf *conf)
                struct bio *bio;
 
                bio = bio_list_get(&conf->pending_bio_list);
-               conf->pending_count = 0;
                spin_unlock_irq(&conf->device_lock);
 
                /*
@@ -1167,12 +1166,6 @@ free_pages:
        bio_put(behind_bio);
 }
 
-struct raid1_plug_cb {
-       struct blk_plug_cb      cb;
-       struct bio_list         pending;
-       int                     pending_cnt;
-};
-
 static void raid1_unplug(struct blk_plug_cb *cb, bool from_schedule)
 {
        struct raid1_plug_cb *plug = container_of(cb, struct raid1_plug_cb,
@@ -1184,7 +1177,6 @@ static void raid1_unplug(struct blk_plug_cb *cb, bool from_schedule)
        if (from_schedule || current->bio_list) {
                spin_lock_irq(&conf->device_lock);
                bio_list_merge(&conf->pending_bio_list, &plug->pending);
-               conf->pending_count += plug->pending_cnt;
                spin_unlock_irq(&conf->device_lock);
                wake_up(&conf->wait_barrier);
                md_wakeup_thread(mddev->thread);
@@ -1588,11 +1580,9 @@ static void raid1_write_request(struct mddev *mddev, struct bio *bio,
                        plug = NULL;
                if (plug) {
                        bio_list_add(&plug->pending, mbio);
-                       plug->pending_cnt++;
                } else {
                        spin_lock_irqsave(&conf->device_lock, flags);
                        bio_list_add(&conf->pending_bio_list, mbio);
-                       conf->pending_count++;
                        spin_unlock_irqrestore(&conf->device_lock, flags);
                        md_wakeup_thread(mddev->thread);
                }
@@ -3058,7 +3048,6 @@ static struct r1conf *setup_conf(struct mddev *mddev)
        init_waitqueue_head(&conf->wait_barrier);
 
        bio_list_init(&conf->pending_bio_list);
-       conf->pending_count = 0;
        conf->recovery_disabled = mddev->recovery_disabled - 1;
 
        err = -EIO;
index ccf10e59b1168419f2032ab3705f2dd1afc749eb..ebb6788820e796d12528ab119e5068af69fc2b50 100644 (file)
@@ -87,7 +87,6 @@ struct r1conf {
 
        /* queue pending writes to be submitted on unplug */
        struct bio_list         pending_bio_list;
-       int                     pending_count;
 
        /* for use when syncing mirrors:
         * We don't allow both normal IO and resync/recovery IO at
index 5dd2e17e1d0ea1a0cae811d74761adfb4fc666b2..b369ebb965a95e3a40f5da5e75faa475770487e1 100644 (file)
@@ -861,7 +861,6 @@ static void flush_pending_writes(struct r10conf *conf)
                struct bio *bio;
 
                bio = bio_list_get(&conf->pending_bio_list);
-               conf->pending_count = 0;
                spin_unlock_irq(&conf->device_lock);
 
                /*
@@ -1054,16 +1053,9 @@ static sector_t choose_data_offset(struct r10bio *r10_bio,
                return rdev->new_data_offset;
 }
 
-struct raid10_plug_cb {
-       struct blk_plug_cb      cb;
-       struct bio_list         pending;
-       int                     pending_cnt;
-};
-
 static void raid10_unplug(struct blk_plug_cb *cb, bool from_schedule)
 {
-       struct raid10_plug_cb *plug = container_of(cb, struct raid10_plug_cb,
-                                                  cb);
+       struct raid1_plug_cb *plug = container_of(cb, struct raid1_plug_cb, cb);
        struct mddev *mddev = plug->cb.data;
        struct r10conf *conf = mddev->private;
        struct bio *bio;
@@ -1071,7 +1063,6 @@ static void raid10_unplug(struct blk_plug_cb *cb, bool from_schedule)
        if (from_schedule || current->bio_list) {
                spin_lock_irq(&conf->device_lock);
                bio_list_merge(&conf->pending_bio_list, &plug->pending);
-               conf->pending_count += plug->pending_cnt;
                spin_unlock_irq(&conf->device_lock);
                wake_up(&conf->wait_barrier);
                md_wakeup_thread(mddev->thread);
@@ -1238,7 +1229,7 @@ static void raid10_write_one_disk(struct mddev *mddev, struct r10bio *r10_bio,
        const unsigned long do_fua = (bio->bi_opf & REQ_FUA);
        unsigned long flags;
        struct blk_plug_cb *cb;
-       struct raid10_plug_cb *plug = NULL;
+       struct raid1_plug_cb *plug = NULL;
        struct r10conf *conf = mddev->private;
        struct md_rdev *rdev;
        int devnum = r10_bio->devs[n_copy].devnum;
@@ -1280,16 +1271,14 @@ static void raid10_write_one_disk(struct mddev *mddev, struct r10bio *r10_bio,
 
        cb = blk_check_plugged(raid10_unplug, mddev, sizeof(*plug));
        if (cb)
-               plug = container_of(cb, struct raid10_plug_cb, cb);
+               plug = container_of(cb, struct raid1_plug_cb, cb);
        else
                plug = NULL;
        if (plug) {
                bio_list_add(&plug->pending, mbio);
-               plug->pending_cnt++;
        } else {
                spin_lock_irqsave(&conf->device_lock, flags);
                bio_list_add(&conf->pending_bio_list, mbio);
-               conf->pending_count++;
                spin_unlock_irqrestore(&conf->device_lock, flags);
                md_wakeup_thread(mddev->thread);
        }
index c34bb196790e5eb83b6ea5272b6f5721ba690259..5c0804d8bb1fe7e37b1e467ba05582ccfb625f17 100644 (file)
@@ -75,7 +75,6 @@ struct r10conf {
 
        /* queue pending writes and submit them on unplug */
        struct bio_list         pending_bio_list;
-       int                     pending_count;
 
        spinlock_t              resync_lock;
        atomic_t                nr_pending;