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-13609 llog: list all the log files correctly on MGS/MDT
[fs/lustre-release.git]
/
lustre
/
mgs
/
mgs_llog.c
diff --git
a/lustre/mgs/mgs_llog.c
b/lustre/mgs/mgs_llog.c
index
b6fb67f
..
3025dfb
100644
(file)
--- a/
lustre/mgs/mgs_llog.c
+++ b/
lustre/mgs/mgs_llog.c
@@
-4478,8
+4478,9
@@
int mgs_list_logs(const struct lu_env *env, struct mgs_device *mgs,
{
struct list_head log_list;
struct mgs_direntry *dirent, *n;
- char *out, *suffix;
- int l, remains, rc;
+ char *out, *suffix, prefix[] = "config_log: ";
+ int prefix_len = strlen(prefix);
+ int l, remains, start = 0, rc;
ENTRY;
@@
-4490,19
+4491,39
@@
int mgs_list_logs(const struct lu_env *env, struct mgs_device *mgs,
out = data->ioc_bulk;
remains = data->ioc_inllen1;
+ /* OBD_FAIL: fetch the config_log records from the specified one */
+ if (OBD_FAIL_CHECK(OBD_FAIL_CATLIST))
+ data->ioc_count = cfs_fail_val;
+
list_for_each_entry_safe(dirent, n, &log_list, mde_list) {
list_del_init(&dirent->mde_list);
suffix = strrchr(dirent->mde_name, '-');
if (suffix != NULL) {
- l = scnprintf(out, remains, "config_log: %s\n",
+ l = prefix_len + dirent->mde_len + 1;
+ if (remains - 1 < 0) {
+ /* No enough space for this record */
+ mgs_direntry_free(dirent);
+ goto out;
+ }
+ start++;
+ if (start < data->ioc_count) {
+ mgs_direntry_free(dirent);
+ continue;
+ }
+ l = scnprintf(out, remains, "%s%s\n", prefix,
dirent->mde_name);
out += l;
remains -= l;
}
mgs_direntry_free(dirent);
- if (remains <= 0)
- break;
+ if (remains == 0)
+ /* Full */
+ goto out;
}
+ /* Finished */
+ start = 0;
+out:
+ data->ioc_count = start;
RETURN(rc);
}
@@
-4920,7
+4941,7
@@
static int mgs_xattr_del(const struct lu_env *env, struct dt_object *obj)
ENTRY;
- dev = container_of
0
(obj->do_lu.lo_dev, struct dt_device, dd_lu_dev);
+ dev = container_of(obj->do_lu.lo_dev, struct dt_device, dd_lu_dev);
th = dt_trans_create(env, dev);
if (IS_ERR(th))
RETURN(PTR_ERR(th));
@@
-5436,6
+5457,12
@@
int mgs_nodemap_cmd(const struct lu_env *env, struct mgs_device *mgs,
if (rc == 0)
rc = nodemap_set_audit_mode(nodemap_name, bool_switch);
break;
+ case LCFG_NODEMAP_FORBID_ENCRYPT:
+ rc = kstrtobool(param, &bool_switch);
+ if (rc == 0)
+ rc = nodemap_set_forbid_encryption(nodemap_name,
+ bool_switch);
+ break;
case LCFG_NODEMAP_MAP_MODE:
if (strcmp("both", param) == 0)
rc = nodemap_set_mapping_mode(nodemap_name,