cmdprio: do not allocate memory for unused data direction
authorNiklas Cassel <niklas.cassel@wdc.com>
Fri, 12 Nov 2021 09:54:40 +0000 (09:54 +0000)
committerJens Axboe <axboe@kernel.dk>
Fri, 12 Nov 2021 15:49:55 +0000 (08:49 -0700)
All cmdprio options only support data directions read and write.
However, each cmdprio option allocates memory for ddir trim as well,
even though nothing is ever written to this memory.

Change this so that we don't allocate memory for something which is
never used.

Signed-off-by: Niklas Cassel <niklas.cassel@wdc.com>
Reviewed-by: Damien Le Moal <damien.lemoal@opensource.wdc.com>
Link: https://lore.kernel.org/r/20211112095428.158300-4-Niklas.Cassel@wdc.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
engines/cmdprio.c
engines/cmdprio.h

index f5b7342f5bbfb9b330a971573d206f12cd35dffe..2c764e496cbc2fc42e3fff2e51c9d0fc894161df 100644 (file)
@@ -56,7 +56,7 @@ int fio_cmdprio_bssplit_parse(struct thread_data *td, const char *input,
        ret = str_split_parse(td, str, fio_cmdprio_bssplit_ddir, cmdprio, false);
 
        if (parse_dryrun()) {
-               for (i = 0; i < DDIR_RWDIR_CNT; i++) {
+               for (i = 0; i < CMDPRIO_RWDIR_CNT; i++) {
                        free(cmdprio->bssplit[i]);
                        cmdprio->bssplit[i] = NULL;
                        cmdprio->bssplit_nr[i] = 0;
@@ -101,7 +101,7 @@ int fio_cmdprio_init(struct thread_data *td, struct cmdprio *cmdprio,
         * If cmdprio_percentage/cmdprio_bssplit is set and cmdprio_class
         * is not set, default to RT priority class.
         */
-       for (i = 0; i < DDIR_RWDIR_CNT; i++) {
+       for (i = 0; i < CMDPRIO_RWDIR_CNT; i++) {
                if (cmdprio->percentage[i]) {
                        if (!cmdprio->class[i])
                                cmdprio->class[i] = IOPRIO_CLASS_RT;
index 33a8f5b96c336cbb09eba78cc3f27442d4a4a406..d3265741b554dc0c03b183cc46d0f0352222f798 100644 (file)
@@ -8,12 +8,15 @@
 
 #include "../fio.h"
 
+/* read and writes only, no trim */
+#define CMDPRIO_RWDIR_CNT 2
+
 struct cmdprio {
-       unsigned int percentage[DDIR_RWDIR_CNT];
-       unsigned int class[DDIR_RWDIR_CNT];
-       unsigned int level[DDIR_RWDIR_CNT];
-       unsigned int bssplit_nr[DDIR_RWDIR_CNT];
-       struct bssplit *bssplit[DDIR_RWDIR_CNT];
+       unsigned int percentage[CMDPRIO_RWDIR_CNT];
+       unsigned int class[CMDPRIO_RWDIR_CNT];
+       unsigned int level[CMDPRIO_RWDIR_CNT];
+       unsigned int bssplit_nr[CMDPRIO_RWDIR_CNT];
+       struct bssplit *bssplit[CMDPRIO_RWDIR_CNT];
 };
 
 int fio_cmdprio_bssplit_parse(struct thread_data *td, const char *input,