* [dm-devel] [PATCH] dm-writecache: add a "metadata_only" parameter
@ 2021-06-21 9:22 Mikulas Patocka
0 siblings, 0 replies; only message in thread
From: Mikulas Patocka @ 2021-06-21 9:22 UTC (permalink / raw)
To: Mike Snitzer
Cc: Joe Thornber, Heinz Mauelshagen, dm-devel, David Teigland,
Zdenek Kabelac, Alasdair Kergon
This patch adds a "metadata_only" parameter. When it is present, only
metadata are promoted to the cache. It improves performance in the "git
checkout" benchmark from 341s to 312s.
Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
Index: linux/drivers/md/dm-writecache.c
===================================================================
--- linux.orig/drivers/md/dm-writecache.c
+++ linux/drivers/md/dm-writecache.c
@@ -171,6 +171,7 @@ struct dm_writecache {
bool flush_on_suspend:1;
bool cleaner:1;
bool cleaner_set:1;
+ bool metadata_only:1;
unsigned high_wm_percent_value;
unsigned low_wm_percent_value;
@@ -1297,7 +1298,7 @@ static int writecache_map(struct dm_targ
writecache_flush(wc);
if (writecache_has_error(wc))
goto unlock_error;
- if (unlikely(wc->cleaner))
+ if (unlikely(wc->cleaner) || unlikely(wc->metadata_only))
goto unlock_remap_origin;
goto unlock_submit;
} else {
@@ -1376,7 +1377,7 @@ read_next_block:
}
found_entry = true;
} else {
- if (unlikely(wc->cleaner))
+ if (unlikely(wc->cleaner) || (wc->metadata_only && !(bio->bi_opf & REQ_META)))
goto direct_write;
}
e = writecache_pop_from_freelist(wc, (sector_t)-1);
@@ -2090,7 +2091,7 @@ static int writecache_ctr(struct dm_targ
struct wc_memory_superblock s;
static struct dm_arg _args[] = {
- {0, 16, "Invalid number of feature args"},
+ {0, 17, "Invalid number of feature args"},
};
as.argc = argc;
@@ -2317,6 +2318,8 @@ static int writecache_ctr(struct dm_targ
wc->writeback_fua = false;
wc->writeback_fua_set = true;
} else goto invalid_optional;
+ } else if (!strcasecmp(string, "metadata_only")) {
+ wc->metadata_only = true;
} else {
invalid_optional:
r = -EINVAL;
@@ -2540,6 +2543,8 @@ static void writecache_status(struct dm_
extra_args++;
if (wc->writeback_fua_set)
extra_args++;
+ if (wc->metadata_only)
+ extra_args++;
DMEMIT("%u", extra_args);
if (wc->start_sector_set)
@@ -2560,13 +2565,15 @@ static void writecache_status(struct dm_
DMEMIT(" cleaner");
if (wc->writeback_fua_set)
DMEMIT(" %sfua", wc->writeback_fua ? "" : "no");
+ if (wc->metadata_only)
+ DMEMIT(" metadata_only");
break;
}
}
static struct target_type writecache_target = {
.name = "writecache",
- .version = {1, 4, 0},
+ .version = {1, 5, 0},
.module = THIS_MODULE,
.ctr = writecache_ctr,
.dtr = writecache_dtr,
--
dm-devel mailing list
dm-devel@redhat.com
https://listman.redhat.com/mailman/listinfo/dm-devel
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2021-06-21 9:22 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-06-21 9:22 [dm-devel] [PATCH] dm-writecache: add a "metadata_only" parameter Mikulas Patocka
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).