From: Mike Snitzer <snitzer@redhat.com>
To: Jun'ichi Nomura <j-nomura@ce.jp.nec.com>
Cc: "Martin K. Petersen" <martin.petersen@oracle.com>,
linux-kernel@vger.kernel.org,
device-mapper development <dm-devel@redhat.com>,
Jens Axboe <jens.axboe@oracle.com>,
Alasdair G Kergon <agk@redhat.com>
Subject: Re: [PATCH 1/3] block: Add blk_queue_copy_limits()
Date: Fri, 18 Sep 2009 15:07:20 -0400 [thread overview]
Message-ID: <20090918190720.GA30063@redhat.com> (raw)
In-Reply-To: <4AB3B43D.9000802@ce.jp.nec.com>
On Fri, Sep 18 2009 at 12:24pm -0400,
Jun'ichi Nomura <j-nomura@ce.jp.nec.com> wrote:
> This patch is a preparation for the last patch in this patchset
> which changes blk_set_default_limits() to set 0 to max_sectors.
should read: changes blk_set_default_limits() to set max_sectors to 0.
> dm uses blk_stack_limits() to merge limits of underlying devices
> and copy the end result to the queue.
> But if there's no underlying device (like 'zero' target),
> max_sectors/max_hw_sectors are left unchanged from the default 0
> and just copying it to the queue causes problems.
>
> Provide blk_queue_copy_limits() to get a safe copy with
> invalid values fixed-up.
>
> Signed-off-by: Kiyoshi Ueda <k-ueda@ct.jp.nec.com>
> Signed-off-by: Jun'ichi Nomura <j-nomura@ce.jp.nec.com>
> Cc: David Strand <dpstrand@gmail.com>
> Cc: Mike Snitzer <snitzer@redhat.com>
> Cc: Alasdair G Kergon <agk@redhat.com>
> Cc: Martin K. Petersen <martin.petersen@oracle.com>
> Cc: Jens Axboe <jens.axboe@oracle.com>
> ---
> block/blk-settings.c | 28 ++++++++++++++++++++++++++++
> include/linux/blkdev.h | 1 +
> 2 files changed, 29 insertions(+)
>
> Index: linux-2.6.31.work/block/blk-settings.c
> ===================================================================
> --- linux-2.6.31.work.orig/block/blk-settings.c
> +++ linux-2.6.31.work/block/blk-settings.c
> @@ -122,6 +122,34 @@ void blk_set_default_limits(struct queue
> EXPORT_SYMBOL(blk_set_default_limits);
>
> /**
> + * blk_queue_copy_limits - copy limits to queue
> + * @q: the request queue whose limits as a copy destination
> + * @lim: the queue_limits structure as a copy source
> + *
> + * Description:
> + * Copies a queue_limit struct contents to @q with fix-ups to
> + * invalid values.
> + */
> +void blk_queue_copy_limits(struct request_queue *q, struct queue_limits
> *lim)
> +{
> + q->limits = *lim;
> +
> + /*
> + * blk_set_default_limits() sets 0 to max_sectors/max_hw_sectors
> + * so that blk_stack_limits() appropriately propagate the values
> + * of lower-stack by min_not_zero().
> + * However, if the default value 0 is unchanged (e.g. the stacking
> + * device is virtual and has no underlying device), it results
> + * in unusable device.
Likewise:
blk_set_default_limits() sets max_sectors/max_hw_sectors to 0?
> + * Check if max_sectors/max_hw_sectors have non-zero values,
> + * and set SAFE_MAX_SECTORS if they do.
> + */
> + if (q->limits.max_sectors == 0 || q->limits.max_hw_sectors == 0)
> + blk_queue_max_sectors(q, SAFE_MAX_SECTORS);
Shouldn't this check (and the entire comment above it) get added in the
3rd patch once max_sectors/max_hw_sectors sre actually set to 0? I'm
being really pedantic here but...
WARNING: multiple messages have this Message-ID (diff)
From: Mike Snitzer <snitzer@redhat.com>
To: "Jun'ichi Nomura" <j-nomura@ce.jp.nec.com>
Cc: Jens Axboe <jens.axboe@oracle.com>,
"Martin K. Petersen" <martin.petersen@oracle.com>,
Alasdair G Kergon <agk@redhat.com>,
David Strand <dpstrand@gmail.com>,
device-mapper development <dm-devel@redhat.com>,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH 1/3] block: Add blk_queue_copy_limits()
Date: Fri, 18 Sep 2009 15:07:20 -0400 [thread overview]
Message-ID: <20090918190720.GA30063@redhat.com> (raw)
In-Reply-To: <4AB3B43D.9000802@ce.jp.nec.com>
On Fri, Sep 18 2009 at 12:24pm -0400,
Jun'ichi Nomura <j-nomura@ce.jp.nec.com> wrote:
> This patch is a preparation for the last patch in this patchset
> which changes blk_set_default_limits() to set 0 to max_sectors.
should read: changes blk_set_default_limits() to set max_sectors to 0.
> dm uses blk_stack_limits() to merge limits of underlying devices
> and copy the end result to the queue.
> But if there's no underlying device (like 'zero' target),
> max_sectors/max_hw_sectors are left unchanged from the default 0
> and just copying it to the queue causes problems.
>
> Provide blk_queue_copy_limits() to get a safe copy with
> invalid values fixed-up.
>
> Signed-off-by: Kiyoshi Ueda <k-ueda@ct.jp.nec.com>
> Signed-off-by: Jun'ichi Nomura <j-nomura@ce.jp.nec.com>
> Cc: David Strand <dpstrand@gmail.com>
> Cc: Mike Snitzer <snitzer@redhat.com>
> Cc: Alasdair G Kergon <agk@redhat.com>
> Cc: Martin K. Petersen <martin.petersen@oracle.com>
> Cc: Jens Axboe <jens.axboe@oracle.com>
> ---
> block/blk-settings.c | 28 ++++++++++++++++++++++++++++
> include/linux/blkdev.h | 1 +
> 2 files changed, 29 insertions(+)
>
> Index: linux-2.6.31.work/block/blk-settings.c
> ===================================================================
> --- linux-2.6.31.work.orig/block/blk-settings.c
> +++ linux-2.6.31.work/block/blk-settings.c
> @@ -122,6 +122,34 @@ void blk_set_default_limits(struct queue
> EXPORT_SYMBOL(blk_set_default_limits);
>
> /**
> + * blk_queue_copy_limits - copy limits to queue
> + * @q: the request queue whose limits as a copy destination
> + * @lim: the queue_limits structure as a copy source
> + *
> + * Description:
> + * Copies a queue_limit struct contents to @q with fix-ups to
> + * invalid values.
> + */
> +void blk_queue_copy_limits(struct request_queue *q, struct queue_limits
> *lim)
> +{
> + q->limits = *lim;
> +
> + /*
> + * blk_set_default_limits() sets 0 to max_sectors/max_hw_sectors
> + * so that blk_stack_limits() appropriately propagate the values
> + * of lower-stack by min_not_zero().
> + * However, if the default value 0 is unchanged (e.g. the stacking
> + * device is virtual and has no underlying device), it results
> + * in unusable device.
Likewise:
blk_set_default_limits() sets max_sectors/max_hw_sectors to 0?
> + * Check if max_sectors/max_hw_sectors have non-zero values,
> + * and set SAFE_MAX_SECTORS if they do.
> + */
> + if (q->limits.max_sectors == 0 || q->limits.max_hw_sectors == 0)
> + blk_queue_max_sectors(q, SAFE_MAX_SECTORS);
Shouldn't this check (and the entire comment above it) get added in the
3rd patch once max_sectors/max_hw_sectors sre actually set to 0? I'm
being really pedantic here but...
next prev parent reply other threads:[~2009-09-18 19:07 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-09-18 16:24 [PATCH 1/3] block: Add blk_queue_copy_limits() Jun'ichi Nomura
2009-09-18 16:24 ` Jun'ichi Nomura
2009-09-18 16:26 ` [PATCH 2/3] dm: Use blk_queue_copy_limits() Jun'ichi Nomura
2009-09-18 16:26 ` Jun'ichi Nomura
2009-09-18 19:11 ` Mike Snitzer
2009-09-18 19:11 ` Mike Snitzer
2009-09-18 16:29 ` [PATCH 3/3] block: blk_set_default_limits sets 0 to max_sectors Jun'ichi Nomura
2009-09-18 16:29 ` Jun'ichi Nomura
2009-09-18 19:07 ` Mike Snitzer [this message]
2009-09-18 19:07 ` [PATCH 1/3] block: Add blk_queue_copy_limits() Mike Snitzer
2009-09-18 19:28 ` Martin K. Petersen
2009-09-18 19:28 ` [dm-devel] " Martin K. Petersen
2009-09-18 20:30 ` Mike Snitzer
2009-09-18 20:30 ` Mike Snitzer
2009-09-19 15:22 ` Jun'ichi Nomura
2009-09-19 15:22 ` [dm-devel] " Jun'ichi Nomura
2009-09-20 21:00 ` Martin K. Petersen
2009-09-20 21:00 ` [dm-devel] " Martin K. Petersen
2009-09-21 16:33 ` Jun'ichi Nomura
2009-09-21 16:33 ` [dm-devel] " Jun'ichi Nomura
2009-09-21 19:43 ` Martin K. Petersen
2009-09-21 19:43 ` [dm-devel] " Martin K. Petersen
2009-09-21 19:45 ` Jens Axboe
2009-09-21 19:45 ` [dm-devel] " Jens Axboe
2009-09-18 20:33 ` Jens Axboe
2009-09-18 20:33 ` Jens Axboe
2009-09-18 20:35 ` Jens Axboe
2009-09-18 20:35 ` Jens Axboe
2009-09-19 15:35 ` Jun'ichi Nomura
2009-09-19 15:35 ` Jun'ichi Nomura
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=20090918190720.GA30063@redhat.com \
--to=snitzer@redhat.com \
--cc=agk@redhat.com \
--cc=dm-devel@redhat.com \
--cc=j-nomura@ce.jp.nec.com \
--cc=jens.axboe@oracle.com \
--cc=linux-kernel@vger.kernel.org \
--cc=martin.petersen@oracle.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.