+run_test 28a "permanent parameter setting"
+
+check_28b() {
+ local NODE=$1
+ shift
+ set_and_check $NODE "$LCTL get_param -n $1*.$2 | head -1" "$1.$2" "$3" || \
+ error "conf_param $1.$2 failed"
+}
+
+test_28b() {
+ setup > /dev/null
+ # should error
+ do_facet mgs "$LCTL conf_param foo=1 2>/dev/null" && \
+ error "Bad format should fail"
+ do_facet mgs "$LCTL conf_param osc.notanfs-OST0000.active=0 2>/dev/null" && \
+ error "Setting on unknown fs should fail"
+ do_facet mgs "$LCTL conf_param osc.$FSNAME-OST00000.active=0 2>/dev/null" && \
+ error "Bad target name should fail"
+ # should succeed
+ check_28b mds mdt.$FSNAME-MDT0000 capa_timeout 1500
+ check_28b mds mdt.$FSNAME-MDT* identity_expire 150
+ check_28b mds mdd.$FSNAME-MDT0000 atime_diff 15
+ check_28b mds mdd.$FSNAME-MDT* sync_permission 0
+ check_28b ost1 obdfilter.$FSNAME-OST0000 client_cache_seconds 15
+ check_28b ost1 obdfilter.$FSNAME-OST* client_cache_count 15
+ check_28b mds lov.$FSNAME-MDT0000 qos_maxage "15 Sec"
+ check_28b mds lov.$FSNAME-MDT0000 qos_prio_free "15%"
+ check_28b client mdc.$FSNAME-MDT0000 max_rpcs_in_flight 15
+ check_28b client osc.$FSNAME-OST0000 active 0
+ check_28b client osc.$FSNAME-OST0000 active 1
+ check_28b client osc.$FSNAME-OST0000 max_dirty_mb 15
+ check_28b client llite.$FSNAME max_read_ahead_mb 15
+ set_and_check client "$LCTL get_param -n at_max" "sys.$FSNAME.at_max" 1500 || \
+ error "conf_param sys.fsname.at_max failed"
+ cleanup > /dev/null
+}
+run_test 28b "permanent parameter setting, set_param syntax"