From: Yuanhan Liu <yuanhan.liu@linux.intel.com>
To: NeilBrown <neilb@suse.de>
Cc: Sebastian Riemer <sebastian.riemer@profitbricks.com>,
linux-raid@vger.kernel.org
Subject: Re: Reason for md raid 01 blksize limited to 4 KiB?
Date: Thu, 31 May 2012 14:18:01 +0800 [thread overview]
Message-ID: <20120531061801.GC6309@yliu-dev.sh.intel.com> (raw)
In-Reply-To: <20120531154256.6eb567c7@notabene.brown>
On Thu, May 31, 2012 at 03:42:56PM +1000, NeilBrown wrote:
> On Wed, 30 May 2012 15:03:16 +0200 Sebastian Riemer
> <sebastian.riemer@profitbricks.com> wrote:
>
> > On 29/05/12 12:25, NeilBrown wrote:
> > > On Tue, 29 May 2012 11:30:27 +0200 Sebastian Riemer
> > > <sebastian.riemer@profitbricks.com> wrote:
> > >> Now, I've updated mdadm to version 3.2.5 and it works like you've
[snip]...
> The elevator at the device level should still collect these 1-page bios into
> larger requests, but I guess that has higher CPU overhead.
>
> thanks for the report.
>
> NeilBrown
>
> From dd47a247ae226896205f753ad246cd40141aadf1 Mon Sep 17 00:00:00 2001
> From: NeilBrown <neilb@suse.de>
> Date: Thu, 31 May 2012 15:39:11 +1000
> Subject: [PATCH] md: raid1/raid10: fix problem with merge_bvec_fn
>
> The new merge_bvec_fn which calls the corresponding function
> in subsidiary devices requires that mddev->merge_check_needed
> be set if any child has a merge_bvec_fn.
>
> However were were only setting that when a device was hot-added,
^^^^
I guess there is a typo here.
> not when a device was present from the start.
>
> This bug was introduced in 3.4 so patch is suitable for 3.4.y
> kernels.
And, Reviewed-by: Yuanhan Liu <yuanhan.liu@linux.intel.com>
>
> Cc: stable@vger.kernel.org
> Reported-by: Sebastian Riemer <sebastian.riemer@profitbricks.com>
> Signed-off-by: NeilBrown <neilb@suse.de>
>
> diff --git a/drivers/md/raid1.c b/drivers/md/raid1.c
> index 15dd59b..d7e9577 100644
> --- a/drivers/md/raid1.c
> +++ b/drivers/md/raid1.c
> @@ -2548,6 +2548,7 @@ static struct r1conf *setup_conf(struct mddev *mddev)
> err = -EINVAL;
> spin_lock_init(&conf->device_lock);
> rdev_for_each(rdev, mddev) {
> + struct request_queue *q;
> int disk_idx = rdev->raid_disk;
> if (disk_idx >= mddev->raid_disks
> || disk_idx < 0)
> @@ -2560,6 +2561,9 @@ static struct r1conf *setup_conf(struct mddev *mddev)
> if (disk->rdev)
> goto abort;
> disk->rdev = rdev;
> + q = bdev_get_queue(rdev->bdev);
> + if (q->merge_bvec_fn)
> + mddev->merge_check_needed = 1;
>
> disk->head_position = 0;
> }
> diff --git a/drivers/md/raid10.c b/drivers/md/raid10.c
> index 3f91c2e..d037adb 100644
> --- a/drivers/md/raid10.c
> +++ b/drivers/md/raid10.c
> @@ -3311,7 +3311,7 @@ static int run(struct mddev *mddev)
> (conf->raid_disks / conf->near_copies));
>
> rdev_for_each(rdev, mddev) {
> -
> + struct request_queue *q;
> disk_idx = rdev->raid_disk;
> if (disk_idx >= conf->raid_disks
> || disk_idx < 0)
> @@ -3327,6 +3327,9 @@ static int run(struct mddev *mddev)
> goto out_free_conf;
> disk->rdev = rdev;
> }
> + q = bdev_get_queue(rdev->bdev);
> + if (q->merge_bvec_fn)
> + mddev->merge_check_needed = 1;
>
> disk_stack_limits(mddev->gendisk, rdev->bdev,
> rdev->data_offset << 9);
next prev parent reply other threads:[~2012-05-31 6:18 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-05-21 8:43 Reason for md raid 01 blksize limited to 4 KiB? Sebastian Riemer
2012-05-21 23:14 ` Stan Hoeppner
2012-05-21 23:28 ` NeilBrown
2012-05-25 12:35 ` Sebastian Riemer
2012-05-28 4:05 ` NeilBrown
2012-05-29 9:30 ` Sebastian Riemer
2012-05-29 10:25 ` NeilBrown
2012-05-30 13:03 ` Sebastian Riemer
2012-05-31 5:42 ` NeilBrown
2012-05-31 6:18 ` Yuanhan Liu [this message]
2012-05-31 10:26 ` Sebastian Riemer
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=20120531061801.GC6309@yliu-dev.sh.intel.com \
--to=yuanhan.liu@linux.intel.com \
--cc=linux-raid@vger.kernel.org \
--cc=neilb@suse.de \
--cc=sebastian.riemer@profitbricks.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 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.