Commit 255eac20 authored by Mike Snitzer's avatar Mike Snitzer

dm cache: display 'needs_check' in status if it is set

There is currently no way to see that the needs_check flag has been set
in the metadata.  Display 'needs_check' in the cache status if it is set
in the cache metadata.

Also, update cache documentation.
Signed-off-by: default avatarMike Snitzer <snitzer@redhat.com>
parent e4c78e21
...@@ -258,6 +258,12 @@ cache metadata mode : ro if read-only, rw if read-write ...@@ -258,6 +258,12 @@ cache metadata mode : ro if read-only, rw if read-write
no further I/O will be permitted and the status will just no further I/O will be permitted and the status will just
contain the string 'Fail'. The userspace recovery tools contain the string 'Fail'. The userspace recovery tools
should then be used. should then be used.
needs_check : 'needs_check' if set, '-' if not set
A metadata operation has failed, resulting in the needs_check
flag being set in the metadata's superblock. The metadata
device must be deactivated and checked/repaired before the
cache can be made fully operational again. '-' indicates
needs_check is not set.
Messages Messages
-------- --------
......
...@@ -3496,7 +3496,7 @@ static void cache_resume(struct dm_target *ti) ...@@ -3496,7 +3496,7 @@ static void cache_resume(struct dm_target *ti)
* <#demotions> <#promotions> <#dirty> * <#demotions> <#promotions> <#dirty>
* <#features> <features>* * <#features> <features>*
* <#core args> <core args> * <#core args> <core args>
* <policy name> <#policy args> <policy args>* <cache metadata mode> * <policy name> <#policy args> <policy args>* <cache metadata mode> <needs_check>
*/ */
static void cache_status(struct dm_target *ti, status_type_t type, static void cache_status(struct dm_target *ti, status_type_t type,
unsigned status_flags, char *result, unsigned maxlen) unsigned status_flags, char *result, unsigned maxlen)
...@@ -3582,6 +3582,11 @@ static void cache_status(struct dm_target *ti, status_type_t type, ...@@ -3582,6 +3582,11 @@ static void cache_status(struct dm_target *ti, status_type_t type,
else else
DMEMIT("rw "); DMEMIT("rw ");
if (dm_cache_metadata_needs_check(cache->cmd))
DMEMIT("needs_check ");
else
DMEMIT("- ");
break; break;
case STATUSTYPE_TABLE: case STATUSTYPE_TABLE:
...@@ -3820,7 +3825,7 @@ static void cache_io_hints(struct dm_target *ti, struct queue_limits *limits) ...@@ -3820,7 +3825,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, 7, 0}, .version = {1, 8, 0},
.module = THIS_MODULE, .module = THIS_MODULE,
.ctr = cache_ctr, .ctr = cache_ctr,
.dtr = cache_dtr, .dtr = cache_dtr,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment