jwboyer pushed to kernel (f21). "Add patch to fix discard on md RAID0 (rhbz 1223332)"

notifications at fedoraproject.org notifications at fedoraproject.org
Thu May 21 12:41:42 UTC 2015


From 621c196a5cb15b037e666f830bd07c0cb5ec5fbf Mon Sep 17 00:00:00 2001
From: Josh Boyer <jwboyer at fedoraproject.org>
Date: Thu, 21 May 2015 08:37:14 -0400
Subject: Add patch to fix discard on md RAID0 (rhbz 1223332)


diff --git a/kernel.spec b/kernel.spec
index 842fc4d..39dd01d 100644
--- a/kernel.spec
+++ b/kernel.spec
@@ -669,6 +669,9 @@ Patch26204: 0001-cx18-add-missing-caps-for-the-PCM-video-device.patch
 #rhbz 1218688
 Patch26205: drm-i915-Fix-ilk-watermarks-calculation-when-primary.patch
 
+#rhbz 1223332
+Patch26207: md-raid0-fix-restore-to-sector-variable-in-raid0_mak.patch
+
 # END OF PATCH DEFINITIONS
 
 %endif
@@ -1441,6 +1444,9 @@ ApplyPatch 0001-cx18-add-missing-caps-for-the-PCM-video-device.patch
 #rhbz 1218688
 ApplyPatch drm-i915-Fix-ilk-watermarks-calculation-when-primary.patch
 
+#rhbz 1223332
+ApplyPatch md-raid0-fix-restore-to-sector-variable-in-raid0_mak.patch
+
 # END OF PATCH APPLICATIONS
 
 %endif
@@ -2301,6 +2307,7 @@ fi
 #                                    ||     ||
 %changelog
 * Thu May 21 2015 Josh Boyer <jwboyer at fedoraproject.org>
+- Add patch to fix discard on md RAID0 (rhbz 1223332)
 - Add submitted stable fix for i915 flickering on ilk (rhbz 1218688)
 
 * Mon May 18 2015 Laura Abbott <labbott at fedoraproject.org>
diff --git a/md-raid0-fix-restore-to-sector-variable-in-raid0_mak.patch b/md-raid0-fix-restore-to-sector-variable-in-raid0_mak.patch
new file mode 100644
index 0000000..772d098
--- /dev/null
+++ b/md-raid0-fix-restore-to-sector-variable-in-raid0_mak.patch
@@ -0,0 +1,48 @@
+From: Eric Work <work.eric at gmail.com>
+Date: Tue, 19 May 2015 06:26:23 -0700
+Subject: [PATCH] md/raid0: fix restore to sector variable in
+ raid0_make_request
+
+md/raid0: fix restore to sector variable in raid0_make_request
+
+The variable "sector" in "raid0_make_request()" was improperly updated
+by a call to "sector_div()" which modifies its first argument in place.
+Commit 47d68979cc968535cb87f3e5f2e6a3533ea48fbd restored this variable
+after the call for later re-use.  Unfortunetly the restore was done after
+the referenced variable "bio" was advanced.  This lead to the original
+value and the restored value being different.  Here we move this line to
+the proper place.
+
+One observed side effect of this bug was discarding a file though
+unlinking would cause an unrelated file's contents to be discarded.
+
+Signed-off-by: NeilBrown <neilb at suse.de>
+Fixes: 47d68979cc96 ("md/raid0: fix bug with chunksize not a power of 2.")
+Cc: stable at vger.kernel.org (any that received above backport)
+URL: https://bugzilla.kernel.org/show_bug.cgi?id=98501
+---
+ drivers/md/raid0.c | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/drivers/md/raid0.c b/drivers/md/raid0.c
+index 3b5d7f704aa3..903391ce9353 100644
+--- a/drivers/md/raid0.c
++++ b/drivers/md/raid0.c
+@@ -517,6 +517,9 @@ static void raid0_make_request(struct mddev *mddev, struct bio *bio)
+ 			 ? (sector & (chunk_sects-1))
+ 			 : sector_div(sector, chunk_sects));
+ 
++		/* Restore due to sector_div */
++		sector = bio->bi_iter.bi_sector;
++
+ 		if (sectors < bio_sectors(bio)) {
+ 			split = bio_split(bio, sectors, GFP_NOIO, fs_bio_set);
+ 			bio_chain(split, bio);
+@@ -524,7 +527,6 @@ static void raid0_make_request(struct mddev *mddev, struct bio *bio)
+ 			split = bio;
+ 		}
+ 
+-		sector = bio->bi_iter.bi_sector;
+ 		zone = find_zone(mddev->private, &sector);
+ 		tmp_dev = map_sector(mddev, zone, sector, &sector);
+ 		split->bi_bdev = tmp_dev->bdev;
-- 
cgit v0.10.2


	http://pkgs.fedoraproject.org/cgit/kernel.git/commit/?h=f21&id=621c196a5cb15b037e666f830bd07c0cb5ec5fbf


More information about the scm-commits mailing list