[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20181126221256.GD30411@vader>
Date: Mon, 26 Nov 2018 14:12:56 -0800
From: Omar Sandoval <osandov@...ndov.com>
To: Ming Lei <ming.lei@...hat.com>
Cc: Jens Axboe <axboe@...nel.dk>, linux-block@...r.kernel.org,
linux-kernel@...r.kernel.org, linux-mm@...ck.org,
Theodore Ts'o <tytso@....edu>, Omar Sandoval <osandov@...com>,
Sagi Grimberg <sagi@...mberg.me>,
Dave Chinner <dchinner@...hat.com>,
Kent Overstreet <kent.overstreet@...il.com>,
Mike Snitzer <snitzer@...hat.com>, dm-devel@...hat.com,
Alexander Viro <viro@...iv.linux.org.uk>,
linux-fsdevel@...r.kernel.org, Shaohua Li <shli@...nel.org>,
linux-raid@...r.kernel.org, David Sterba <dsterba@...e.com>,
linux-btrfs@...r.kernel.org,
"Darrick J . Wong" <darrick.wong@...cle.com>,
linux-xfs@...r.kernel.org, Gao Xiang <gaoxiang25@...wei.com>,
Christoph Hellwig <hch@....de>, linux-ext4@...r.kernel.org,
Coly Li <colyli@...e.de>, linux-bcache@...r.kernel.org,
Boaz Harrosh <ooo@...ctrozaur.com>,
Bob Peterson <rpeterso@...hat.com>, cluster-devel@...hat.com
Subject: Re: [PATCH V12 03/20] block: remove the "cluster" flag
On Mon, Nov 26, 2018 at 10:17:03AM +0800, Ming Lei wrote:
> From: Christoph Hellwig <hch@....de>
>
> The cluster flag implements some very old SCSI behavior. As far as I
> can tell the original intent was to enable or disable any kind of
> segment merging. But the actually visible effect to the LLDD is that
> it limits each segments to be inside a single page, which we can
> also affect by setting the maximum segment size and the segment
> boundary.
Reviewed-by: Omar Sandoval <osandov@...com>
One comment typo below.
> Signed-off-by: Christoph Hellwig <hch@....de>
>
> Replace virt boundary with segment boundary limit.
>
> Signed-off-by: Ming Lei <ming.lei@...hat.com>
> ---
> block/blk-merge.c | 20 ++++++++------------
> block/blk-settings.c | 3 ---
> block/blk-sysfs.c | 5 +----
> drivers/scsi/scsi_lib.c | 20 ++++++++++++++++----
> include/linux/blkdev.h | 6 ------
> 5 files changed, 25 insertions(+), 29 deletions(-)
>
[snip]
> diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c
> index 0df15cb738d2..78d6d05992b0 100644
> --- a/drivers/scsi/scsi_lib.c
> +++ b/drivers/scsi/scsi_lib.c
> @@ -1810,6 +1810,8 @@ static int scsi_map_queues(struct blk_mq_tag_set *set)
> void __scsi_init_queue(struct Scsi_Host *shost, struct request_queue *q)
> {
> struct device *dev = shost->dma_dev;
> + unsigned max_segment_size = dma_get_max_seg_size(dev);
> + unsigned long segment_boundary = shost->dma_boundary;
>
> /*
> * this limit is imposed by hardware restrictions
> @@ -1828,13 +1830,23 @@ void __scsi_init_queue(struct Scsi_Host *shost, struct request_queue *q)
> blk_queue_max_hw_sectors(q, shost->max_sectors);
> if (shost->unchecked_isa_dma)
> blk_queue_bounce_limit(q, BLK_BOUNCE_ISA);
> - blk_queue_segment_boundary(q, shost->dma_boundary);
> dma_set_seg_boundary(dev, shost->dma_boundary);
>
> - blk_queue_max_segment_size(q, dma_get_max_seg_size(dev));
> + /*
> + * Clustering is a really old concept from the stone age of Linux
> + * SCSI support. But the basic idea is that we never give the
> + * driver a segment that spans multiple pages. For that we need
> + * to limit the segment size, and set the segment boundary so that
> + * we never merge a second segment which is no page aligned.
Typo, "which is not page aligned".
Powered by blists - more mailing lists