mirror of
git://sourceware.org/git/lvm2.git
synced 2024-12-21 13:34:40 +03:00
libdm: parse more info from cache status
Parse Fail/Error/need_check/ro status info from cache.
This commit is contained in:
parent
9918d95490
commit
29d1533a49
@ -1,5 +1,6 @@
|
|||||||
Version 1.02.120 -
|
Version 1.02.120 -
|
||||||
=================================
|
=================================
|
||||||
|
Improve parsing of cache status and report Fail, Error, needs_check, ro.
|
||||||
|
|
||||||
Version 1.02.119 - 4th March 2016
|
Version 1.02.119 - 4th March 2016
|
||||||
=================================
|
=================================
|
||||||
|
@ -363,6 +363,12 @@ struct dm_status_cache {
|
|||||||
char *policy_name;
|
char *policy_name;
|
||||||
int policy_argc;
|
int policy_argc;
|
||||||
char **policy_argv;
|
char **policy_argv;
|
||||||
|
|
||||||
|
unsigned error : 1; /* detected error (switches to fail soon) */
|
||||||
|
unsigned fail : 1; /* all I/O fails */
|
||||||
|
unsigned needs_check : 1; /* metadata needs check */
|
||||||
|
unsigned read_only : 1; /* metadata may not be changed */
|
||||||
|
uint32_t reserved : 28;
|
||||||
};
|
};
|
||||||
|
|
||||||
int dm_get_status_cache(struct dm_pool *mem, const char *params,
|
int dm_get_status_cache(struct dm_pool *mem, const char *params,
|
||||||
|
@ -194,6 +194,17 @@ int dm_get_status_cache(struct dm_pool *mem, const char *params,
|
|||||||
if (!(s = dm_pool_zalloc(mem, sizeof(struct dm_status_cache))))
|
if (!(s = dm_pool_zalloc(mem, sizeof(struct dm_status_cache))))
|
||||||
return_0;
|
return_0;
|
||||||
|
|
||||||
|
if (strstr(params, "Error")) {
|
||||||
|
s->error = 1;
|
||||||
|
s->fail = 1; /* This is also I/O fail state */
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (strstr(params, "Fail")) {
|
||||||
|
s->fail = 1;
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
|
||||||
/* Read in args that have definitive placement */
|
/* Read in args that have definitive placement */
|
||||||
if (sscanf(params,
|
if (sscanf(params,
|
||||||
" %" PRIu32
|
" %" PRIu32
|
||||||
@ -258,6 +269,13 @@ int dm_get_status_cache(struct dm_pool *mem, const char *params,
|
|||||||
(dm_split_words(str, s->policy_argc, 0, s->policy_argv) != s->policy_argc)))
|
(dm_split_words(str, s->policy_argc, 0, s->policy_argv) != s->policy_argc)))
|
||||||
goto bad;
|
goto bad;
|
||||||
|
|
||||||
|
/* TODO: improve this parser */
|
||||||
|
if (strstr(p, " ro"))
|
||||||
|
s->read_only = 1;
|
||||||
|
|
||||||
|
if (strstr(p, " needs_check"))
|
||||||
|
s->needs_check = 1;
|
||||||
|
out:
|
||||||
*status = s;
|
*status = s;
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user