Message ID | 20230421195807.2804512-4-mcgrof@kernel.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | block: simplify with PAGE_SECTORS_SHIFT | expand |
On Fri, Apr 21, 2023 at 12:58:05PM -0700, Luis Chamberlain wrote: > Just use the PAGE_SECTORS generic define. This produces no functional > changes. While at it use left shift to simplify this even further. How is FOO << 2 simpler than FOO * 4? > - return bioset_init(&iomap_ioend_bioset, 4 * (PAGE_SIZE / SECTOR_SIZE), > + return bioset_init(&iomap_ioend_bioset, PAGE_SECTORS << 2,
On Fri, Apr 21, 2023 at 09:14:00PM +0100, Matthew Wilcox wrote: > On Fri, Apr 21, 2023 at 12:58:05PM -0700, Luis Chamberlain wrote: > > Just use the PAGE_SECTORS generic define. This produces no functional > > changes. While at it use left shift to simplify this even further. > > How is FOO << 2 simpler than FOO * 4? > > > - return bioset_init(&iomap_ioend_bioset, 4 * (PAGE_SIZE / SECTOR_SIZE), > > + return bioset_init(&iomap_ioend_bioset, PAGE_SECTORS << 2, We could just do: - return bioset_init(&iomap_ioend_bioset, 4 * (PAGE_SIZE / SECTOR_SIZE), + return bioset_init(&iomap_ioend_bioset, 4 * PAGE_SECTORS, The shift just seemed optimal if we're just going to change it. Luis
On 4/21/23 4:02 PM, Luis Chamberlain wrote: > On Fri, Apr 21, 2023 at 09:14:00PM +0100, Matthew Wilcox wrote: >> On Fri, Apr 21, 2023 at 12:58:05PM -0700, Luis Chamberlain wrote: >>> Just use the PAGE_SECTORS generic define. This produces no functional >>> changes. While at it use left shift to simplify this even further. >> >> How is FOO << 2 simpler than FOO * 4? >> >>> - return bioset_init(&iomap_ioend_bioset, 4 * (PAGE_SIZE / SECTOR_SIZE), >>> + return bioset_init(&iomap_ioend_bioset, PAGE_SECTORS << 2, > > We could just do: > > > - return bioset_init(&iomap_ioend_bioset, 4 * (PAGE_SIZE / SECTOR_SIZE), > + return bioset_init(&iomap_ioend_bioset, 4 * PAGE_SECTORS, > > The shift just seemed optimal if we're just going to change it. It's going to generate the same code, but the multiplication is arguably easier to read (or harder to misread).
On Fri, Apr 21, 2023 at 04:24:57PM -0600, Jens Axboe wrote: > On 4/21/23 4:02 PM, Luis Chamberlain wrote: > > On Fri, Apr 21, 2023 at 09:14:00PM +0100, Matthew Wilcox wrote: > >> On Fri, Apr 21, 2023 at 12:58:05PM -0700, Luis Chamberlain wrote: > >>> Just use the PAGE_SECTORS generic define. This produces no functional > >>> changes. While at it use left shift to simplify this even further. > >> > >> How is FOO << 2 simpler than FOO * 4? > >> > >>> - return bioset_init(&iomap_ioend_bioset, 4 * (PAGE_SIZE / SECTOR_SIZE), > >>> + return bioset_init(&iomap_ioend_bioset, PAGE_SECTORS << 2, > > > > We could just do: > > > > > > - return bioset_init(&iomap_ioend_bioset, 4 * (PAGE_SIZE / SECTOR_SIZE), > > + return bioset_init(&iomap_ioend_bioset, 4 * PAGE_SECTORS, > > > > The shift just seemed optimal if we're just going to change it. > > It's going to generate the same code, but the multiplication is arguably > easier to read (or harder to misread). Then let's stick with the 4 * PAGE_SECTORS. Let me know if you need another patch. Luis
On Fri, Apr 21, 2023 at 03:02:30PM -0700, Luis Chamberlain wrote: > On Fri, Apr 21, 2023 at 09:14:00PM +0100, Matthew Wilcox wrote: > > On Fri, Apr 21, 2023 at 12:58:05PM -0700, Luis Chamberlain wrote: > > > Just use the PAGE_SECTORS generic define. This produces no functional > > > changes. While at it use left shift to simplify this even further. > > > > How is FOO << 2 simpler than FOO * 4? > > > > > - return bioset_init(&iomap_ioend_bioset, 4 * (PAGE_SIZE / SECTOR_SIZE), > > > + return bioset_init(&iomap_ioend_bioset, PAGE_SECTORS << 2, > > We could just do: > > > - return bioset_init(&iomap_ioend_bioset, 4 * (PAGE_SIZE / SECTOR_SIZE), > + return bioset_init(&iomap_ioend_bioset, 4 * PAGE_SECTORS, Yes, please. > The shift just seemed optimal if we're just going to change it. Nope, it's just premature optimisation at the expense of maintainability. The compiler will optimise the multiplication into shifts if that is the fastest way to do it for the given architecture the code is being compiled to. -Dave.
On 4/21/23 4:30?PM, Luis Chamberlain wrote: > On Fri, Apr 21, 2023 at 04:24:57PM -0600, Jens Axboe wrote: >> On 4/21/23 4:02?PM, Luis Chamberlain wrote: >>> On Fri, Apr 21, 2023 at 09:14:00PM +0100, Matthew Wilcox wrote: >>>> On Fri, Apr 21, 2023 at 12:58:05PM -0700, Luis Chamberlain wrote: >>>>> Just use the PAGE_SECTORS generic define. This produces no functional >>>>> changes. While at it use left shift to simplify this even further. >>>> >>>> How is FOO << 2 simpler than FOO * 4? >>>> >>>>> - return bioset_init(&iomap_ioend_bioset, 4 * (PAGE_SIZE / SECTOR_SIZE), >>>>> + return bioset_init(&iomap_ioend_bioset, PAGE_SECTORS << 2, >>> >>> We could just do: >>> >>> >>> - return bioset_init(&iomap_ioend_bioset, 4 * (PAGE_SIZE / SECTOR_SIZE), >>> + return bioset_init(&iomap_ioend_bioset, 4 * PAGE_SECTORS, >>> >>> The shift just seemed optimal if we're just going to change it. >> >> It's going to generate the same code, but the multiplication is arguably >> easier to read (or harder to misread). > > Then let's stick with the 4 * PAGE_SECTORS. Let me know if you need another > patch. Just send out a v2 at some point, you've also got a number of cases where there are superfluous parenthesis, at least in patch 4, and Willy pointed one out in an earlier patch too. Didn't check the last one. This will be 6.5 anyway I think, I already sent out the changes for the 6.4 merge window.
On Sat, Apr 22, 2023 at 08:34:20AM +1000, Dave Chinner wrote: > > > > - return bioset_init(&iomap_ioend_bioset, 4 * (PAGE_SIZE / SECTOR_SIZE), > > + return bioset_init(&iomap_ioend_bioset, 4 * PAGE_SECTORS, > > Yes, please. > > > The shift just seemed optimal if we're just going to change it. > > Nope, it's just premature optimisation at the expense of > maintainability. The compiler will optimise the multiplication into > shifts if that is the fastest way to do it for the given > architecture the code is being compiled to. We still had cases of the compiler not doing obvious multiplication/division to shift conversion lately. That being said: 1) this is an initialization path, no one actually cares 2) we're dealing with constants here, and compilers are really good at constant folding so yes, this should be using the much more readable version.
diff --git a/fs/iomap/buffered-io.c b/fs/iomap/buffered-io.c index 063133ec77f4..ba2824f405df 100644 --- a/fs/iomap/buffered-io.c +++ b/fs/iomap/buffered-io.c @@ -1819,7 +1819,7 @@ EXPORT_SYMBOL_GPL(iomap_writepages); static int __init iomap_init(void) { - return bioset_init(&iomap_ioend_bioset, 4 * (PAGE_SIZE / SECTOR_SIZE), + return bioset_init(&iomap_ioend_bioset, PAGE_SECTORS << 2, offsetof(struct iomap_ioend, io_inline_bio), BIOSET_NEED_BVECS); }
Just use the PAGE_SECTORS generic define. This produces no functional changes. While at it use left shift to simplify this even further. Signed-off-by: Luis Chamberlain <mcgrof@kernel.org> --- fs/iomap/buffered-io.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)