From: Bart Van Assche <bvanassche@acm.org>
To: Changheun Lee <nanich.lee@samsung.com>
Cc: Johannes.Thumshirn@wdc.com, asml.silence@gmail.com,
axboe@kernel.dk, damien.lemoal@wdc.com,
gregkh@linuxfoundation.org, hch@infradead.org,
jisoo2146.oh@samsung.com, junho89.kim@samsung.com,
linux-block@vger.kernel.org, linux-kernel@vger.kernel.org,
ming.lei@redhat.com, mj0123.lee@samsung.com, osandov@fb.com,
patchwork-bot@kernel.org, seunghwan.hyun@samsung.com,
sookwan7.kim@samsung.com, tj@kernel.org, tom.leiming@gmail.com,
woosung2.lee@samsung.com, yt0928.kim@samsung.com
Subject: Re: [PATCH v7 1/3] bio: limit bio max size
Date: Mon, 19 Apr 2021 15:16:56 -0700 [thread overview]
Message-ID: <918e0d57-ffbc-7dcd-6eba-87d22aceb9d6@acm.org> (raw)
In-Reply-To: <20210419054951.6244-1-nanich.lee@samsung.com>
On 4/18/21 10:49 PM, Changheun Lee wrote:
>>> @@ -167,6 +168,7 @@ void blk_queue_max_hw_sectors(struct request_queue *q, unsigned int max_hw_secto
>>> max_sectors = round_down(max_sectors,
>>> limits->logical_block_size >> SECTOR_SHIFT);
>>> limits->max_sectors = max_sectors;
>>> + limits->bio_max_bytes = max_sectors << SECTOR_SHIFT;
>>>
>>> q->backing_dev_info->io_pages = max_sectors >> (PAGE_SHIFT - 9);
>>> }
>>
>> Can the new shift operation overflow? If so, how about using
>> check_shl_overflow()?
>
> Actually, overflow might be not heppen in case of physical device.
> But I modified as below. feedback about this.
>
> @@ -168,6 +169,9 @@ void blk_queue_max_hw_sectors(struct request_queue *q, unsigned int max_hw_secto
> limits->logical_block_size >> SECTOR_SHIFT);
> limits->max_sectors = max_sectors;
>
> + limits->bio_max_bytes = check_shl_overflow(max_sectors, SECTOR_SHIFT,
> + &limits->bio_max_bytes) ? UINT_MAX : max_sectors << SECTOR_SHIFT;
> +
> q->backing_dev_info->io_pages = max_sectors >> (PAGE_SHIFT - 9);
> }
> EXPORT_SYMBOL(blk_queue_max_hw_sectors);
If no overflow occurs, check_shl_overflow() stores the result in the
memory location the third argument points at. So the above expression
can be simplified into the following:
if (check_shl_overflow(max_sectors, SECTOR_SHIFT, &limits->bio_max_bytes)) {
limits->bio_max_bytes = UINT_MAX;
}
>>> diff --git a/include/linux/bio.h b/include/linux/bio.h
>>> index d0246c92a6e8..e5add63da3af 100644
>>> --- a/include/linux/bio.h
>>> +++ b/include/linux/bio.h
>>> @@ -106,6 +106,8 @@ static inline void *bio_data(struct bio *bio)
>>> return NULL;
>>> }
>>>
>>> +extern unsigned int bio_max_size(struct bio *bio);
>>
>> You may want to define bio_max_size() as an inline function in bio.h
>> such that no additional function calls are introduced in the hot path.
>
> I tried, but it is not easy. because request_queue structure of blkdev.h
> should be referred in bio.h. I think it's not good to apply as a inline function.
Please don't worry about this. Inlining bio_max_size() is not a big
concern to me.
Thanks,
Bart.
next prev parent reply other threads:[~2021-04-19 22:17 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <CGME20210413031256epcas1p2f3c3f140192178928b92fc070010354d@epcas1p2.samsung.com>
2021-04-13 2:54 ` [PATCH v7 0/3] limit bio max size Changheun Lee
[not found] ` <CGME20210413031257epcas1p329f38effa71445de2464cee32002e618@epcas1p3.samsung.com>
2021-04-13 2:55 ` [PATCH v7 1/3] bio: " Changheun Lee
2021-04-13 16:18 ` Bart Van Assche
[not found] ` <CGME20210415105608epcas1p269bae87b8a7dab133753f7916420251e@epcas1p2.samsung.com>
2021-04-15 10:38 ` Changheun Lee
2021-04-15 19:18 ` Bart Van Assche
[not found] ` <CGME20210416060827epcas1p39350d45cef64c91be681b76180b63140@epcas1p3.samsung.com>
2021-04-16 5:50 ` Changheun Lee
2021-04-16 15:28 ` Bart Van Assche
[not found] ` <CGME20210419060745epcas1p220138a5de8e08201a6bcd9193c37fc51@epcas1p2.samsung.com>
2021-04-19 5:49 ` Changheun Lee
2021-04-19 22:16 ` Bart Van Assche [this message]
[not found] ` <CGME20210420011139epcas1p429e791d6f8ffea596661e9366babbec8@epcas1p4.samsung.com>
2021-04-20 0:53 ` Changheun Lee
[not found] ` <CGME20210413031258epcas1p469e9bd0145a49d440541cee899fd4d8e@epcas1p4.samsung.com>
2021-04-13 2:55 ` [PATCH v7 2/3] ufs: set QUEUE_FLAG_LIMIT_BIO_SIZE Changheun Lee
2021-04-13 16:14 ` Bart Van Assche
[not found] ` <CGME20210414015804epcas1p21a7581e22dc553530c516459f32d78a9@epcas1p2.samsung.com>
2021-04-14 1:40 ` Changheun Lee
[not found] ` <CGME20210413031259epcas1p4406eaed9ba20e684fc038bf1937b94ff@epcas1p4.samsung.com>
2021-04-13 2:55 ` [PATCH v7 3/3] bio: add limit_bio_size sysfs Changheun Lee
2021-04-13 7:35 ` Greg KH
[not found] ` <CGME20210413113510epcas1p29dd90b47ba8c8701a2309fc34698ad29@epcas1p2.samsung.com>
2021-04-13 11:17 ` Changheun Lee
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=918e0d57-ffbc-7dcd-6eba-87d22aceb9d6@acm.org \
--to=bvanassche@acm.org \
--cc=Johannes.Thumshirn@wdc.com \
--cc=asml.silence@gmail.com \
--cc=axboe@kernel.dk \
--cc=damien.lemoal@wdc.com \
--cc=gregkh@linuxfoundation.org \
--cc=hch@infradead.org \
--cc=jisoo2146.oh@samsung.com \
--cc=junho89.kim@samsung.com \
--cc=linux-block@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=ming.lei@redhat.com \
--cc=mj0123.lee@samsung.com \
--cc=nanich.lee@samsung.com \
--cc=osandov@fb.com \
--cc=patchwork-bot@kernel.org \
--cc=seunghwan.hyun@samsung.com \
--cc=sookwan7.kim@samsung.com \
--cc=tj@kernel.org \
--cc=tom.leiming@gmail.com \
--cc=woosung2.lee@samsung.com \
--cc=yt0928.kim@samsung.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).