[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

ddf multiple-array support patch


Apparently my 2410SA controller can be tricked into writing garbage
virtual drive configuration records for nonexistent arrays(!)  These
bogus config records can be detected by the lack of an entry for them in
the virtual drive list and be ignored by dmraid.

Trouble is, dmraid's ddf support doesn't ignore the bogus entries and
segfaults.  This patch teaches it how to do this, though it's based off
the tree before the ddf code was split up.  I can rebase it, though it's
nearly a one-liner.

Heinz: I couldn't get your 7/21 patch to apply to my rc11 tarball.
Would you mind sending me a snapshot of your latest tree?

--- v12-mdisk6.2/lib/format/ataraid/ddf1.c	2006-07-12 09:34:15.000000000 -0700
+++ v12-mdisk6.3/lib/format/ataraid/ddf1.c	2006-07-27 10:44:09.000000000 -0700
@@ -1191,6 +1191,15 @@ static struct raid_set *group_rd(struct 
 		rd->sectors = get_size(lc, ddf1, cr, pd);
 		rd->name = name(lc, ddf1, rd);
+		/*
+		 * If we have a virtual drive config without an entry in the
+		 * list of virtual drives, we ignore it.  Weird bug seen on
+		 * Adaptec 2410SA controller.
+		 */
+		if (!rd->name) {
+			free_raid_dev(lc, &rd);
+			continue;
+		}
 		/* Stuff it into the appropriate raid set. */
 		if (!(rs = find_or_alloc_raid_set(lc, rd->name, FIND_ALL,

Attachment: signature.asc
Description: OpenPGP digital signature

[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]