From: Hubert Verstraete <hubskml@free.fr>
To: xfs@oss.sgi.com
Subject: Re: [PATCH] XFS tuning on software RAID5 partitionable array; error in xfsprogs 2.9.8
Date: Fri, 16 May 2008 12:35:52 +0200 [thread overview]
Message-ID: <482D6388.7040602@free.fr> (raw)
In-Reply-To: <47EA99AD.9060400@free.fr>
Hello
First, thank you for including the patch in xfsprogs-2.9.8.
I have just reviewed the new source code; unfortunately, I found out a
change from the original patch that could generate a segmentation fault.
The line 89 in libdisk/md.c is: "free(dfile2);" but it should have
remained "if (dfile2) free(dfile2);" because dfile2 is null in case
mkfs.xfs is run on an MD device.
Regards,
Hubert Verstraete
Hubert Verstraete wrote:
> Hi XFS list,
>
> please find attached a patch for libdisk/mkfs.xfs which tunes XFS on
> software partitionable RAID arrays, also called mdp.
>
> Hubert Verstraete
>
> ------------------------------------------------------------------------
>
> diff -u -r xfsprogs-2.8.11/libdisk/md.c xfsprogs-2.8.11-mdp/libdisk/md.c
> --- xfsprogs-2.8.11/libdisk/md.c 2006-06-26 07:01:15.000000000 +0200
> +++ xfsprogs-2.8.11-mdp/libdisk/md.c 2008-03-26 20:12:38.000000000 +0100
> @@ -24,8 +24,12 @@
> dev_t dev)
> {
> if (major(dev) == MD_MAJOR)
> - return 1;
> - return get_driver_block_major("md", major(dev));
> + return MD_IS_MD;
> + if (get_driver_block_major("md", major(dev)))
> + return MD_IS_MD;
> + if (get_driver_block_major("mdp", major(dev)))
> + return MD_IS_MDP;
> + return 0;
> }
>
> int
> @@ -37,12 +41,32 @@
> int *sectalign,
> struct stat64 *sb)
> {
> - if (mnt_is_md_subvol(sb->st_rdev)) {
> + char *pc, *dfile2 = NULL;
> + int is_md;
> +
> + if ((is_md = mnt_is_md_subvol(sb->st_rdev))) {
> struct md_array_info md;
> int fd;
>
> + if (is_md == MD_IS_MDP) {
> + if (!(pc = strrchr(dfile, 'd'))
> + || !(pc = strchr(pc, 'p'))) {
> + fprintf(stderr,
> + _("Error getting MD array device from %s\n"),
> + dfile);
> + exit(1);
> + }
> + dfile2 = (char *) malloc(pc - dfile + 1);
> + if (dfile2 == NULL) {
> + fprintf(stderr,
> + _("Couldn't malloc device string\n"));
> + exit(1);
> + }
> + strncpy(dfile2, dfile, pc - dfile);
> + dfile2[pc - dfile + 1] = '\0';
> + }
> /* Open device */
> - fd = open(dfile, O_RDONLY);
> + fd = open(dfile2 ? dfile2 : dfile, O_RDONLY);
> if (fd == -1)
> return 0;
>
> @@ -50,10 +74,11 @@
> if (ioctl(fd, GET_ARRAY_INFO, &md)) {
> fprintf(stderr,
> _("Error getting MD array info from %s\n"),
> - dfile);
> + dfile2 ? dfile2 : dfile);
> exit(1);
> }
> close(fd);
> + if (dfile2) free(dfile2);
>
> /*
> * Ignore levels we don't want aligned (e.g. linear)
> diff -u -r xfsprogs-2.8.11/libdisk/md.h xfsprogs-2.8.11-mdp/libdisk/md.h
> --- xfsprogs-2.8.11/libdisk/md.h 2006-06-26 07:01:15.000000000 +0200
> +++ xfsprogs-2.8.11-mdp/libdisk/md.h 2008-03-26 20:12:10.000000000 +0100
> @@ -20,6 +20,9 @@
> #define MD_MAJOR 9 /* we also check at runtime */
> #endif
>
> +#define MD_IS_MD 1
> +#define MD_IS_MDP 2
> +
> #define GET_ARRAY_INFO _IOR (MD_MAJOR, 0x11, struct md_array_info)
>
> #define MD_SB_CLEAN 0
next prev parent reply other threads:[~2008-05-16 10:34 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <47D90614.9040206@free.fr>
[not found] ` <18408.36753.223347.129420@notabene.brown>
[not found] ` <47E92EE2.1080108@free.fr>
[not found] ` <20080326065232.GA21970@percy.comedia.it>
[not found] ` <47EA71BF.8050800@tmr.com>
[not found] ` <47EA8CF4.7080201@free.fr>
2008-03-26 18:45 ` [PATCH] XFS tuning on software RAID5 partitionable array; was: MDP major registration Hubert Verstraete
2008-05-16 10:35 ` Hubert Verstraete [this message]
2008-05-16 11:30 ` [PATCH] XFS tuning on software RAID5 partitionable array; error in xfsprogs 2.9.8 Andi Kleen
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=482D6388.7040602@free.fr \
--to=hubskml@free.fr \
--cc=xfs@oss.sgi.com \
/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: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox