From: Jan Kara <jack@suse.cz>
To: Christoph Hellwig <hch@lst.de>
Cc: Jens Axboe <axboe@kernel.dk>, Song Liu <song@kernel.org>,
Hans de Goede <hdegoede@redhat.com>, Coly Li <colyli@suse.de>,
Richard Weinberger <richard@nod.at>,
Minchan Kim <minchan@kernel.org>,
Johannes Thumshirn <Johannes.Thumshirn@wdc.com>,
Justin Sanders <justin@coraid.com>,
linux-mtd@lists.infradead.org, dm-devel@redhat.com,
linux-block@vger.kernel.org, linux-bcache@vger.kernel.org,
linux-kernel@vger.kernel.org, drbd-dev@lists.linbit.com,
linux-raid@vger.kernel.org, linux-fsdevel@vger.kernel.org,
linux-mm@kvack.org, cgroups@vger.kernel.org
Subject: Re: [PATCH 07/13] block: lift setting the readahead size into the block layer
Date: Tue, 22 Sep 2020 11:13:14 +0200 [thread overview]
Message-ID: <20200922091314.GD16464@quack2.suse.cz> (raw)
In-Reply-To: <20200921080734.452759-8-hch@lst.de>
On Mon 21-09-20 10:07:28, Christoph Hellwig wrote:
> Drivers shouldn't really mess with the readahead size, as that is a VM
> concept. Instead set it based on the optimal I/O size by lifting the
> algorithm from the md driver when registering the disk. Also set
> bdi->io_pages there as well by applying the same scheme based on
> max_sectors.
>
> Signed-off-by: Christoph Hellwig <hch@lst.de>
> Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
...
> diff --git a/block/blk-settings.c b/block/blk-settings.c
> index 76a7e03bcd6cac..01049e9b998f1d 100644
> --- a/block/blk-settings.c
> +++ b/block/blk-settings.c
> @@ -452,6 +452,8 @@ EXPORT_SYMBOL(blk_limits_io_opt);
> void blk_queue_io_opt(struct request_queue *q, unsigned int opt)
> {
> blk_limits_io_opt(&q->limits, opt);
> + q->backing_dev_info->ra_pages =
> + max(queue_io_opt(q) * 2 / PAGE_SIZE, VM_READAHEAD_PAGES);
> }
> EXPORT_SYMBOL(blk_queue_io_opt);
>
> @@ -628,9 +630,6 @@ void disk_stack_limits(struct gendisk *disk, struct block_device *bdev,
> printk(KERN_NOTICE "%s: Warning: Device %s is misaligned\n",
> top, bottom);
> }
> -
> - t->backing_dev_info->io_pages =
> - t->limits.max_sectors >> (PAGE_SHIFT - 9);
> }
> EXPORT_SYMBOL(disk_stack_limits);
One thing I've noticed is that blk_stack_limits() does not use
blk_queue_io_opt() to set new optimal limit. That means that ra_pages won't
be updated for the new queue. E.g. your DRDB change below will result in
ra_pages not being properly updated AFAICT.
Similarly it isn't clear to me how io_pages would get updated after
blk_stack_limits() updates max_hw_sectors...
Otherwise the patch looks good.
Honza
> diff --git a/drivers/block/drbd/drbd_nl.c b/drivers/block/drbd/drbd_nl.c
> index aaff5bde391506..f8fb1c9b1bb6c1 100644
> --- a/drivers/block/drbd/drbd_nl.c
> +++ b/drivers/block/drbd/drbd_nl.c
> @@ -1360,18 +1360,8 @@ static void drbd_setup_queue_param(struct drbd_device *device, struct drbd_backi
> decide_on_discard_support(device, q, b, discard_zeroes_if_aligned);
> decide_on_write_same_support(device, q, b, o, disable_write_same);
>
> - if (b) {
> + if (b)
> blk_stack_limits(&q->limits, &b->limits, 0);
> -
> - if (q->backing_dev_info->ra_pages !=
> - b->backing_dev_info->ra_pages) {
> - drbd_info(device, "Adjusting my ra_pages to backing device's (%lu -> %lu)\n",
> - q->backing_dev_info->ra_pages,
> - b->backing_dev_info->ra_pages);
> - q->backing_dev_info->ra_pages =
> - b->backing_dev_info->ra_pages;
> - }
> - }
> fixup_discard_if_not_supported(q);
> fixup_write_zeroes(device, q);
> }
--
Jan Kara <jack@suse.com>
SUSE Labs, CR
WARNING: multiple messages have this Message-ID (diff)
From: Jan Kara <jack@suse.cz>
To: Christoph Hellwig <hch@lst.de>
Cc: Jens Axboe <axboe@kernel.dk>,
linux-raid@vger.kernel.org, Hans de Goede <hdegoede@redhat.com>,
Justin Sanders <justin@coraid.com>,
Minchan Kim <minchan@kernel.org>,
Richard Weinberger <richard@nod.at>,
linux-bcache@vger.kernel.org, Coly Li <colyli@suse.de>,
linux-block@vger.kernel.org, Song Liu <song@kernel.org>,
dm-devel@redhat.com, linux-mtd@lists.infradead.org,
Johannes Thumshirn <Johannes.Thumshirn@wdc.com>,
linux-fsdevel@vger.kernel.org, cgroups@vger.kernel.org,
linux-mm@kvack.org, linux-kernel@vger.kernel.org,
drbd-dev@lists.linbit.com
Subject: Re: [PATCH 07/13] block: lift setting the readahead size into the block layer
Date: Tue, 22 Sep 2020 11:13:14 +0200 [thread overview]
Message-ID: <20200922091314.GD16464@quack2.suse.cz> (raw)
In-Reply-To: <20200921080734.452759-8-hch@lst.de>
On Mon 21-09-20 10:07:28, Christoph Hellwig wrote:
> Drivers shouldn't really mess with the readahead size, as that is a VM
> concept. Instead set it based on the optimal I/O size by lifting the
> algorithm from the md driver when registering the disk. Also set
> bdi->io_pages there as well by applying the same scheme based on
> max_sectors.
>
> Signed-off-by: Christoph Hellwig <hch@lst.de>
> Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
...
> diff --git a/block/blk-settings.c b/block/blk-settings.c
> index 76a7e03bcd6cac..01049e9b998f1d 100644
> --- a/block/blk-settings.c
> +++ b/block/blk-settings.c
> @@ -452,6 +452,8 @@ EXPORT_SYMBOL(blk_limits_io_opt);
> void blk_queue_io_opt(struct request_queue *q, unsigned int opt)
> {
> blk_limits_io_opt(&q->limits, opt);
> + q->backing_dev_info->ra_pages =
> + max(queue_io_opt(q) * 2 / PAGE_SIZE, VM_READAHEAD_PAGES);
> }
> EXPORT_SYMBOL(blk_queue_io_opt);
>
> @@ -628,9 +630,6 @@ void disk_stack_limits(struct gendisk *disk, struct block_device *bdev,
> printk(KERN_NOTICE "%s: Warning: Device %s is misaligned\n",
> top, bottom);
> }
> -
> - t->backing_dev_info->io_pages =
> - t->limits.max_sectors >> (PAGE_SHIFT - 9);
> }
> EXPORT_SYMBOL(disk_stack_limits);
One thing I've noticed is that blk_stack_limits() does not use
blk_queue_io_opt() to set new optimal limit. That means that ra_pages won't
be updated for the new queue. E.g. your DRDB change below will result in
ra_pages not being properly updated AFAICT.
Similarly it isn't clear to me how io_pages would get updated after
blk_stack_limits() updates max_hw_sectors...
Otherwise the patch looks good.
Honza
> diff --git a/drivers/block/drbd/drbd_nl.c b/drivers/block/drbd/drbd_nl.c
> index aaff5bde391506..f8fb1c9b1bb6c1 100644
> --- a/drivers/block/drbd/drbd_nl.c
> +++ b/drivers/block/drbd/drbd_nl.c
> @@ -1360,18 +1360,8 @@ static void drbd_setup_queue_param(struct drbd_device *device, struct drbd_backi
> decide_on_discard_support(device, q, b, discard_zeroes_if_aligned);
> decide_on_write_same_support(device, q, b, o, disable_write_same);
>
> - if (b) {
> + if (b)
> blk_stack_limits(&q->limits, &b->limits, 0);
> -
> - if (q->backing_dev_info->ra_pages !=
> - b->backing_dev_info->ra_pages) {
> - drbd_info(device, "Adjusting my ra_pages to backing device's (%lu -> %lu)\n",
> - q->backing_dev_info->ra_pages,
> - b->backing_dev_info->ra_pages);
> - q->backing_dev_info->ra_pages =
> - b->backing_dev_info->ra_pages;
> - }
> - }
> fixup_discard_if_not_supported(q);
> fixup_write_zeroes(device, q);
> }
--
Jan Kara <jack@suse.com>
SUSE Labs, CR
______________________________________________________
Linux MTD discussion mailing list
http://lists.infradead.org/mailman/listinfo/linux-mtd/
WARNING: multiple messages have this Message-ID (diff)
From: Jan Kara <jack@suse.cz>
To: Christoph Hellwig <hch@lst.de>
Cc: Jens Axboe <axboe@kernel.dk>,
linux-raid@vger.kernel.org, Hans de Goede <hdegoede@redhat.com>,
Justin Sanders <justin@coraid.com>,
Minchan Kim <minchan@kernel.org>,
Richard Weinberger <richard@nod.at>,
linux-bcache@vger.kernel.org, Coly Li <colyli@suse.de>,
linux-block@vger.kernel.org, Song Liu <song@kernel.org>,
dm-devel@redhat.com, linux-mtd@lists.infradead.org,
Johannes Thumshirn <Johannes.Thumshirn@wdc.com>,
linux-fsdevel@vger.kernel.org, cgroups@vger.kernel.org,
linux-mm@kvack.org, linux-kernel@vger.kernel.org,
drbd-dev@lists.linbit.com
Subject: Re: [Drbd-dev] [PATCH 07/13] block: lift setting the readahead size into the block layer
Date: Tue, 22 Sep 2020 11:13:14 +0200 [thread overview]
Message-ID: <20200922091314.GD16464@quack2.suse.cz> (raw)
In-Reply-To: <20200921080734.452759-8-hch@lst.de>
On Mon 21-09-20 10:07:28, Christoph Hellwig wrote:
> Drivers shouldn't really mess with the readahead size, as that is a VM
> concept. Instead set it based on the optimal I/O size by lifting the
> algorithm from the md driver when registering the disk. Also set
> bdi->io_pages there as well by applying the same scheme based on
> max_sectors.
>
> Signed-off-by: Christoph Hellwig <hch@lst.de>
> Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
...
> diff --git a/block/blk-settings.c b/block/blk-settings.c
> index 76a7e03bcd6cac..01049e9b998f1d 100644
> --- a/block/blk-settings.c
> +++ b/block/blk-settings.c
> @@ -452,6 +452,8 @@ EXPORT_SYMBOL(blk_limits_io_opt);
> void blk_queue_io_opt(struct request_queue *q, unsigned int opt)
> {
> blk_limits_io_opt(&q->limits, opt);
> + q->backing_dev_info->ra_pages =
> + max(queue_io_opt(q) * 2 / PAGE_SIZE, VM_READAHEAD_PAGES);
> }
> EXPORT_SYMBOL(blk_queue_io_opt);
>
> @@ -628,9 +630,6 @@ void disk_stack_limits(struct gendisk *disk, struct block_device *bdev,
> printk(KERN_NOTICE "%s: Warning: Device %s is misaligned\n",
> top, bottom);
> }
> -
> - t->backing_dev_info->io_pages =
> - t->limits.max_sectors >> (PAGE_SHIFT - 9);
> }
> EXPORT_SYMBOL(disk_stack_limits);
One thing I've noticed is that blk_stack_limits() does not use
blk_queue_io_opt() to set new optimal limit. That means that ra_pages won't
be updated for the new queue. E.g. your DRDB change below will result in
ra_pages not being properly updated AFAICT.
Similarly it isn't clear to me how io_pages would get updated after
blk_stack_limits() updates max_hw_sectors...
Otherwise the patch looks good.
Honza
> diff --git a/drivers/block/drbd/drbd_nl.c b/drivers/block/drbd/drbd_nl.c
> index aaff5bde391506..f8fb1c9b1bb6c1 100644
> --- a/drivers/block/drbd/drbd_nl.c
> +++ b/drivers/block/drbd/drbd_nl.c
> @@ -1360,18 +1360,8 @@ static void drbd_setup_queue_param(struct drbd_device *device, struct drbd_backi
> decide_on_discard_support(device, q, b, discard_zeroes_if_aligned);
> decide_on_write_same_support(device, q, b, o, disable_write_same);
>
> - if (b) {
> + if (b)
> blk_stack_limits(&q->limits, &b->limits, 0);
> -
> - if (q->backing_dev_info->ra_pages !=
> - b->backing_dev_info->ra_pages) {
> - drbd_info(device, "Adjusting my ra_pages to backing device's (%lu -> %lu)\n",
> - q->backing_dev_info->ra_pages,
> - b->backing_dev_info->ra_pages);
> - q->backing_dev_info->ra_pages =
> - b->backing_dev_info->ra_pages;
> - }
> - }
> fixup_discard_if_not_supported(q);
> fixup_write_zeroes(device, q);
> }
--
Jan Kara <jack@suse.com>
SUSE Labs, CR
next prev parent reply other threads:[~2020-09-22 9:13 UTC|newest]
Thread overview: 86+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-09-21 8:07 bdi cleanups v6 Christoph Hellwig
2020-09-21 8:07 ` [Drbd-dev] " Christoph Hellwig
2020-09-21 8:07 ` Christoph Hellwig
2020-09-21 8:07 ` Christoph Hellwig
2020-09-21 8:07 ` [PATCH 01/13] fs: remove the unused SB_I_MULTIROOT flag Christoph Hellwig
2020-09-21 8:07 ` [Drbd-dev] " Christoph Hellwig
2020-09-21 8:07 ` Christoph Hellwig
2020-09-21 8:07 ` [PATCH 02/13] drbd: remove dead code in device_to_statistics Christoph Hellwig
2020-09-21 8:07 ` [Drbd-dev] " Christoph Hellwig
2020-09-21 8:07 ` Christoph Hellwig
2020-09-21 8:07 ` [PATCH 03/13] bcache: inherit the optimal I/O size Christoph Hellwig
2020-09-21 8:07 ` [Drbd-dev] " Christoph Hellwig
2020-09-21 8:07 ` Christoph Hellwig
2020-09-21 9:54 ` Coly Li
2020-09-21 9:54 ` Coly Li
[not found] ` <b547a1b6-ab03-0520-012d-86d112c83d92-l3A5Bk7waGM@public.gmane.org>
2020-09-21 14:00 ` Christoph Hellwig
2020-09-21 14:00 ` [Drbd-dev] " Christoph Hellwig
2020-09-21 14:00 ` Christoph Hellwig
2020-09-21 14:00 ` Christoph Hellwig
2020-09-21 15:09 ` Coly Li
2020-09-21 15:09 ` Coly Li
2020-09-21 18:18 ` Christoph Hellwig
2020-09-21 18:18 ` [Drbd-dev] " Christoph Hellwig
2020-09-21 18:18 ` Christoph Hellwig
[not found] ` <20200921080734.452759-4-hch-jcswGhMUV9g@public.gmane.org>
2020-09-22 8:44 ` Jan Kara
2020-09-22 8:44 ` [Drbd-dev] " Jan Kara
2020-09-22 8:44 ` Jan Kara
2020-09-22 8:44 ` Jan Kara
2020-09-22 9:39 ` Coly Li
2020-09-22 9:39 ` Coly Li
2020-09-21 8:07 ` [PATCH 04/13] aoe: set an " Christoph Hellwig
2020-09-21 8:07 ` [Drbd-dev] " Christoph Hellwig
2020-09-21 8:07 ` Christoph Hellwig
2020-09-22 8:45 ` Jan Kara
2020-09-22 8:45 ` [Drbd-dev] " Jan Kara
2020-09-22 8:45 ` Jan Kara
2020-09-21 8:07 ` [PATCH 05/13] bdi: initialize ->ra_pages and ->io_pages in bdi_init Christoph Hellwig
2020-09-21 8:07 ` [Drbd-dev] " Christoph Hellwig
2020-09-21 8:07 ` Christoph Hellwig
[not found] ` <20200921080734.452759-6-hch-jcswGhMUV9g@public.gmane.org>
2020-09-22 8:49 ` Jan Kara
2020-09-22 8:49 ` [Drbd-dev] " Jan Kara
2020-09-22 8:49 ` Jan Kara
2020-09-22 8:49 ` Jan Kara
2020-09-23 15:16 ` Christoph Hellwig
2020-09-23 15:16 ` [Drbd-dev] " Christoph Hellwig
2020-09-23 15:16 ` Christoph Hellwig
[not found] ` <20200921080734.452759-1-hch-jcswGhMUV9g@public.gmane.org>
2020-09-21 8:07 ` [PATCH 06/13] md: update the optimal I/O size on reshape Christoph Hellwig
2020-09-21 8:07 ` [Drbd-dev] " Christoph Hellwig
2020-09-21 8:07 ` Christoph Hellwig
2020-09-21 8:07 ` Christoph Hellwig
2020-09-21 8:07 ` [PATCH 07/13] block: lift setting the readahead size into the block layer Christoph Hellwig
2020-09-21 8:07 ` [Drbd-dev] " Christoph Hellwig
2020-09-21 8:07 ` Christoph Hellwig
2020-09-22 9:13 ` Jan Kara [this message]
2020-09-22 9:13 ` [Drbd-dev] " Jan Kara
2020-09-22 9:13 ` Jan Kara
2020-09-22 9:51 ` Coly Li
2020-09-22 9:51 ` Coly Li
2020-09-21 8:07 ` [PATCH 08/13] bdi: remove BDI_CAP_CGROUP_WRITEBACK Christoph Hellwig
2020-09-21 8:07 ` [Drbd-dev] " Christoph Hellwig
2020-09-21 8:07 ` Christoph Hellwig
2020-09-21 8:07 ` [PATCH 09/13] bdi: remove BDI_CAP_SYNCHRONOUS_IO Christoph Hellwig
2020-09-21 8:07 ` [Drbd-dev] " Christoph Hellwig
2020-09-21 8:07 ` Christoph Hellwig
2020-09-21 8:07 ` [PATCH 10/13] mm: use SWP_SYNCHRONOUS_IO more intelligently Christoph Hellwig
2020-09-21 8:07 ` [Drbd-dev] " Christoph Hellwig
2020-09-21 8:07 ` Christoph Hellwig
2020-09-21 8:07 ` [PATCH 11/13] bdi: replace BDI_CAP_STABLE_WRITES with a queue and a sb flag Christoph Hellwig
2020-09-21 8:07 ` [Drbd-dev] " Christoph Hellwig
2020-09-21 8:07 ` Christoph Hellwig
2020-09-21 8:07 ` [PATCH 12/13] bdi: invert BDI_CAP_NO_ACCT_WB Christoph Hellwig
2020-09-21 8:07 ` [Drbd-dev] " Christoph Hellwig
2020-09-21 8:07 ` Christoph Hellwig
2020-09-21 8:07 ` [PATCH 13/13] bdi: replace BDI_CAP_NO_{WRITEBACK,ACCT_DIRTY} with a single flag Christoph Hellwig
2020-09-21 8:07 ` [Drbd-dev] [PATCH 13/13] bdi: replace BDI_CAP_NO_{WRITEBACK, ACCT_DIRTY} " Christoph Hellwig
2020-09-21 8:07 ` Christoph Hellwig
-- strict thread matches above, loose matches on Subject: below --
2020-09-24 6:51 bdi cleanups v7 Christoph Hellwig
2020-09-24 6:51 ` [PATCH 07/13] block: lift setting the readahead size into the block layer Christoph Hellwig
2020-09-24 6:51 ` Christoph Hellwig
[not found] ` <20200924065140.726436-8-hch-jcswGhMUV9g@public.gmane.org>
2020-09-24 14:53 ` Jan Kara
2020-09-24 14:53 ` Jan Kara
2020-09-24 14:53 ` Jan Kara
2020-09-24 15:57 ` Martin K. Petersen
2020-09-24 15:57 ` Martin K. Petersen
2020-09-24 15:57 ` Martin K. Petersen
2020-09-24 15:03 ` Mike Snitzer
2020-09-24 15:03 ` Mike Snitzer
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=20200922091314.GD16464@quack2.suse.cz \
--to=jack@suse.cz \
--cc=Johannes.Thumshirn@wdc.com \
--cc=axboe@kernel.dk \
--cc=cgroups@vger.kernel.org \
--cc=colyli@suse.de \
--cc=dm-devel@redhat.com \
--cc=drbd-dev@lists.linbit.com \
--cc=hch@lst.de \
--cc=hdegoede@redhat.com \
--cc=justin@coraid.com \
--cc=linux-bcache@vger.kernel.org \
--cc=linux-block@vger.kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=linux-mtd@lists.infradead.org \
--cc=linux-raid@vger.kernel.org \
--cc=minchan@kernel.org \
--cc=richard@nod.at \
--cc=song@kernel.org \
/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.