From 829dd8b39a8dd0ec409ed24a3178afe1b14e516e Mon Sep 17 00:00:00 2001 From: nathan Date: Thu, 28 May 2009 00:00:48 +0000 Subject: [PATCH] b=19293 i=rread i=ericm move AT tunables to /proc/sys/lustre add AT MGS param parsing --- lustre/ChangeLog | 5 +++ lustre/include/lustre_param.h | 10 ++++-- lustre/include/obd_support.h | 5 +++ lustre/mgs/mgs_llog.c | 46 ++++++++++++++----------- lustre/obdclass/class_obd.c | 14 +++++++- lustre/obdclass/linux/linux-sysctl.c | 66 ++++++++++++++++++++++++++++++++++++ lustre/obdclass/obd_config.c | 35 ++++++++++++++++++- lustre/ptlrpc/service.c | 14 +++----- lustre/tests/recovery-small.sh | 2 +- lustre/tests/replay-single.sh | 20 ++++------- lustre/tests/sanity-quota.sh | 10 +++--- lustre/tests/test-framework.sh | 27 ++++----------- lustre/utils/llog_reader.c | 17 ++++++---- 13 files changed, 192 insertions(+), 79 deletions(-) diff --git a/lustre/ChangeLog b/lustre/ChangeLog index 2ef29c2..491de4e 100644 --- a/lustre/ChangeLog +++ b/lustre/ChangeLog @@ -32,6 +32,11 @@ Details : Set read-ahead limite for every file and only do read-ahead when read RPC. Severity : enhancement +Bugzilla : 19293 +Description: move AT tunable parameters for more consistent usage +Details : add AT tunables under /proc/sys/lustre, add to conf_param parsing + +Severity : enhancement Bugzilla : 17974 Description: add lazystatfs mount option to allow statfs(2) to skip down OSTs Details : allow skip disconnected ost for send statfs request and hide error diff --git a/lustre/include/lustre_param.h b/lustre/include/lustre_param.h index a0c9f6a..76e60a7 100644 --- a/lustre/include/lustre_param.h +++ b/lustre/include/lustre_param.h @@ -65,8 +65,13 @@ int do_lcfg(char *cfgname, lnet_nid_t nid, int cmd, */ /* System global or special params not handled in obd's proc */ -#define PARAM_SYS_TIMEOUT "sys.timeout=" /* global */ -#define PARAM_SYS_LDLM_TIMEOUT "sys.ldlm_timeout=" /* global */ +#define PARAM_TIMEOUT "timeout=" /* global */ +#define PARAM_LDLM_TIMEOUT "ldlm_timeout=" /* global */ +#define PARAM_AT_MIN "at_min=" /* global */ +#define PARAM_AT_MAX "at_max=" /* global */ +#define PARAM_AT_EXTRA "at_extra=" /* global */ +#define PARAM_AT_EARLY_MARGIN "at_early_margin=" /* global */ +#define PARAM_AT_HISTORY "at_history=" /* global */ #define PARAM_MGSNODE "mgsnode=" /* during mount */ #define PARAM_FAILNODE "failover.node=" /* llog generation */ #define PARAM_FAILMODE "failover.mode=" /* llog generation */ @@ -80,6 +85,7 @@ int do_lcfg(char *cfgname, lnet_nid_t nid, int cmd, #define PARAM_MDC "mdc." #define PARAM_LLITE "llite." #define PARAM_LOV "lov." +#define PARAM_SYS "sys." /* global */ #define PARAM_SRPC "srpc." #define PARAM_SRPC_FLVR "srpc.flavor." #define PARAM_SRPC_UDESC "srpc.udesc.cli2mdt" diff --git a/lustre/include/obd_support.h b/lustre/include/obd_support.h index 5bc65e6..463f33c 100644 --- a/lustre/include/obd_support.h +++ b/lustre/include/obd_support.h @@ -74,6 +74,11 @@ extern unsigned int obd_dump_on_eviction; networking / disk / timings affected by load (use Adaptive Timeouts) */ extern unsigned int obd_timeout; /* seconds */ extern unsigned int ldlm_timeout; /* seconds */ +extern unsigned int at_min; +extern unsigned int at_max; +extern unsigned int at_history; +extern int at_early_margin; +extern int at_extra; extern unsigned int obd_sync_filter; extern unsigned int obd_max_dirty_pages; extern atomic_t obd_dirty_pages; diff --git a/lustre/mgs/mgs_llog.c b/lustre/mgs/mgs_llog.c index 11aea49..dc52ab0 100644 --- a/lustre/mgs/mgs_llog.c +++ b/lustre/mgs/mgs_llog.c @@ -1855,25 +1855,41 @@ static int mgs_wlp_lcfg(struct obd_device *obd, struct fs_db *fsdb, lustre_cfg_free(lcfg); return rc; } -/* write global obd timeout or ldlm timeout param into log */ -static int mgs_write_log_timeout(struct obd_device *obd, struct fs_db *fsdb, - struct mgs_target_info *mti, char *value, - int cmd, char *comment) + +/* write global variable settings into log */ +static int mgs_write_log_sys(struct obd_device *obd, struct fs_db *fsdb, + struct mgs_target_info *mti, char *sys, char *ptr) { struct lustre_cfg_bufs bufs; struct lustre_cfg *lcfg; - int timeout; + char *tmp; + int cmd, val; int rc; - timeout = simple_strtoul(value, NULL, 0); - CDEBUG(D_MGS, "timeout: %d (%s)\n", timeout, comment); + if (class_match_param(ptr, PARAM_TIMEOUT, &tmp) == 0) + cmd = LCFG_SET_TIMEOUT; + else if (class_match_param(ptr, PARAM_LDLM_TIMEOUT, &tmp) == 0) + cmd = LCFG_SET_LDLM_TIMEOUT; + /* Check for known params here so we can return error to lctl */ + else if ((class_match_param(ptr, PARAM_AT_MIN, &tmp) == 0) + || (class_match_param(ptr, PARAM_AT_MAX, &tmp) == 0) + || (class_match_param(ptr, PARAM_AT_EXTRA, &tmp) == 0) + || (class_match_param(ptr, PARAM_AT_EARLY_MARGIN, &tmp) == 0) + || (class_match_param(ptr, PARAM_AT_HISTORY, &tmp) == 0)) + cmd = LCFG_PARAM; + else + return -EINVAL; + + val = simple_strtoul(tmp, NULL, 0); + CDEBUG(D_MGS, "global %s = %d\n", ptr, val); lustre_cfg_bufs_reset(&bufs, NULL); + lustre_cfg_bufs_set_string(&bufs, 1, sys); lcfg = lustre_cfg_new(cmd, &bufs); - lcfg->lcfg_num = timeout; + lcfg->lcfg_num = val; /* modify all servers and clients */ rc = mgs_write_log_direct_all(obd, fsdb, mti, lcfg, mti->mti_fsname, - comment); + ptr); lustre_cfg_free(lcfg); return rc; } @@ -2271,16 +2287,8 @@ static int mgs_write_log_param(struct obd_device *obd, struct fs_db *fsdb, GOTO(end, rc); } - if (class_match_param(ptr, PARAM_SYS_TIMEOUT, &tmp) == 0) { - rc = mgs_write_log_timeout(obd, fsdb, mti, tmp, - LCFG_SET_TIMEOUT, "obd_timeout"); - GOTO(end, rc); - } - - if (class_match_param(ptr, PARAM_SYS_LDLM_TIMEOUT, &tmp) == 0) { - rc = mgs_write_log_timeout(obd, fsdb, mti, tmp, - LCFG_SET_LDLM_TIMEOUT, - "ldlm_timeout"); + if (class_match_param(ptr, PARAM_SYS, &tmp) == 0) { + rc = mgs_write_log_sys(obd, fsdb, mti, ptr, tmp); GOTO(end, rc); } diff --git a/lustre/obdclass/class_obd.c b/lustre/obdclass/class_obd.c index 498ae5a..fa704a8 100644 --- a/lustre/obdclass/class_obd.c +++ b/lustre/obdclass/class_obd.c @@ -72,9 +72,16 @@ __u64 obd_pages; unsigned int obd_debug_peer_on_timeout; unsigned int obd_dump_on_timeout; unsigned int obd_dump_on_eviction; +unsigned int obd_max_dirty_pages = 256; unsigned int obd_timeout = OBD_TIMEOUT_DEFAULT; /* seconds */ unsigned int ldlm_timeout = LDLM_TIMEOUT_DEFAULT; /* seconds */ -unsigned int obd_max_dirty_pages = 256; +/* Adaptive timeout defs here instead of ptlrpc module for /proc/sys/ access */ +unsigned int at_min = 0; +unsigned int at_max = 600; +unsigned int at_history = 600; +int at_early_margin = 5; +int at_extra = 30; + atomic_t obd_dirty_pages; atomic_t obd_dirty_transit_pages; @@ -399,6 +406,11 @@ EXPORT_SYMBOL(ldlm_timeout); EXPORT_SYMBOL(obd_max_dirty_pages); EXPORT_SYMBOL(obd_dirty_pages); EXPORT_SYMBOL(obd_dirty_transit_pages); +EXPORT_SYMBOL(at_min); +EXPORT_SYMBOL(at_max); +EXPORT_SYMBOL(at_extra); +EXPORT_SYMBOL(at_early_margin); +EXPORT_SYMBOL(at_history); EXPORT_SYMBOL(ptlrpc_put_connection_superhack); EXPORT_SYMBOL(proc_lustre_root); diff --git a/lustre/obdclass/linux/linux-sysctl.c b/lustre/obdclass/linux/linux-sysctl.c index 8ef676d..3d26e98 100644 --- a/lustre/obdclass/linux/linux-sysctl.c +++ b/lustre/obdclass/linux/linux-sysctl.c @@ -73,6 +73,11 @@ enum { OBD_DEBUG_PEER_ON_TIMEOUT, /* dump peer debug when RPC times out */ OBD_ALLOC_FAIL_RATE, /* memory allocation random failure rate */ OBD_MAX_DIRTY_PAGES, /* maximum dirty pages */ + OBD_AT_MIN, /* Adaptive timeouts params */ + OBD_AT_MAX, + OBD_AT_EXTRA, + OBD_AT_EARLY_MARGIN, + OBD_AT_HISTORY, }; int LL_PROC_PROTO(proc_fail_loc) @@ -266,6 +271,27 @@ int LL_PROC_PROTO(proc_alloc_fail_rate) } #endif +int LL_PROC_PROTO(proc_at_min) +{ + return ll_proc_dointvec(table, write, filp, buffer, lenp, ppos); +} +int LL_PROC_PROTO(proc_at_max) +{ + return ll_proc_dointvec(table, write, filp, buffer, lenp, ppos); +} +int LL_PROC_PROTO(proc_at_extra) +{ + return ll_proc_dointvec(table, write, filp, buffer, lenp, ppos); +} +int LL_PROC_PROTO(proc_at_early_margin) +{ + return ll_proc_dointvec(table, write, filp, buffer, lenp, ppos); +} +int LL_PROC_PROTO(proc_at_history) +{ + return ll_proc_dointvec(table, write, filp, buffer, lenp, ppos); +} + static cfs_sysctl_table_t obd_table[] = { { .ctl_name = OBD_FAIL_LOC, @@ -373,6 +399,46 @@ static cfs_sysctl_table_t obd_table[] = { .mode = 0644, .proc_handler = &proc_max_dirty_pages_in_mb }, + { + .ctl_name = OBD_AT_MIN, + .procname = "at_min", + .data = &at_min, + .maxlen = sizeof(int), + .mode = 0644, + .proc_handler = &proc_at_min + }, + { + .ctl_name = OBD_AT_MAX, + .procname = "at_max", + .data = &at_max, + .maxlen = sizeof(int), + .mode = 0644, + .proc_handler = &proc_at_max + }, + { + .ctl_name = OBD_AT_EXTRA, + .procname = "at_extra", + .data = &at_extra, + .maxlen = sizeof(int), + .mode = 0644, + .proc_handler = &proc_at_extra + }, + { + .ctl_name = OBD_AT_EARLY_MARGIN, + .procname = "at_early_margin", + .data = &at_early_margin, + .maxlen = sizeof(int), + .mode = 0644, + .proc_handler = &proc_at_early_margin + }, + { + .ctl_name = OBD_AT_HISTORY, + .procname = "at_history", + .data = &at_history, + .maxlen = sizeof(int), + .mode = 0644, + .proc_handler = &proc_at_history + }, { 0 } }; diff --git a/lustre/obdclass/obd_config.c b/lustre/obdclass/obd_config.c index 632fb3d..759d0de 100644 --- a/lustre/obdclass/obd_config.c +++ b/lustre/obdclass/obd_config.c @@ -790,6 +790,28 @@ void class_del_profiles(void) EXIT; } +static int class_set_global(char *ptr, int val) { + ENTRY; + + if (class_match_param(ptr, PARAM_AT_MIN, NULL) == 0) + at_min = val; + else if (class_match_param(ptr, PARAM_AT_MAX, NULL) == 0) + at_max = val; + else if (class_match_param(ptr, PARAM_AT_EXTRA, NULL) == 0) + at_extra = val; + else if (class_match_param(ptr, PARAM_AT_EARLY_MARGIN, NULL) == 0) + at_early_margin = val; + else if (class_match_param(ptr, PARAM_AT_HISTORY, NULL) == 0) + at_history = val; + else + RETURN(-EINVAL); + + CDEBUG(D_IOCTL, "global %s = %d\n", ptr, val); + + RETURN(0); +} + + /* We can't call ll_process_config directly because it lives in a module that must be loaded after this one. */ static int (*client_process_config)(struct lustre_cfg *lcfg) = NULL; @@ -879,13 +901,24 @@ int class_process_config(struct lustre_cfg *lcfg) GOTO(out, err = 0); } case LCFG_PARAM: { + char *tmp; /* llite has no obd */ if ((class_match_param(lustre_cfg_string(lcfg, 1), PARAM_LLITE, 0) == 0) && client_process_config) { err = (*client_process_config)(lcfg); GOTO(out, err); + } else if ((class_match_param(lustre_cfg_string(lcfg, 1), + PARAM_SYS, &tmp) == 0)) { + /* Global param settings */ + err = class_set_global(tmp, lcfg->lcfg_num); + /* Note that since LCFG_PARAM is LCFG_REQUIRED, new + unknown globals would cause config to fail */ + if (err) + CWARN("Ignoring unknown param %s\n", tmp); + GOTO(out, 0); } + /* Fall through */ break; } @@ -988,7 +1021,7 @@ int class_process_proc_param(char *prefix, struct lprocfs_vars *lvars, sval = strchr(key, '='); if (!sval || (*(sval + 1) == 0)) { CERROR("Can't parse param %s (missing '=')\n", key); - /* rc = -EINVAL; continue parsing other params */ + /* rc = -EINVAL; continue parsing other params */ continue; } keylen = sval - key; diff --git a/lustre/ptlrpc/service.c b/lustre/ptlrpc/service.c index 2199fc1..d3fcc9d 100644 --- a/lustre/ptlrpc/service.c +++ b/lustre/ptlrpc/service.c @@ -49,21 +49,15 @@ int test_req_buffer_pressure = 0; CFS_MODULE_PARM(test_req_buffer_pressure, "i", int, 0444, "set non-zero to put pressure on request buffer pools"); -unsigned int at_min = 0; CFS_MODULE_PARM(at_min, "i", int, 0644, "Adaptive timeout minimum (sec)"); -unsigned int at_max = 600; -EXPORT_SYMBOL(at_max); CFS_MODULE_PARM(at_max, "i", int, 0644, "Adaptive timeout maximum (sec)"); -unsigned int at_history = 600; CFS_MODULE_PARM(at_history, "i", int, 0644, "Adaptive timeouts remember the slowest event that took place " "within this period (sec)"); -static int at_early_margin = 5; CFS_MODULE_PARM(at_early_margin, "i", int, 0644, "How soon before an RPC deadline to send an early reply"); -static int at_extra = 30; CFS_MODULE_PARM(at_extra, "i", int, 0644, "How much extra time to give with each early reply"); @@ -873,16 +867,16 @@ static int ptlrpc_at_add_timed(struct ptlrpc_request *req) if (array->paa_reqs_count[index] > 0) { /* latest rpcs will have the latest deadlines in the list, * so search backward. */ - list_for_each_entry_reverse(rq, &array->paa_reqs_array[index], + list_for_each_entry_reverse(rq, &array->paa_reqs_array[index], rq_timed_list) { if (req->rq_deadline >= rq->rq_deadline) { - list_add(&req->rq_timed_list, + list_add(&req->rq_timed_list, &rq->rq_timed_list); break; } } } - + /* Add the request at the head of the list */ if (list_empty(&req->rq_timed_list)) list_add(&req->rq_timed_list, &array->paa_reqs_array[index]); @@ -1076,7 +1070,7 @@ static int ptlrpc_at_check_timed(struct ptlrpc_service *svc) count = array->paa_count; while (count > 0) { count -= array->paa_reqs_count[index]; - list_for_each_entry_safe(rq, n, &array->paa_reqs_array[index], + list_for_each_entry_safe(rq, n, &array->paa_reqs_array[index], rq_timed_list) { if (rq->rq_deadline <= now + at_early_margin) { list_move(&rq->rq_timed_list, &work_list); diff --git a/lustre/tests/recovery-small.sh b/lustre/tests/recovery-small.sh index dc9088d..5fd5fc6 100755 --- a/lustre/tests/recovery-small.sh +++ b/lustre/tests/recovery-small.sh @@ -218,7 +218,7 @@ test_17() { remote_ost_nodsh && skip "remote OST with nodsh" && return 0 # With adaptive timeouts, bulk_get won't expire until adaptive_timeout_max - if at_is_valid && at_is_enabled; then + if at_is_enabled; then at_max_saved=$(at_max_get ost1) at_max_set $TIMEOUT ost1 fi diff --git a/lustre/tests/replay-single.sh b/lustre/tests/replay-single.sh index 4ccfe84..416bf94 100755 --- a/lustre/tests/replay-single.sh +++ b/lustre/tests/replay-single.sh @@ -947,7 +947,7 @@ test_44a() { # was test_44 [ "$mdcdev" ] || exit 2 # adaptive timeouts slow this way down - if at_is_valid && at_is_enabled; then + if at_is_enabled; then at_max_saved=$(at_max_get mds) at_max_set 40 mds fi @@ -1540,9 +1540,9 @@ at_cleanup () { echo "Cleaning up AT ..." if [ -n "$ATOLDBASE" ]; then - local at_history=$(do_facet mds "find /sys/ -name at_history") - do_facet mds "echo $ATOLDBASE >> $at_history" || true - do_facet ost1 "echo $ATOLDBASE >> $at_history" || true + local at_history=$($LCTL get_param -n at_history) + do_facet mds "lctl set_param at_history=$at_history" || true + do_facet ost1 "lctl set_param at_history=$at_history" || true fi if [ $AT_MAX_SET -ne 0 ]; then @@ -1561,10 +1561,6 @@ at_cleanup () { at_start() { local at_max_new=600 - if ! at_is_valid; then - skip "AT env is invalid" - return 1 - fi # Save at_max original values local facet @@ -1585,12 +1581,10 @@ at_start() done if [ -z "$ATOLDBASE" ]; then - local at_history=$(do_facet mds "find /sys/ -name at_history") - [ -z "$at_history" ] && skip "missing /sys/.../at_history " && return 1 - ATOLDBASE=$(do_facet mds "cat $at_history") + ATOLDBASE=$(do_facet mds "lctl get_param -n at_history") # speed up the timebase so we can check decreasing AT - do_facet mds "echo 8 >> $at_history" - do_facet ost1 "echo 8 >> $at_history" + do_facet mds "lctl set_param at_history=8" || true + do_facet ost1 "lctl set_param at_history=8" || true # sleep for a while to cool down, should be > 8s and also allow # at least one ping to be sent. simply use TIMEOUT to be safe. diff --git a/lustre/tests/sanity-quota.sh b/lustre/tests/sanity-quota.sh index 797410e..d98796a 100644 --- a/lustre/tests/sanity-quota.sh +++ b/lustre/tests/sanity-quota.sh @@ -177,7 +177,7 @@ resetquota() { [ "$1" != "-u" -a "$1" != "-g" ] && error "resetquota: wrong specifier $1 passed" count=0 - if at_is_valid && at_is_enabled; then + if at_is_enabled; then timeout=$(at_max_get mds) else timeout=$(lctl get_param -n timeout) @@ -747,7 +747,7 @@ test_6() { echo " Remove filea to let OST0 release quota" rm -f $FILEA - if at_is_valid && at_is_enabled; then + if at_is_enabled; then timeout=$(at_max_get mds) else timeout=$(lctl get_param -n timeout) @@ -1453,7 +1453,7 @@ test_18() { echo " step2: testing ......" count=0 - if at_is_valid && at_is_enabled; then + if at_is_enabled; then timeout=$(at_max_get mds) else timeout=$(lctl get_param -n timeout) @@ -1511,7 +1511,7 @@ test_18a() { echo " step2: testing ......" count=0 - if at_is_valid && at_is_enabled; then + if at_is_enabled; then timeout=$(at_max_get mds) else timeout=$(lctl get_param -n timeout) @@ -1583,7 +1583,7 @@ test_18bc_sub() { fi count=0 - if at_is_valid && at_is_enabled; then + if at_is_enabled; then timeout=$(at_max_get mds) else timeout=$(lctl get_param -n timeout) diff --git a/lustre/tests/test-framework.sh b/lustre/tests/test-framework.sh index 4b70da0..74613ab 100644 --- a/lustre/tests/test-framework.sh +++ b/lustre/tests/test-framework.sh @@ -1836,19 +1836,9 @@ get_facets () { ################################## # Adaptive Timeouts funcs -at_is_valid() { - if [ -z "$AT_MAX_PATH" ]; then - AT_MAX_PATH=$(do_facet $SINGLEMDS "find /sys/ -name at_max") - [ -z "$AT_MAX_PATH" ] && echo "missing /sys/.../at_max " && return 1 - fi - return 0 -} - at_is_enabled() { - at_is_valid || error "invalid call" - # only check mds, we assume at_max is the same on all nodes - local at_max=$(do_facet $SINGLEMDS "cat $AT_MAX_PATH") + local at_max=$(do_facet $SINGLEMDS "lctl get_param -n at_max") if [ $at_max -eq 0 ]; then return 1 else @@ -1859,13 +1849,11 @@ at_is_enabled() { at_max_get() { local facet=$1 - at_is_valid || error "invalid call" - # suppose that all ost-s has the same at_max set if [ $facet == "ost" ]; then - do_facet ost1 "cat $AT_MAX_PATH" + do_facet ost1 "lctl get_param -n at_max" else - do_facet $facet "cat $AT_MAX_PATH" + do_facet $facet "lctl get_param -n at_max" fi } @@ -1873,20 +1861,19 @@ at_max_set() { local at_max=$1 shift - at_is_valid || error "invalid call" - local facet for facet in $@; do if [ $facet == "ost" ]; then for i in `seq $OSTCOUNT`; do - do_facet ost$i "echo $at_max > $AT_MAX_PATH" + do_facet ost$i "lctl set_param at_max=$at_max" + done elif [ $facet == "mds" ]; then for i in `seq $MDSCOUNT`; do - do_facet mds$i "echo $at_max > $AT_MAX_PATH" + do_facet mds$i "lctl set_param at_max=$at_max" done else - do_facet $facet "echo $at_max > $AT_MAX_PATH" + do_facet $facet "lctl set_param at_max=$at_max" fi done } diff --git a/lustre/utils/llog_reader.c b/lustre/utils/llog_reader.c index ae62a39..bad9271 100644 --- a/lustre/utils/llog_reader.c +++ b/lustre/utils/llog_reader.c @@ -167,7 +167,7 @@ int llog_pack_buffer(int fd, struct llog_log_hdr **llog, recs_pr[i] = cur_rec; if (ext2_test_bit(idx, (*llog)->llh_bitmap)) { - if (le32_to_cpu(cur_rec->lrh_type) != OBD_CFG_REC) + if (le32_to_cpu(cur_rec->lrh_type) != OBD_CFG_REC) printf("rec #%d type=%x len=%u\n", idx, cur_rec->lrh_type, cur_rec->lrh_len); } else { @@ -176,7 +176,7 @@ int llog_pack_buffer(int fd, struct llog_log_hdr **llog, /* The header counts only set records */ i--; } - + ptr += le32_to_cpu(cur_rec->lrh_len); if ((ptr - file_buf) > file_size) { printf("The log is corrupt (too big at %d)\n", i); @@ -350,7 +350,10 @@ void print_lustre_cfg(struct lustre_cfg *lcfg, int *skip) } case(LCFG_SET_TIMEOUT):{ printf("set_timeout=%d ", lcfg->lcfg_num); - print_1_cfg(lcfg); + break; + } + case(LCFG_SET_LDLM_TIMEOUT):{ + printf("set_ldlm_timeout=%d ", lcfg->lcfg_num); break; } case(LCFG_SET_UPCALL):{ @@ -384,7 +387,7 @@ void print_lustre_cfg(struct lustre_cfg *lcfg, int *skip) } if (marker->cm_flags & CM_EXCLUDE) { - if (marker->cm_flags & CM_START) + if (marker->cm_flags & CM_START) printf("EXCLUDE START "); else printf("EXCLUDE END "); @@ -456,16 +459,16 @@ void print_records(struct llog_rec_hdr **recs, int rec_number) { __u32 lopt; int i, skip = 0; - + for(i = 0; i < rec_number; i++) { printf("#%.2d (%.3d)", le32_to_cpu(recs[i]->lrh_index), le32_to_cpu(recs[i]->lrh_len)); lopt = le32_to_cpu(recs[i]->lrh_type); - if (recs[i]->padding == CANCELLED) + if (recs[i]->padding == CANCELLED) printf("NOT SET "); - + if (lopt == OBD_CFG_REC) { struct lustre_cfg *lcfg; lcfg = (struct lustre_cfg *)((char*)(recs[i]) + -- 1.8.3.1