RE: [PATCH] fix extended partition detection
From: Hawrylewicz Czarnowski, Przemyslaw <hidden>
Date: 2011-01-20 11:28:25
Neil, Could you please take a look at this patch and possibly include it to your devel-3.2 branch? Thanks in advance
quoted hunk
-----Original Message----- From: Williams, Dan J Sent: Friday, January 14, 2011 2:39 AM To: neilb@suse.de Cc: linux-raid@vger.kernel.org; Wasilewski, Krzysztof; Hawrylewicz Czarnowski, Przemyslaw Subject: [PATCH] fix extended partition detection # mdadm --detail --export /dev/md127p1 Before: MD_LEVEL=raid5 MD_DEVICES=4 MD_METADATA=0.90 After: MD_LEVEL=raid5 MD_DEVICES=4 MD_CONTAINER=/dev/md0 MD_MEMBER=0 MD_UUID=55746a20:925d24a7:4f9bd7e2:9c9a411f We parse the symlink target with a format: ../../block/mdXXX/mdXXXpYY ...and need the second '/' from the end of the string to read detect a 'md' device. Reported-by: Krzysztof Wasilewski <redacted> Cc: Przemyslaw Czarnowski <redacted> Signed-off-by: Dan Williams <redacted> --- If there are any 3.1.x stable releases planned I would consider this a candidate as it allows custom name partitions to be created by udev (like /dev/md/vol1p1). I believe this was masked by the usage of mdp devices. On 3.2 it exposes a segfault as we try to get the container_content() of 'mbr' metadata. -- Dan util.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)diff --git a/util.c b/util.c index c9bdd6e..75a5e6d 100644 --- a/util.c +++ b/util.c@@ -1664,7 +1664,7 @@ int stat2devnum(struct stat *st) link[n] = 0; cp = strrchr(link, '/'); if (cp) *cp = 0; - cp = strchr(link, '/'); + cp = strrchr(link, '/'); if (cp && strncmp(cp, "/md", 3) == 0) return devname2devnum(cp+1); }