Skip to content

Commit

Permalink
dm cache: add policy name to status output
Browse files Browse the repository at this point in the history
The cache's policy may have been established using the "default" alias,
which is currently the "mq" policy but the default policy may change in
the future.  It is useful to know exactly which policy is being used.

Add a 'real' member to the dm_cache_policy_type structure and have the
"default" dm_cache_policy_type point to the real "mq"
dm_cache_policy_type.  Update dm_cache_policy_get_name() to check if
real is set, if so report the name of the real policy (not the alias).

Requested-by: Jonathan Brassow <[email protected]>
Signed-off-by: Mike Snitzer <[email protected]>
  • Loading branch information
snitm committed Jan 16, 2014
1 parent 74aa45c commit 2e68c4e
Show file tree
Hide file tree
Showing 5 changed files with 17 additions and 3 deletions.
3 changes: 2 additions & 1 deletion Documentation/device-mapper/cache.txt
Original file line number Diff line number Diff line change
Expand Up @@ -221,7 +221,7 @@ Status
<cache block size> <#used cache blocks>/<#total cache blocks>
<#read hits> <#read misses> <#write hits> <#write misses>
<#demotions> <#promotions> <#dirty> <#features> <features>*
<#core args> <core args>* <#policy args> <policy args>*
<#core args> <core args>* <policy name> <#policy args> <policy args>*

metadata block size : Fixed block size for each metadata block in
sectors
Expand Down Expand Up @@ -250,6 +250,7 @@ feature args : 'writethrough' (optional)
#core args : Number of core arguments (must be even)
core args : Key/value pairs for tuning the core
e.g. migration_threshold
policy name : Name of the policy
#policy args : Number of policy arguments to follow (must be even)
policy args : Key/value pairs
e.g. sequential_threshold
Expand Down
3 changes: 2 additions & 1 deletion drivers/md/dm-cache-policy-mq.c
Original file line number Diff line number Diff line change
Expand Up @@ -1276,7 +1276,8 @@ static struct dm_cache_policy_type default_policy_type = {
.version = {1, 2, 0},
.hint_size = 4,
.owner = THIS_MODULE,
.create = mq_create
.create = mq_create,
.real = &mq_policy_type
};

static int __init mq_init(void)
Expand Down
4 changes: 4 additions & 0 deletions drivers/md/dm-cache-policy.c
Original file line number Diff line number Diff line change
Expand Up @@ -146,6 +146,10 @@ const char *dm_cache_policy_get_name(struct dm_cache_policy *p)
{
struct dm_cache_policy_type *t = p->private;

/* if t->real is set then an alias was used (e.g. "default") */
if (t->real)
return t->real->name;

return t->name;
}
EXPORT_SYMBOL_GPL(dm_cache_policy_get_name);
Expand Down
6 changes: 6 additions & 0 deletions drivers/md/dm-cache-policy.h
Original file line number Diff line number Diff line change
Expand Up @@ -222,6 +222,12 @@ struct dm_cache_policy_type {
char name[CACHE_POLICY_NAME_SIZE];
unsigned version[CACHE_POLICY_VERSION_SIZE];

/*
* For use by an alias dm_cache_policy_type to point to the
* real dm_cache_policy_type.
*/
struct dm_cache_policy_type *real;

/*
* Policies may store a hint for each each cache block.
* Currently the size of this hint must be 0 or 4 bytes but we
Expand Down
4 changes: 3 additions & 1 deletion drivers/md/dm-cache-target.c
Original file line number Diff line number Diff line change
Expand Up @@ -2832,7 +2832,7 @@ static void cache_resume(struct dm_target *ti)
* <#demotions> <#promotions> <#dirty>
* <#features> <features>*
* <#core args> <core args>
* <#policy args> <policy args>*
* <policy name> <#policy args> <policy args>*
*/
static void cache_status(struct dm_target *ti, status_type_t type,
unsigned status_flags, char *result, unsigned maxlen)
Expand Down Expand Up @@ -2900,6 +2900,8 @@ static void cache_status(struct dm_target *ti, status_type_t type,
}

DMEMIT("2 migration_threshold %llu ", (unsigned long long) cache->migration_threshold);

DMEMIT("%s ", dm_cache_policy_get_name(cache->policy));
if (sz < maxlen) {
r = policy_emit_config_values(cache->policy, result + sz, maxlen - sz);
if (r)
Expand Down

0 comments on commit 2e68c4e

Please sign in to comment.