|
@@ -2826,9 +2826,10 @@ static void cache_resume(struct dm_target *ti)
|
|
/*
|
|
/*
|
|
* Status format:
|
|
* Status format:
|
|
*
|
|
*
|
|
- * <#used metadata blocks>/<#total metadata blocks>
|
|
|
|
|
|
+ * <metadata block size> <#used metadata blocks>/<#total metadata blocks>
|
|
|
|
+ * <cache block size> <#used cache blocks>/<#total cache blocks>
|
|
* <#read hits> <#read misses> <#write hits> <#write misses>
|
|
* <#read hits> <#read misses> <#write hits> <#write misses>
|
|
- * <#demotions> <#promotions> <#blocks in cache> <#dirty>
|
|
|
|
|
|
+ * <#demotions> <#promotions> <#dirty>
|
|
* <#features> <features>*
|
|
* <#features> <features>*
|
|
* <#core args> <core args>
|
|
* <#core args> <core args>
|
|
* <#policy args> <policy args>*
|
|
* <#policy args> <policy args>*
|
|
@@ -2869,17 +2870,20 @@ static void cache_status(struct dm_target *ti, status_type_t type,
|
|
|
|
|
|
residency = policy_residency(cache->policy);
|
|
residency = policy_residency(cache->policy);
|
|
|
|
|
|
- DMEMIT("%llu/%llu %u %u %u %u %u %u %llu %u ",
|
|
|
|
|
|
+ DMEMIT("%u %llu/%llu %u %llu/%llu %u %u %u %u %u %u %llu ",
|
|
|
|
+ (unsigned)(DM_CACHE_METADATA_BLOCK_SIZE >> SECTOR_SHIFT),
|
|
(unsigned long long)(nr_blocks_metadata - nr_free_blocks_metadata),
|
|
(unsigned long long)(nr_blocks_metadata - nr_free_blocks_metadata),
|
|
(unsigned long long)nr_blocks_metadata,
|
|
(unsigned long long)nr_blocks_metadata,
|
|
|
|
+ cache->sectors_per_block,
|
|
|
|
+ (unsigned long long) from_cblock(residency),
|
|
|
|
+ (unsigned long long) from_cblock(cache->cache_size),
|
|
(unsigned) atomic_read(&cache->stats.read_hit),
|
|
(unsigned) atomic_read(&cache->stats.read_hit),
|
|
(unsigned) atomic_read(&cache->stats.read_miss),
|
|
(unsigned) atomic_read(&cache->stats.read_miss),
|
|
(unsigned) atomic_read(&cache->stats.write_hit),
|
|
(unsigned) atomic_read(&cache->stats.write_hit),
|
|
(unsigned) atomic_read(&cache->stats.write_miss),
|
|
(unsigned) atomic_read(&cache->stats.write_miss),
|
|
(unsigned) atomic_read(&cache->stats.demotion),
|
|
(unsigned) atomic_read(&cache->stats.demotion),
|
|
(unsigned) atomic_read(&cache->stats.promotion),
|
|
(unsigned) atomic_read(&cache->stats.promotion),
|
|
- (unsigned long long) from_cblock(residency),
|
|
|
|
- cache->nr_dirty);
|
|
|
|
|
|
+ (unsigned long long) from_cblock(cache->nr_dirty));
|
|
|
|
|
|
if (writethrough_mode(&cache->features))
|
|
if (writethrough_mode(&cache->features))
|
|
DMEMIT("1 writethrough ");
|
|
DMEMIT("1 writethrough ");
|
|
@@ -3129,7 +3133,7 @@ static void cache_io_hints(struct dm_target *ti, struct queue_limits *limits)
|
|
|
|
|
|
static struct target_type cache_target = {
|
|
static struct target_type cache_target = {
|
|
.name = "cache",
|
|
.name = "cache",
|
|
- .version = {1, 2, 0},
|
|
|
|
|
|
+ .version = {1, 3, 0},
|
|
.module = THIS_MODULE,
|
|
.module = THIS_MODULE,
|
|
.ctr = cache_ctr,
|
|
.ctr = cache_ctr,
|
|
.dtr = cache_dtr,
|
|
.dtr = cache_dtr,
|