Whamcloud - gitweb
git://git.whamcloud.com
/
fs
/
lustre-release.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
LU-10467 ptlrpc: convert final users of LWI_TIMEOUT_INTERVAL
[fs/lustre-release.git]
/
lustre
/
utils
/
lustre_lfsck.c
diff --git
a/lustre/utils/lustre_lfsck.c
b/lustre/utils/lustre_lfsck.c
index
2524f99
..
5e48932
100644
(file)
--- a/
lustre/utils/lustre_lfsck.c
+++ b/
lustre/utils/lustre_lfsck.c
@@
-20,7
+20,7
@@
* GPL HEADER END
*/
/*
* GPL HEADER END
*/
/*
- * Copyright (c) 2012, 201
6
, Intel Corporation.
+ * Copyright (c) 2012, 201
7
, Intel Corporation.
*/
/*
* lustre/utils/lustre_lfsck.c
*/
/*
* lustre/utils/lustre_lfsck.c
@@
-87,12
+87,14
@@
struct lfsck_type_name {
enum lfsck_type ltn_type;
};
enum lfsck_type ltn_type;
};
+/* Note types must be in order of increasing value so we can iterate through
+ * this correctly. See enum lfsck_type for values. LU-9894. */
static struct lfsck_type_name lfsck_types_names[] = {
static struct lfsck_type_name lfsck_types_names[] = {
- { .ltn_name = "all", .ltn_type = LFSCK_TYPES_SUPPORTED },
- { .ltn_name = "default", .ltn_type = LFSCK_TYPES_DEF },
{ .ltn_name = "layout", .ltn_type = LFSCK_TYPE_LAYOUT },
{ .ltn_name = "namespace", .ltn_type = LFSCK_TYPE_NAMESPACE },
{ .ltn_name = "scrub", .ltn_type = LFSCK_TYPE_SCRUB },
{ .ltn_name = "layout", .ltn_type = LFSCK_TYPE_LAYOUT },
{ .ltn_name = "namespace", .ltn_type = LFSCK_TYPE_NAMESPACE },
{ .ltn_name = "scrub", .ltn_type = LFSCK_TYPE_SCRUB },
+ { .ltn_name = "all", .ltn_type = LFSCK_TYPES_SUPPORTED },
+ { .ltn_name = "default", .ltn_type = LFSCK_TYPES_DEF },
{ .ltn_name = NULL } };
static enum lfsck_type lfsck_name2type(const char *name)
{ .ltn_name = NULL } };
static enum lfsck_type lfsck_name2type(const char *name)
@@
-120,7
+122,7
@@
static const char *lfsck_type2name(__u16 type)
static void usage_start(void)
{
static void usage_start(void)
{
- fprintf(std
err
, "start LFSCK\n"
+ fprintf(std
out
, "start LFSCK\n"
"usage:\n"
"lfsck_start [-M | --device {MDT,OST}_device]\n"
" [-A | --all] [-c | --create_ostobj [on | off]]\n"
"usage:\n"
"lfsck_start [-M | --device {MDT,OST}_device]\n"
" [-A | --all] [-c | --create_ostobj [on | off]]\n"
@@
-155,7
+157,7
@@
static void usage_start(void)
static void usage_stop(void)
{
static void usage_stop(void)
{
- fprintf(std
err
, "stop LFSCK\n"
+ fprintf(std
out
, "stop LFSCK\n"
"usage:\n"
"lfsck_stop [-M | --device {MDT,OST}_device]\n"
" [-A | --all] [-h | --help]\n"
"usage:\n"
"lfsck_stop [-M | --device {MDT,OST}_device]\n"
" [-A | --all] [-h | --help]\n"
@@
-168,7
+170,7
@@
static void usage_stop(void)
static void usage_query(void)
{
static void usage_query(void)
{
- fprintf(std
err
, "check the LFSCK global status\n"
+ fprintf(std
out
, "check the LFSCK global status\n"
"usage:\n"
"lfsck_query [-M | --device MDT_device] [-h | --help]\n"
" [-t | --type check_type[,check_type...]]\n"
"usage:\n"
"lfsck_query [-M | --device MDT_device] [-h | --help]\n"
" [-t | --type check_type[,check_type...]]\n"
@@
-201,6
+203,7
@@
static int lfsck_get_dev_name(struct obd_ioctl_data *data, char *device,
int types, bool multipe_devices)
{
glob_t param = { 0 };
int types, bool multipe_devices)
{
glob_t param = { 0 };
+ size_t count = 0;
char *ptr;
int rc;
int i;
char *ptr;
int rc;
int i;
@@
-224,7
+227,16
@@
static int lfsck_get_dev_name(struct obd_ioctl_data *data, char *device,
}
}
}
}
- if (param.gl_pathc == 1)
+ /* we have both sysfs and debugfs entries so to get the correct number
+ * of devices only count the entries in the sysfs tree
+ */
+ for (i = 0; i < param.gl_pathc; i++) {
+ if (strstr(param.gl_pathv[i], "/sys/kernel/debug/lustre"))
+ continue;
+ count++;
+ }
+
+ if (count == 1)
goto pack;
if (!multipe_devices) {
goto pack;
if (!multipe_devices) {
@@
-243,8
+255,12
@@
static int lfsck_get_dev_name(struct obd_ioctl_data *data, char *device,
}
for (i = 1; i < param.gl_pathc; i++) {
}
for (i = 1; i < param.gl_pathc; i++) {
- char *ptr2 = strrchr(param.gl_pathv[i], '-');
+ char *ptr2;
+
+ if (strstr(param.gl_pathv[i], "/sys/kernel/debug/lustre"))
+ continue;
+ ptr2 = strrchr(param.gl_pathv[i], '-');
if (ptr2 == NULL) {
rc = -EINVAL;
goto out;
if (ptr2 == NULL) {
rc = -EINVAL;
goto out;
@@
-434,7
+450,7
@@
bad_type:
data.ioc_inlbuf1 = (char *)&start;
data.ioc_inllen1 = sizeof(start);
memset(buf, 0, sizeof(rawbuf));
data.ioc_inlbuf1 = (char *)&start;
data.ioc_inllen1 = sizeof(start);
memset(buf, 0, sizeof(rawbuf));
- rc =
obd
_ioctl_pack(&data, &buf, sizeof(rawbuf));
+ rc =
llapi
_ioctl_pack(&data, &buf, sizeof(rawbuf));
if (rc != 0) {
fprintf(stderr, "Fail to pack ioctl data: rc = %d.\n", rc);
return rc;
if (rc != 0) {
fprintf(stderr, "Fail to pack ioctl data: rc = %d.\n", rc);
return rc;
@@
-446,7
+462,7
@@
bad_type:
return rc;
}
return rc;
}
-
obd
_ioctl_unpack(&data, buf, sizeof(rawbuf));
+
llapi
_ioctl_unpack(&data, buf, sizeof(rawbuf));
printf("Started LFSCK on the device %s: scrub", device);
for (i = 0; lfsck_types_names[i].ltn_name != NULL; i++) {
if (start.ls_active & lfsck_types_names[i].ltn_type) {
printf("Started LFSCK on the device %s: scrub", device);
for (i = 0; lfsck_types_names[i].ltn_name != NULL; i++) {
if (start.ls_active & lfsck_types_names[i].ltn_type) {
@@
-507,7
+523,7
@@
int jt_lfsck_stop(int argc, char **argv)
data.ioc_inlbuf1 = (char *)&stop;
data.ioc_inllen1 = sizeof(stop);
memset(buf, 0, sizeof(rawbuf));
data.ioc_inlbuf1 = (char *)&stop;
data.ioc_inllen1 = sizeof(stop);
memset(buf, 0, sizeof(rawbuf));
- rc =
obd
_ioctl_pack(&data, &buf, sizeof(rawbuf));
+ rc =
llapi
_ioctl_pack(&data, &buf, sizeof(rawbuf));
if (rc != 0) {
fprintf(stderr, "Fail to pack ioctl data: rc = %d.\n", rc);
return rc;
if (rc != 0) {
fprintf(stderr, "Fail to pack ioctl data: rc = %d.\n", rc);
return rc;
@@
-584,7
+600,7
@@
bad_type:
data.ioc_inlbuf1 = (char *)&query;
data.ioc_inllen1 = sizeof(query);
memset(buf, 0, sizeof(rawbuf));
data.ioc_inlbuf1 = (char *)&query;
data.ioc_inllen1 = sizeof(query);
memset(buf, 0, sizeof(rawbuf));
- rc =
obd
_ioctl_pack(&data, &buf, sizeof(rawbuf));
+ rc =
llapi
_ioctl_pack(&data, &buf, sizeof(rawbuf));
if (rc != 0) {
fprintf(stderr, "Fail to pack ioctl data: rc = %d.\n", rc);
return rc;
if (rc != 0) {
fprintf(stderr, "Fail to pack ioctl data: rc = %d.\n", rc);
return rc;
@@
-596,7
+612,7
@@
bad_type:
return rc;
}
return rc;
}
-
obd
_ioctl_unpack(&data, buf, sizeof(rawbuf));
+
llapi
_ioctl_unpack(&data, buf, sizeof(rawbuf));
for (i = 0, type = 1 << i; i < LFSCK_TYPE_BITS; i++, type = 1 << i) {
const char *name;
int j;
for (i = 0, type = 1 << i; i < LFSCK_TYPE_BITS; i++, type = 1 << i) {
const char *name;
int j;
@@
-613,7
+629,8
@@
bad_type:
printf("%s_osts_%s: %d\n", name,
lfsck_status2name(j), query.lu_osts_count[i][j]);
printf("%s_osts_%s: %d\n", name,
lfsck_status2name(j), query.lu_osts_count[i][j]);
- printf("%s_repaired: %llu\n", name, query.lu_repaired[i]);
+ printf("%s_repaired: %llu\n", name,
+ (unsigned long long)query.lu_repaired[i]);
}
return 0;
}
return 0;