Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756755AbZIRTH3 (ORCPT ); Fri, 18 Sep 2009 15:07:29 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1755044AbZIRTHZ (ORCPT ); Fri, 18 Sep 2009 15:07:25 -0400 Received: from mx1.redhat.com ([209.132.183.28]:1026 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752250AbZIRTHZ (ORCPT ); Fri, 18 Sep 2009 15:07:25 -0400 Date: Fri, 18 Sep 2009 15:07:20 -0400 From: Mike Snitzer To: "Jun'ichi Nomura" Cc: Jens Axboe , "Martin K. Petersen" , Alasdair G Kergon , David Strand , device-mapper development , linux-kernel@vger.kernel.org Subject: Re: [PATCH 1/3] block: Add blk_queue_copy_limits() Message-ID: <20090918190720.GA30063@redhat.com> References: <4AB3B43D.9000802@ce.jp.nec.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4AB3B43D.9000802@ce.jp.nec.com> User-Agent: Mutt/1.5.19 (2009-01-05) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2960 Lines: 75 On Fri, Sep 18 2009 at 12:24pm -0400, Jun'ichi Nomura 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 > Signed-off-by: Jun'ichi Nomura > Cc: David Strand > Cc: Mike Snitzer > Cc: Alasdair G Kergon > Cc: Martin K. Petersen > Cc: Jens Axboe > --- > 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... -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/