From: Andy Shevchenko <andy@kernel.org>
To: Kent Overstreet <kent.overstreet@linux.dev>
Cc: Suren Baghdasaryan <surenb@google.com>,
akpm@linux-foundation.org, keescook@chromium.org,
rostedt@goodmis.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v2 01/39] lib/string_helpers: Add flags param to string_get_size()
Date: Thu, 26 Oct 2023 16:12:52 +0300 [thread overview]
Message-ID: <ZTpl1ELUMEmne21U@smile.fi.intel.com> (raw)
In-Reply-To: <20231024194653.c24qbnk6bx3hep6y@moria.home.lan>
On Tue, Oct 24, 2023 at 03:46:53PM -0400, Kent Overstreet wrote:
> On Tue, Oct 24, 2023 at 05:26:18PM +0300, Andy Shevchenko wrote:
> > On Tue, Oct 24, 2023 at 06:45:58AM -0700, Suren Baghdasaryan wrote:
...
> > > string_get_size(nblocks, queue_logical_block_size(q),
> > > - STRING_UNITS_10, cap_str_10, sizeof(cap_str_10));
> > > + 0, cap_str_10, sizeof(cap_str_10));
> >
> > This doesn't seem right (even if it works). We shouldn't rely on the
> > implementation details.
>
> It's now a flags parameter: passing an empty set of flags is not
> "relying on an implementation detail".
0 is the "default" flag which is definitely relies on the "implementation
detail". And I think that it's better that caller will explicitly tell what
they want.
...
> > > -/* Descriptions of the types of units to
> > > - * print in */
> > > -enum string_size_units {
> > > - STRING_UNITS_10, /* use powers of 10^3 (standard SI) */
> > > - STRING_UNITS_2, /* use binary powers of 2^10 */
> > > +enum string_size_flags {
> >
> > So, please add UNITS_10 as it is now. It will help if anybody in the future
> > wants to add, e.g., 8-base numbers.
>
> Octal human readable numbers? No, no one's wanted that so far and I
> very much doubt anyone will want that in the future.
I also in doubt, but still, the explicit is better than implicit in this case
in my opinion.
> > > + STRING_SIZE_BASE2 = (1 << 0),
> > > + STRING_SIZE_NOSPACE = (1 << 1),
> > > + STRING_SIZE_NOBYTES = (1 << 2),
> > > };
...
> > > +enum string_size_units {
> > > + STRING_UNITS_10, /* use powers of 10^3 (standard SI) */
> > > + STRING_UNITS_2, /* use binary powers of 2^10 */
> > > +};
> >
> > And what a point now in having these?
>
> Minimizing the size of the diff and making it more reviewable. It's fine
> as an internal implementation thing.
It's not an issue to rename these all over the places as you already did that
for most of the users. And minimizing diff could be done better with
--histogram algorithm or so. Otherwise it is not an objective here, right?
...
> > I assume you need to split this to a few patches:
> >
> > 1) rename parameter to be a flags without renaming the definitions (this will
> > touch only string_helpers part);
> > 2) do the end job by renaming it all over the drivers;
> > 3) add the other flags one-by-one (each in a separate change);
> > 4) use new flags where it's needed;
>
> No, those would not be atomic changes. In particular changing the
> parameter to a flags without changing the callers - that's not how we do
> things.
> We're currently working towards _better_ type safety for enums, fyi.
>
> The new flags _could_ be a separate patch, but since it would be
> touching much the same code as the previous patch I don't see the point
> in splitting it.
Individual flags can be discussed, objected or approved and won't affect the
rest of the changes. That's why I highly recommend to reconsider splitting of
this change.
It would be possible to squash back if maintainer wants this, but from review
perspective you are adding more burden to the reviewer's shoulders is not good.
...
> > > static const char *const units_10[] = {
> > > - "B", "kB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"
> > > + "", "k", "M", "G", "T", "P", "E", "Z", "Y"
> > > };
> > > static const char *const units_2[] = {
> > > - "B", "KiB", "MiB", "GiB", "TiB", "PiB", "EiB", "ZiB", "YiB"
> > > + "", "Ki", "Mi", "Gi", "Ti", "Pi", "Ei", "Zi", "Yi"
> > > };
> >
> > Ouch, instead of leaving this and actually "cutting the letter" with NO* flags,
> > you did something different.
>
> Not sure I understand your complaint? Were you attached to the redundant
> Bs?
Flag means "cutting" while in the code you "adding" (doing the opposite). Why
not do exactly "cutting" without touching there. Or since you mentioned changes
across the all callers, make them explicitly tell that they want Bytes suffix.
--
With Best Regards,
Andy Shevchenko
next prev parent reply other threads:[~2023-10-26 13:20 UTC|newest]
Thread overview: 57+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-10-24 13:45 [PATCH v2 00/39] Memory allocation profiling Suren Baghdasaryan
2023-10-24 13:45 ` [PATCH v2 01/39] lib/string_helpers: Add flags param to string_get_size() Suren Baghdasaryan
2023-10-24 14:26 ` Andy Shevchenko
2023-10-24 17:08 ` Suren Baghdasaryan
2023-10-24 19:46 ` Kent Overstreet
2023-10-26 13:12 ` Andy Shevchenko [this message]
2023-10-26 18:44 ` Kent Overstreet
2023-10-30 20:07 ` Andy Shevchenko
2023-10-30 22:35 ` Kent Overstreet
2023-10-24 13:45 ` [PATCH v2 02/39] scripts/kallysms: Always include __start and __stop symbols Suren Baghdasaryan
2023-10-24 13:46 ` [PATCH v2 03/39] fs: Convert alloc_inode_sb() to a macro Suren Baghdasaryan
2023-10-24 13:46 ` [PATCH v2 04/39] nodemask: Split out include/linux/nodemask_types.h Suren Baghdasaryan
2023-10-24 13:46 ` [PATCH v2 05/39] prandom: Remove unused include Suren Baghdasaryan
2023-10-24 13:46 ` [PATCH v2 06/39] mm: enumerate all gfp flags Suren Baghdasaryan
2023-10-25 5:46 ` Petr Tesařík
2023-10-25 15:28 ` Suren Baghdasaryan
2023-10-28 17:21 ` Petr Tesařík
2023-10-24 13:46 ` [PATCH v2 07/39] mm: introduce slabobj_ext to support slab object extensions Suren Baghdasaryan
2023-10-24 13:46 ` [PATCH v2 08/39] mm: introduce __GFP_NO_OBJ_EXT flag to selectively prevent slabobj_ext creation Suren Baghdasaryan
2023-10-24 13:46 ` [PATCH v2 09/39] mm/slab: introduce SLAB_NO_OBJ_EXT to avoid obj_ext creation Suren Baghdasaryan
2023-10-24 13:46 ` [PATCH v2 10/39] mm: prevent slabobj_ext allocations for slabobj_ext and kmem_cache objects Suren Baghdasaryan
2023-10-24 13:46 ` [PATCH v2 11/39] slab: objext: introduce objext_flags as extension to page_memcg_data_flags Suren Baghdasaryan
2023-10-24 13:46 ` [PATCH v2 12/39] lib: code tagging framework Suren Baghdasaryan
2023-10-24 13:46 ` [PATCH v2 13/39] lib: code tagging module support Suren Baghdasaryan
2023-10-24 13:46 ` [PATCH v2 14/39] lib: prevent module unloading if memory is not freed Suren Baghdasaryan
2023-10-24 13:46 ` [PATCH v2 15/39] lib: add allocation tagging support for memory allocation profiling Suren Baghdasaryan
2023-10-24 13:46 ` [PATCH v2 16/39] lib: introduce support for page allocation tagging Suren Baghdasaryan
2023-10-24 13:46 ` [PATCH v2 17/39] change alloc_pages name in dma_map_ops to avoid name conflicts Suren Baghdasaryan
2023-10-24 13:46 ` [PATCH v2 18/39] change alloc_pages name in ivpu_bo_ops to avoid conflicts Suren Baghdasaryan
2023-10-24 13:46 ` [PATCH v2 19/39] mm: enable page allocation tagging Suren Baghdasaryan
2023-10-24 13:46 ` [PATCH v2 20/39] mm: create new codetag references during page splitting Suren Baghdasaryan
2023-10-24 13:46 ` [PATCH v2 21/39] mm/page_ext: enable early_page_ext when CONFIG_MEM_ALLOC_PROFILING_DEBUG=y Suren Baghdasaryan
2023-10-24 13:46 ` [PATCH v2 22/39] lib: add codetag reference into slabobj_ext Suren Baghdasaryan
2023-10-24 13:46 ` [PATCH v2 23/39] mm/slab: add allocation accounting into slab allocation and free paths Suren Baghdasaryan
2023-10-24 13:46 ` [PATCH v2 24/39] mm/slab: enable slab allocation tagging for kmalloc and friends Suren Baghdasaryan
2023-10-24 13:46 ` [PATCH v2 25/39] mm/slub: Mark slab_free_freelist_hook() __always_inline Suren Baghdasaryan
2023-10-24 13:46 ` [PATCH v2 26/39] mempool: Hook up to memory allocation profiling Suren Baghdasaryan
2023-10-24 13:46 ` [PATCH v2 27/39] xfs: Memory allocation profiling fixups Suren Baghdasaryan
2023-10-24 13:46 ` [PATCH v2 28/39] timekeeping: Fix a circular include dependency Suren Baghdasaryan
2023-10-25 17:33 ` Thomas Gleixner
2023-10-26 18:33 ` Suren Baghdasaryan
2023-10-26 23:05 ` Thomas Gleixner
2023-10-26 23:54 ` Kent Overstreet
2023-10-27 6:35 ` Arnd Bergmann
2023-10-24 13:46 ` [PATCH v2 29/39] mm: percpu: Introduce pcpuobj_ext Suren Baghdasaryan
2023-10-24 13:46 ` [PATCH v2 30/39] mm: percpu: Add codetag reference into pcpuobj_ext Suren Baghdasaryan
2023-10-24 13:46 ` [PATCH v2 31/39] mm: percpu: enable per-cpu allocation tagging Suren Baghdasaryan
2023-10-24 13:46 ` [PATCH v2 32/39] arm64: Fix circular header dependency Suren Baghdasaryan
2023-10-24 13:46 ` [PATCH v2 33/39] mm: vmalloc: Enable memory allocation profiling Suren Baghdasaryan
2023-10-24 13:46 ` [PATCH v2 34/39] rhashtable: Plumb through alloc tag Suren Baghdasaryan
2023-10-24 13:46 ` [PATCH v2 35/39] lib: add memory allocations report in show_mem() Suren Baghdasaryan
2023-10-24 13:46 ` [PATCH v2 36/39] codetag: debug: skip objext checking when it's for objext itself Suren Baghdasaryan
2023-10-24 13:46 ` [PATCH v2 37/39] codetag: debug: mark codetags for reserved pages as empty Suren Baghdasaryan
2023-10-24 13:46 ` [PATCH v2 38/39] codetag: debug: introduce OBJEXTS_ALLOC_FAIL to mark failed slab_ext allocations Suren Baghdasaryan
2023-10-24 13:46 ` [PATCH v2 39/39] MAINTAINERS: Add entries for code tagging and memory allocation profiling Suren Baghdasaryan
2023-10-24 18:29 ` [PATCH v2 00/39] Memory " Roman Gushchin
2023-10-24 18:38 ` Suren Baghdasaryan
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=ZTpl1ELUMEmne21U@smile.fi.intel.com \
--to=andy@kernel.org \
--cc=akpm@linux-foundation.org \
--cc=keescook@chromium.org \
--cc=kent.overstreet@linux.dev \
--cc=linux-kernel@vger.kernel.org \
--cc=rostedt@goodmis.org \
--cc=surenb@google.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