* [PATCH 0/2] mm/zswap: add minor const/conditional optimizations
@ 2018-01-02 10:03 Joey Pabalinas
2018-01-02 10:03 ` [PATCH 1/2] mm/zswap: make type and compressor const Joey Pabalinas
2018-01-02 10:03 ` [PATCH 2/2] mm/zswap: move `zswap_has_pool` to front of `if ()` Joey Pabalinas
0 siblings, 2 replies; 5+ messages in thread
From: Joey Pabalinas @ 2018-01-02 10:03 UTC (permalink / raw)
To: linux-mm; +Cc: sjenning, ddstreet, linux-kernel, Joey Pabalinas
Make a couple minor short-circuiting order and const changes
- Since the pointed-to objects are never modified through
these pointers, const-qualify type and compressor
variables.
- Test boolean before calling `strcmp()` to take
advantage of short-circuiting.
Joey Pabalinas (2):
mm/zswap: make type and compressor const
mm/zswap: move `zswap_has_pool` to front of `if ()`
mm/zswap.c | 12 +++++++-----
1 file changed, 7 insertions(+), 5 deletions(-)
--
2.15.1
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
^ permalink raw reply [flat|nested] 5+ messages in thread* [PATCH 1/2] mm/zswap: make type and compressor const 2018-01-02 10:03 [PATCH 0/2] mm/zswap: add minor const/conditional optimizations Joey Pabalinas @ 2018-01-02 10:03 ` Joey Pabalinas 2018-01-08 19:22 ` Dan Streetman 2018-01-02 10:03 ` [PATCH 2/2] mm/zswap: move `zswap_has_pool` to front of `if ()` Joey Pabalinas 1 sibling, 1 reply; 5+ messages in thread From: Joey Pabalinas @ 2018-01-02 10:03 UTC (permalink / raw) To: linux-mm; +Cc: sjenning, ddstreet, linux-kernel, Joey Pabalinas The characters pointed to by `zswap_compressor`, `type`, and `compressor` aren't ever modified. Add const to the static variable and both parameters in `zswap_pool_find_get()`, `zswap_pool_create()`, and `__zswap_param_set()` Signed-off-by: Joey Pabalinas <joeypabalinas@gmail.com> 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/mm/zswap.c b/mm/zswap.c index d39581a076c3aed1e9..a4f2dfaf9131694265 100644 --- a/mm/zswap.c +++ b/mm/zswap.c @@ -90,7 +90,7 @@ module_param_cb(enabled, &zswap_enabled_param_ops, &zswap_enabled, 0644); /* Crypto compressor to use */ #define ZSWAP_COMPRESSOR_DEFAULT "lzo" -static char *zswap_compressor = ZSWAP_COMPRESSOR_DEFAULT; +static const char *zswap_compressor = ZSWAP_COMPRESSOR_DEFAULT; static int zswap_compressor_param_set(const char *, const struct kernel_param *); static struct kernel_param_ops zswap_compressor_param_ops = { @@ -475,7 +475,8 @@ static struct zswap_pool *zswap_pool_last_get(void) } /* type and compressor must be null-terminated */ -static struct zswap_pool *zswap_pool_find_get(char *type, char *compressor) +static struct zswap_pool *zswap_pool_find_get(const char *type, + const char *compressor) { struct zswap_pool *pool; @@ -495,7 +496,8 @@ static struct zswap_pool *zswap_pool_find_get(char *type, char *compressor) return NULL; } -static struct zswap_pool *zswap_pool_create(char *type, char *compressor) +static struct zswap_pool *zswap_pool_create(const char *type, + const char *compressor) { struct zswap_pool *pool; char name[38]; /* 'zswap' + 32 char (max) num + \0 */ @@ -658,7 +660,7 @@ static void zswap_pool_put(struct zswap_pool *pool) /* val must be a null-terminated string */ static int __zswap_param_set(const char *val, const struct kernel_param *kp, - char *type, char *compressor) + const char *type, const char *compressor) { struct zswap_pool *pool, *put_pool = NULL; char *s = strstrip((char *)val); -- 2.15.1 -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a> ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 1/2] mm/zswap: make type and compressor const 2018-01-02 10:03 ` [PATCH 1/2] mm/zswap: make type and compressor const Joey Pabalinas @ 2018-01-08 19:22 ` Dan Streetman 0 siblings, 0 replies; 5+ messages in thread From: Dan Streetman @ 2018-01-08 19:22 UTC (permalink / raw) To: Joey Pabalinas; +Cc: Linux-MM, Seth Jennings, linux-kernel On Tue, Jan 2, 2018 at 5:03 AM, Joey Pabalinas <joeypabalinas@gmail.com> wrote: > The characters pointed to by `zswap_compressor`, `type`, and `compressor` > aren't ever modified. Add const to the static variable and both parameters in > `zswap_pool_find_get()`, `zswap_pool_create()`, and `__zswap_param_set()` > > Signed-off-by: Joey Pabalinas <joeypabalinas@gmail.com> Nak. Those variables are not const; they are updated in __zswap_param_set(). They aren't modified in pool_find_get() or pool_create(), but they certainly aren't globally const. > > 1 file changed, 6 insertions(+), 4 deletions(-) > > diff --git a/mm/zswap.c b/mm/zswap.c > index d39581a076c3aed1e9..a4f2dfaf9131694265 100644 > --- a/mm/zswap.c > +++ b/mm/zswap.c > @@ -90,7 +90,7 @@ module_param_cb(enabled, &zswap_enabled_param_ops, &zswap_enabled, 0644); > > /* Crypto compressor to use */ > #define ZSWAP_COMPRESSOR_DEFAULT "lzo" > -static char *zswap_compressor = ZSWAP_COMPRESSOR_DEFAULT; > +static const char *zswap_compressor = ZSWAP_COMPRESSOR_DEFAULT; > static int zswap_compressor_param_set(const char *, > const struct kernel_param *); > static struct kernel_param_ops zswap_compressor_param_ops = { > @@ -475,7 +475,8 @@ static struct zswap_pool *zswap_pool_last_get(void) > } > > /* type and compressor must be null-terminated */ > -static struct zswap_pool *zswap_pool_find_get(char *type, char *compressor) > +static struct zswap_pool *zswap_pool_find_get(const char *type, > + const char *compressor) > { > struct zswap_pool *pool; > > @@ -495,7 +496,8 @@ static struct zswap_pool *zswap_pool_find_get(char *type, char *compressor) > return NULL; > } > > -static struct zswap_pool *zswap_pool_create(char *type, char *compressor) > +static struct zswap_pool *zswap_pool_create(const char *type, > + const char *compressor) > { > struct zswap_pool *pool; > char name[38]; /* 'zswap' + 32 char (max) num + \0 */ > @@ -658,7 +660,7 @@ static void zswap_pool_put(struct zswap_pool *pool) > > /* val must be a null-terminated string */ > static int __zswap_param_set(const char *val, const struct kernel_param *kp, > - char *type, char *compressor) > + const char *type, const char *compressor) > { > struct zswap_pool *pool, *put_pool = NULL; > char *s = strstrip((char *)val); > -- > 2.15.1 > -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a> ^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH 2/2] mm/zswap: move `zswap_has_pool` to front of `if ()` 2018-01-02 10:03 [PATCH 0/2] mm/zswap: add minor const/conditional optimizations Joey Pabalinas 2018-01-02 10:03 ` [PATCH 1/2] mm/zswap: make type and compressor const Joey Pabalinas @ 2018-01-02 10:03 ` Joey Pabalinas 2018-01-08 19:34 ` Dan Streetman 1 sibling, 1 reply; 5+ messages in thread From: Joey Pabalinas @ 2018-01-02 10:03 UTC (permalink / raw) To: linux-mm; +Cc: sjenning, ddstreet, linux-kernel, Joey Pabalinas `zwap_has_pool` is a simple boolean, so it should be tested first to avoid unnecessarily calling `strcmp()`. Test `zswap_has_pool` first to take advantage of the short-circuiting behavior of && in `__zswap_param_set()`. Signed-off-by: Joey Pabalinas <joeypabalinas@gmail.com> 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mm/zswap.c b/mm/zswap.c index a4f2dfaf9131694265..dbf35139471f692798 100644 --- a/mm/zswap.c +++ b/mm/zswap.c @@ -672,7 +672,7 @@ static int __zswap_param_set(const char *val, const struct kernel_param *kp, } /* no change required */ - if (!strcmp(s, *(char **)kp->arg) && zswap_has_pool) + if (zswap_has_pool && !strcmp(s, *(char **)kp->arg)) return 0; /* if this is load-time (pre-init) param setting, -- 2.15.1 -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a> ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 2/2] mm/zswap: move `zswap_has_pool` to front of `if ()` 2018-01-02 10:03 ` [PATCH 2/2] mm/zswap: move `zswap_has_pool` to front of `if ()` Joey Pabalinas @ 2018-01-08 19:34 ` Dan Streetman 0 siblings, 0 replies; 5+ messages in thread From: Dan Streetman @ 2018-01-08 19:34 UTC (permalink / raw) To: Joey Pabalinas; +Cc: Linux-MM, Seth Jennings, linux-kernel On Tue, Jan 2, 2018 at 5:03 AM, Joey Pabalinas <joeypabalinas@gmail.com> wrote: > `zwap_has_pool` is a simple boolean, so it should be tested first > to avoid unnecessarily calling `strcmp()`. Test `zswap_has_pool` > first to take advantage of the short-circuiting behavior of && in > `__zswap_param_set()`. > > Signed-off-by: Joey Pabalinas <joeypabalinas@gmail.com> > > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/mm/zswap.c b/mm/zswap.c > index a4f2dfaf9131694265..dbf35139471f692798 100644 > --- a/mm/zswap.c > +++ b/mm/zswap.c > @@ -672,7 +672,7 @@ static int __zswap_param_set(const char *val, const struct kernel_param *kp, > } > > /* no change required */ > - if (!strcmp(s, *(char **)kp->arg) && zswap_has_pool) > + if (zswap_has_pool && !strcmp(s, *(char **)kp->arg)) Nak. This function is only called when actually changing one of the zswap module params, which is extremely rare (typically once per boot, per parameter, if at all). Changing the ordering will have virtually no noticeable impact on anything. Additionally, !zswap_has_pool is strictly an initialization-failed temporary situation (until the compressor/zpool params are be set to working implementation values), and in all "normal" conditions it will be true, meaning this reordering will actually *add* time - the normal path is for this check to *not* be true, so keeping the strcmp first bypasses bothering with checking zswap_has_pool. > return 0; > > /* if this is load-time (pre-init) param setting, > -- > 2.15.1 > -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a> ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2018-01-08 19:35 UTC | newest] Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2018-01-02 10:03 [PATCH 0/2] mm/zswap: add minor const/conditional optimizations Joey Pabalinas 2018-01-02 10:03 ` [PATCH 1/2] mm/zswap: make type and compressor const Joey Pabalinas 2018-01-08 19:22 ` Dan Streetman 2018-01-02 10:03 ` [PATCH 2/2] mm/zswap: move `zswap_has_pool` to front of `if ()` Joey Pabalinas 2018-01-08 19:34 ` Dan Streetman
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox