From: NeilBrown <neilb@suse.de> To: Andrew Morton <akpm@linux-foundation.org> Cc: linux-raid@vger.kernel.org, linux-kernel@vger.kernel.org, Dan Williams <dan.j.williams@intel.com> Subject: [PATCH 020 of 29] md: md: kill STRIPE_OP_IO flag Date: Fri, 27 Jun 2008 16:51:30 +1000 [thread overview] Message-ID: <1080627065130.10634@suse.de> (raw) In-Reply-To: 20080627164503.9671.patches@notabene From: Dan Williams <dan.j.williams@intel.com> The R5_Want{Read,Write} flags already gate i/o. So, this flag is superfluous and we can unconditionally call ops_run_io(). Signed-off-by: Dan Williams <dan.j.williams@intel.com> Signed-off-by: Neil Brown <neilb@suse.de> ### Diffstat output ./drivers/md/raid5.c | 32 +++++--------------------------- ./include/linux/raid/raid5.h | 1 - 2 files changed, 5 insertions(+), 28 deletions(-) diff .prev/drivers/md/raid5.c ./drivers/md/raid5.c --- .prev/drivers/md/raid5.c 2008-06-27 16:22:03.000000000 +1000 +++ ./drivers/md/raid5.c 2008-06-27 16:22:04.000000000 +1000 @@ -373,8 +373,6 @@ static unsigned long get_stripe_work(str test_and_ack_op(STRIPE_OP_BIODRAIN, pending); test_and_ack_op(STRIPE_OP_POSTXOR, pending); test_and_ack_op(STRIPE_OP_CHECK, pending); - if (test_and_clear_bit(STRIPE_OP_IO, &sh->ops.pending)) - ack++; sh->ops.count -= ack; if (unlikely(sh->ops.count < 0)) { @@ -399,7 +397,6 @@ static void ops_run_io(struct stripe_hea might_sleep(); - set_bit(STRIPE_IO_STARTED, &sh->state); for (i = disks; i--; ) { int rw; struct bio *bi; @@ -433,6 +430,8 @@ static void ops_run_io(struct stripe_hea test_bit(STRIPE_EXPAND_READY, &sh->state)) md_sync_acct(rdev->bdev, STRIPE_SECTORS); + set_bit(STRIPE_IO_STARTED, &sh->state); + bi->bi_bdev = rdev->bdev; pr_debug("%s: for %llu schedule op %ld on disc %d\n", __func__, (unsigned long long)sh->sector, @@ -900,9 +899,6 @@ static void raid5_run_ops(struct stripe_ if (test_bit(STRIPE_OP_CHECK, &pending)) ops_run_check(sh); - if (test_bit(STRIPE_OP_IO, &pending)) - ops_run_io(sh); - if (overlap_clear) for (i = disks; i--; ) { struct r5dev *dev = &sh->dev[i]; @@ -2013,8 +2009,6 @@ static int __handle_issuing_new_read_req */ set_bit(R5_LOCKED, &dev->flags); set_bit(R5_Wantread, &dev->flags); - if (!test_and_set_bit(STRIPE_OP_IO, &sh->ops.pending)) - sh->ops.count++; s->locked++; pr_debug("Reading block %d (sync=%d)\n", disk_idx, s->syncing); @@ -2208,9 +2202,6 @@ static void handle_issuing_new_write_req "%d for r-m-w\n", i); set_bit(R5_LOCKED, &dev->flags); set_bit(R5_Wantread, &dev->flags); - if (!test_and_set_bit( - STRIPE_OP_IO, &sh->ops.pending)) - sh->ops.count++; s->locked++; } else { set_bit(STRIPE_DELAYED, &sh->state); @@ -2234,9 +2225,6 @@ static void handle_issuing_new_write_req "%d for Reconstruct\n", i); set_bit(R5_LOCKED, &dev->flags); set_bit(R5_Wantread, &dev->flags); - if (!test_and_set_bit( - STRIPE_OP_IO, &sh->ops.pending)) - sh->ops.count++; s->locked++; } else { set_bit(STRIPE_DELAYED, &sh->state); @@ -2444,8 +2432,6 @@ static void handle_parity_checks5(raid5_ set_bit(R5_LOCKED, &dev->flags); set_bit(R5_Wantwrite, &dev->flags); - if (!test_and_set_bit(STRIPE_OP_IO, &sh->ops.pending)) - sh->ops.count++; clear_bit(STRIPE_DEGRADED, &sh->state); s->locked++; @@ -2801,9 +2787,6 @@ static void handle_stripe5(struct stripe (i == sh->pd_idx || dev->written)) { pr_debug("Writing block %d\n", i); set_bit(R5_Wantwrite, &dev->flags); - if (!test_and_set_bit( - STRIPE_OP_IO, &sh->ops.pending)) - sh->ops.count++; if (prexor) continue; if (!test_bit(R5_Insync, &dev->flags) || @@ -2857,16 +2840,12 @@ static void handle_stripe5(struct stripe dev = &sh->dev[s.failed_num]; if (!test_bit(R5_ReWrite, &dev->flags)) { set_bit(R5_Wantwrite, &dev->flags); - if (!test_and_set_bit(STRIPE_OP_IO, &sh->ops.pending)) - sh->ops.count++; set_bit(R5_ReWrite, &dev->flags); set_bit(R5_LOCKED, &dev->flags); s.locked++; } else { /* let's read it back */ set_bit(R5_Wantread, &dev->flags); - if (!test_and_set_bit(STRIPE_OP_IO, &sh->ops.pending)) - sh->ops.count++; set_bit(R5_LOCKED, &dev->flags); s.locked++; } @@ -2884,13 +2863,10 @@ static void handle_stripe5(struct stripe clear_bit(STRIPE_OP_POSTXOR, &sh->ops.ack); clear_bit(STRIPE_OP_POSTXOR, &sh->ops.complete); - for (i = conf->raid_disks; i--; ) { + for (i = conf->raid_disks; i--; ) set_bit(R5_Wantwrite, &sh->dev[i].flags); set_bit(R5_LOCKED, &dev->flags); s.locked++; - if (!test_and_set_bit(STRIPE_OP_IO, &sh->ops.pending)) - sh->ops.count++; - } } if (s.expanded && test_bit(STRIPE_EXPANDING, &sh->state) && @@ -2926,6 +2902,8 @@ static void handle_stripe5(struct stripe if (pending) raid5_run_ops(sh, pending); + ops_run_io(sh); + return_io(return_bi); } diff .prev/include/linux/raid/raid5.h ./include/linux/raid/raid5.h --- .prev/include/linux/raid/raid5.h 2008-06-27 16:22:03.000000000 +1000 +++ ./include/linux/raid/raid5.h 2008-06-27 16:22:04.000000000 +1000 @@ -263,7 +263,6 @@ struct r6_state { #define STRIPE_OP_BIODRAIN 3 #define STRIPE_OP_POSTXOR 4 #define STRIPE_OP_CHECK 5 -#define STRIPE_OP_IO 6 /* modifiers to the base operations * STRIPE_OP_MOD_REPAIR_PD - compute the parity block and write it back
WARNING: multiple messages have this Message-ID (diff)
From: NeilBrown <neilb@suse.de> To: Andrew Morton <akpm@linux-foundation.org> Cc: linux-raid@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Dan Williams <dan.j.williams@intel.com> Subject: [PATCH 020 of 29] md: md: kill STRIPE_OP_IO flag Date: Fri, 27 Jun 2008 16:51:30 +1000 [thread overview] Message-ID: <1080627065130.10634@suse.de> (raw) In-Reply-To: 20080627164503.9671.patches@notabene From: Dan Williams <dan.j.williams@intel.com> The R5_Want{Read,Write} flags already gate i/o. So, this flag is superfluous and we can unconditionally call ops_run_io(). Signed-off-by: Dan Williams <dan.j.williams@intel.com> Signed-off-by: Neil Brown <neilb@suse.de> ### Diffstat output ./drivers/md/raid5.c | 32 +++++--------------------------- ./include/linux/raid/raid5.h | 1 - 2 files changed, 5 insertions(+), 28 deletions(-) diff .prev/drivers/md/raid5.c ./drivers/md/raid5.c --- .prev/drivers/md/raid5.c 2008-06-27 16:22:03.000000000 +1000 +++ ./drivers/md/raid5.c 2008-06-27 16:22:04.000000000 +1000 @@ -373,8 +373,6 @@ static unsigned long get_stripe_work(str test_and_ack_op(STRIPE_OP_BIODRAIN, pending); test_and_ack_op(STRIPE_OP_POSTXOR, pending); test_and_ack_op(STRIPE_OP_CHECK, pending); - if (test_and_clear_bit(STRIPE_OP_IO, &sh->ops.pending)) - ack++; sh->ops.count -= ack; if (unlikely(sh->ops.count < 0)) { @@ -399,7 +397,6 @@ static void ops_run_io(struct stripe_hea might_sleep(); - set_bit(STRIPE_IO_STARTED, &sh->state); for (i = disks; i--; ) { int rw; struct bio *bi; @@ -433,6 +430,8 @@ static void ops_run_io(struct stripe_hea test_bit(STRIPE_EXPAND_READY, &sh->state)) md_sync_acct(rdev->bdev, STRIPE_SECTORS); + set_bit(STRIPE_IO_STARTED, &sh->state); + bi->bi_bdev = rdev->bdev; pr_debug("%s: for %llu schedule op %ld on disc %d\n", __func__, (unsigned long long)sh->sector, @@ -900,9 +899,6 @@ static void raid5_run_ops(struct stripe_ if (test_bit(STRIPE_OP_CHECK, &pending)) ops_run_check(sh); - if (test_bit(STRIPE_OP_IO, &pending)) - ops_run_io(sh); - if (overlap_clear) for (i = disks; i--; ) { struct r5dev *dev = &sh->dev[i]; @@ -2013,8 +2009,6 @@ static int __handle_issuing_new_read_req */ set_bit(R5_LOCKED, &dev->flags); set_bit(R5_Wantread, &dev->flags); - if (!test_and_set_bit(STRIPE_OP_IO, &sh->ops.pending)) - sh->ops.count++; s->locked++; pr_debug("Reading block %d (sync=%d)\n", disk_idx, s->syncing); @@ -2208,9 +2202,6 @@ static void handle_issuing_new_write_req "%d for r-m-w\n", i); set_bit(R5_LOCKED, &dev->flags); set_bit(R5_Wantread, &dev->flags); - if (!test_and_set_bit( - STRIPE_OP_IO, &sh->ops.pending)) - sh->ops.count++; s->locked++; } else { set_bit(STRIPE_DELAYED, &sh->state); @@ -2234,9 +2225,6 @@ static void handle_issuing_new_write_req "%d for Reconstruct\n", i); set_bit(R5_LOCKED, &dev->flags); set_bit(R5_Wantread, &dev->flags); - if (!test_and_set_bit( - STRIPE_OP_IO, &sh->ops.pending)) - sh->ops.count++; s->locked++; } else { set_bit(STRIPE_DELAYED, &sh->state); @@ -2444,8 +2432,6 @@ static void handle_parity_checks5(raid5_ set_bit(R5_LOCKED, &dev->flags); set_bit(R5_Wantwrite, &dev->flags); - if (!test_and_set_bit(STRIPE_OP_IO, &sh->ops.pending)) - sh->ops.count++; clear_bit(STRIPE_DEGRADED, &sh->state); s->locked++; @@ -2801,9 +2787,6 @@ static void handle_stripe5(struct stripe (i == sh->pd_idx || dev->written)) { pr_debug("Writing block %d\n", i); set_bit(R5_Wantwrite, &dev->flags); - if (!test_and_set_bit( - STRIPE_OP_IO, &sh->ops.pending)) - sh->ops.count++; if (prexor) continue; if (!test_bit(R5_Insync, &dev->flags) || @@ -2857,16 +2840,12 @@ static void handle_stripe5(struct stripe dev = &sh->dev[s.failed_num]; if (!test_bit(R5_ReWrite, &dev->flags)) { set_bit(R5_Wantwrite, &dev->flags); - if (!test_and_set_bit(STRIPE_OP_IO, &sh->ops.pending)) - sh->ops.count++; set_bit(R5_ReWrite, &dev->flags); set_bit(R5_LOCKED, &dev->flags); s.locked++; } else { /* let's read it back */ set_bit(R5_Wantread, &dev->flags); - if (!test_and_set_bit(STRIPE_OP_IO, &sh->ops.pending)) - sh->ops.count++; set_bit(R5_LOCKED, &dev->flags); s.locked++; } @@ -2884,13 +2863,10 @@ static void handle_stripe5(struct stripe clear_bit(STRIPE_OP_POSTXOR, &sh->ops.ack); clear_bit(STRIPE_OP_POSTXOR, &sh->ops.complete); - for (i = conf->raid_disks; i--; ) { + for (i = conf->raid_disks; i--; ) set_bit(R5_Wantwrite, &sh->dev[i].flags); set_bit(R5_LOCKED, &dev->flags); s.locked++; - if (!test_and_set_bit(STRIPE_OP_IO, &sh->ops.pending)) - sh->ops.count++; - } } if (s.expanded && test_bit(STRIPE_EXPANDING, &sh->state) && @@ -2926,6 +2902,8 @@ static void handle_stripe5(struct stripe if (pending) raid5_run_ops(sh, pending); + ops_run_io(sh); + return_io(return_bi); } diff .prev/include/linux/raid/raid5.h ./include/linux/raid/raid5.h --- .prev/include/linux/raid/raid5.h 2008-06-27 16:22:03.000000000 +1000 +++ ./include/linux/raid/raid5.h 2008-06-27 16:22:04.000000000 +1000 @@ -263,7 +263,6 @@ struct r6_state { #define STRIPE_OP_BIODRAIN 3 #define STRIPE_OP_POSTXOR 4 #define STRIPE_OP_CHECK 5 -#define STRIPE_OP_IO 6 /* modifiers to the base operations * STRIPE_OP_MOD_REPAIR_PD - compute the parity block and write it back
next prev parent reply other threads:[~2008-06-27 6:51 UTC|newest] Thread overview: 66+ messages / expand[flat|nested] mbox.gz Atom feed top 2008-06-27 6:49 [PATCH 000 of 29] md: Introduction : patchbomb for 2.6.27 merge window NeilBrown 2008-06-27 6:49 ` NeilBrown 2008-06-27 6:49 ` [PATCH 001 of 29] md: Ensure interrupted recovery completed properly (v1 metadata plus bitmap) NeilBrown 2008-06-27 6:49 ` NeilBrown 2008-07-01 7:20 ` Jan Engelhardt 2008-06-27 6:49 ` [PATCH 002 of 29] md: Don't acknowlege that stripe-expand is complete until it really is NeilBrown 2008-06-27 6:49 ` NeilBrown 2008-06-27 6:49 ` [PATCH 003 of 29] md: Fix error paths if md_probe fails NeilBrown 2008-06-27 6:49 ` NeilBrown 2008-06-27 6:49 ` [PATCH 004 of 29] md: linear: correct disk numbering error check NeilBrown 2008-06-27 6:49 ` NeilBrown 2008-06-27 6:49 ` [PATCH 005 of 29] md: use bio_endio instead of a call to bi_end_io NeilBrown 2008-06-27 6:49 ` NeilBrown 2008-06-27 6:49 ` [PATCH 006 of 29] md: Improve setting of "events_cleared" for write-intent bitmaps NeilBrown 2008-06-27 6:49 ` NeilBrown 2008-06-27 6:50 ` [PATCH 007 of 29] md: Allow setting start point for requested check/repair NeilBrown 2008-06-27 6:50 ` [PATCH 008 of 29] md: Close race in md_probe NeilBrown 2008-06-27 12:21 ` Andre Noll 2008-06-27 23:38 ` Neil Brown 2008-06-30 7:52 ` Andre Noll 2008-06-27 6:50 ` [PATCH 009 of 29] md: Don't try to make md arrays dirty if that is not meaningful NeilBrown 2008-06-27 6:50 ` [PATCH 010 of 29] md: Enable setting of 'offset' and 'size' of a hot-added spare NeilBrown 2008-06-27 6:50 ` [PATCH 011 of 29] md: Support adding a spare to a live md array with external metadata NeilBrown 2008-06-27 6:50 ` [PATCH 012 of 29] md: rationalise return value for ->hot_add_disk method NeilBrown 2008-06-27 6:50 ` [PATCH 013 of 29] md: Don't reject HOT_REMOVE_DISK request for an array that is not yet started NeilBrown 2008-06-27 6:50 ` [PATCH 014 of 29] md: Make sure all changes to md/array_state are notified NeilBrown 2008-06-27 6:50 ` [PATCH 015 of 29] md: Make sure all changes to md/sync_action " NeilBrown 2008-06-27 6:51 ` [PATCH 016 of 29] md: Make sure all changes to md/degraded " NeilBrown 2008-06-27 6:51 ` [PATCH 017 of 29] md: Make sure all changes to md/dev-XX/state " NeilBrown 2008-06-27 6:51 ` [PATCH 018 of 29] md: Support changing rdev size on running arrays NeilBrown 2008-06-27 6:51 ` NeilBrown 2008-06-27 16:09 ` Markus Hochholdinger 2008-06-27 23:41 ` Neil Brown 2010-03-30 14:52 ` Markus Hochholdinger 2010-03-31 5:41 ` Neil Brown 2010-04-01 15:23 ` Markus Hochholdinger 2012-03-24 20:47 ` Markus Hochholdinger 2012-03-25 22:15 ` NeilBrown 2021-11-10 13:09 ` Markus Hochholdinger 2021-11-10 17:51 ` Markus Hochholdinger 2021-11-11 13:10 ` Markus Hochholdinger 2021-11-11 15:09 ` Markus Hochholdinger 2021-11-12 1:22 ` Guoqing Jiang 2021-11-12 14:31 ` Markus Hochholdinger 2008-06-27 6:51 ` [PATCH 019 of 29] md: md: kill STRIPE_OP_MOD_DMA in raid5 offload NeilBrown 2008-06-27 6:51 ` NeilBrown 2008-06-27 6:51 ` NeilBrown [this message] 2008-06-27 6:51 ` [PATCH 020 of 29] md: md: kill STRIPE_OP_IO flag NeilBrown 2008-06-27 6:51 ` [PATCH 021 of 29] md: md: use stripe_head_state in ops_run_io() NeilBrown 2008-06-27 6:51 ` NeilBrown 2008-06-27 6:51 ` [PATCH 022 of 29] md: md: unify raid5/6 i/o submission NeilBrown 2008-06-27 6:51 ` NeilBrown 2008-06-27 6:51 ` [PATCH 023 of 29] md: md: replace STRIPE_OP_CHECK with 'check_states' NeilBrown 2008-06-27 6:51 ` NeilBrown 2008-06-27 6:51 ` [PATCH 024 of 29] md: md: replace STRIPE_OP_BIOFILL with STRIPE_BIOFILL_RUN NeilBrown 2008-06-27 6:51 ` NeilBrown 2008-06-27 6:52 ` [PATCH 025 of 29] md: md: replace STRIPE_OP_COMPUTE_BLK with STRIPE_COMPUTE_RUN NeilBrown 2008-06-27 6:52 ` NeilBrown 2008-06-27 6:52 ` [PATCH 026 of 29] md: md: replace STRIPE_OP_{BIODRAIN,PREXOR,POSTXOR} with 'reconstruct_states' NeilBrown 2008-06-27 6:52 ` NeilBrown 2008-06-27 6:52 ` [PATCH 027 of 29] md: md: replace R5_WantPrexor with R5_WantDrain, add 'prexor' reconstruct_states NeilBrown 2008-06-27 6:52 ` NeilBrown 2008-06-27 6:52 ` [PATCH 028 of 29] md: md: handle operation chaining in raid5_run_ops NeilBrown 2008-06-27 6:52 ` NeilBrown 2008-06-27 6:52 ` [PATCH 029 of 29] md: md: rationalize raid5 function names NeilBrown 2008-06-27 6:52 ` NeilBrown
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=1080627065130.10634@suse.de \ --to=neilb@suse.de \ --cc=akpm@linux-foundation.org \ --cc=dan.j.williams@intel.com \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-raid@vger.kernel.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.