All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] Revert "md: raid1: use bio helper in process_checks()"
@ 2017-03-28  9:49 Arnd Bergmann
  2017-03-28 10:44 ` Ming Lei
  0 siblings, 1 reply; 11+ messages in thread
From: Arnd Bergmann @ 2017-03-28  9:49 UTC (permalink / raw)
  To: Shaohua Li
  Cc: Arnd Bergmann, NeilBrown, Ming Lei, Jens Axboe, colyli@suse.de,
	Guoqing Jiang, Mike Christie, linux-raid, linux-kernel

Commit 60928a91b0b3 ("md: raid1: use bio helper in process_checks()")
is probably correct, but I get a new compile-time warning after
it, and have trouble understanding what it fixes:

drivers/md/raid1.c: In function 'sync_request_write':
drivers/md/raid1.c:2172:9: error: 'page_len$' may be used uninitialized in this function [-Werror=maybe-uninitialized]
     if (memcmp(page_address(ppages[j]),
         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         page_address(spages[j]),
         ~~~~~~~~~~~~~~~~~~~~~~~~
         page_len[j]))
         ~~~~~~~~~~~~
drivers/md/raid1.c:2160:7: note: 'page_len$' was declared here
   int page_len[RESYNC_PAGES];
       ^~~~~~~~

This reverts it to resolve the warning.

Fixes: 60928a91b0b3 ("md: raid1: use bio helper in process_checks()")
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
 drivers/md/raid1.c | 12 ++++--------
 1 file changed, 4 insertions(+), 8 deletions(-)

diff --git a/drivers/md/raid1.c b/drivers/md/raid1.c
index b7d9651286d4..4d176c8abc33 100644
--- a/drivers/md/raid1.c
+++ b/drivers/md/raid1.c
@@ -2113,7 +2113,6 @@ static void process_checks(struct r1bio *r1_bio)
 		int j;
 		int size;
 		int error;
-		struct bio_vec *bi;
 		struct bio *b = r1_bio->bios[i];
 		struct resync_pages *rp = get_resync_pages(b);
 		if (b->bi_end_io != end_sync_read)
@@ -2132,7 +2131,9 @@ static void process_checks(struct r1bio *r1_bio)
 		b->bi_private = rp;
 
 		size = b->bi_iter.bi_size;
-		bio_for_each_segment_all(bi, b, j) {
+		for (j = 0; j < vcnt ; j++) {
+			struct bio_vec *bi;
+			bi = &b->bi_io_vec[j];
 			bi->bv_offset = 0;
 			if (size > PAGE_SIZE)
 				bi->bv_len = PAGE_SIZE;
@@ -2156,22 +2157,17 @@ static void process_checks(struct r1bio *r1_bio)
 		int error = sbio->bi_error;
 		struct page **ppages = get_resync_pages(pbio)->pages;
 		struct page **spages = get_resync_pages(sbio)->pages;
-		struct bio_vec *bi;
-		int page_len[RESYNC_PAGES];
 
 		if (sbio->bi_end_io != end_sync_read)
 			continue;
 		/* Now we can 'fixup' the error value */
 		sbio->bi_error = 0;
 
-		bio_for_each_segment_all(bi, sbio, j)
-			page_len[j] = bi->bv_len;
-
 		if (!error) {
 			for (j = vcnt; j-- ; ) {
 				if (memcmp(page_address(ppages[j]),
 					   page_address(spages[j]),
-					   page_len[j]))
+					   sbio->bi_io_vec[j].bv_len))
 					break;
 			}
 		} else
-- 
2.9.0

^ permalink raw reply related	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2017-04-01 21:51 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-03-28  9:49 [PATCH] Revert "md: raid1: use bio helper in process_checks()" Arnd Bergmann
2017-03-28 10:44 ` Ming Lei
2017-03-28 11:35   ` Arnd Bergmann
2017-03-28 11:42     ` Ming Lei
2017-03-28 13:20       ` Arnd Bergmann
2017-03-28 15:02         ` Ming Lei
2017-03-28 15:37           ` Arnd Bergmann
2017-03-28 15:37             ` Arnd Bergmann
2017-03-28 16:13             ` Ming Lei
2017-03-28 15:43           ` Wols Lists
2017-04-01 21:51             ` Henrique de Moraes Holschuh

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.