struct lprocfs_counter ret;
struct obd_device *obd = (struct obd_device *)data;
struct obd_import *imp;
+ struct obd_import_conn *conn;
int i, j, k, rw = 0;
LASSERT(obd != NULL);
"import:\n"
" name: %s\n"
" target: %s\n"
- " current_connection: %s\n"
" state: %s\n"
" connect_flags: [",
obd->obd_name,
obd2cli_tgt(obd),
- imp->imp_connection->c_remote_uuid.uuid,
ptlrpc_import_state_name(imp->imp_state));
i += obd_connect_flags2str(page + i, count - i,
imp->imp_connect_data.ocd_connect_flags,
i += snprintf(page + i, count - i,
"]\n"
" connection:\n"
+ " failover_nids: [");
+ cfs_spin_lock(&imp->imp_lock);
+ j = 0;
+ cfs_list_for_each_entry(conn, &imp->imp_conn_list, oic_item) {
+ i += snprintf(page + i, count - i, "%s%s", j ? ", " : "",
+ libcfs_nid2str(conn->oic_conn->c_peer.nid));
+ j++;
+ }
+ cfs_spin_unlock(&imp->imp_lock);
+ i += snprintf(page + i, count - i,
+ "]\n"
+ " current_connection: %s\n"
" connection_attempts: %u\n"
" generation: %u\n"
" in-progress_invalidations: %u\n",
+ libcfs_nid2str(imp->imp_connection->c_peer.nid),
imp->imp_conn_cnt,
imp->imp_generation,
cfs_atomic_read(&imp->imp_inval_count));
GOTO(destroy_new, rc = -ENOMEM);
memcpy(buffer, libcfs_nid2str(*nid), LNET_NIDSTR_SIZE);
- new_stat->nid_proc = lprocfs_register(buffer,
+ new_stat->nid_proc = lprocfs_register(buffer,
obd->obd_proc_exports_entry,
NULL, NULL);
OBD_FREE(buffer, LNET_NIDSTR_SIZE);
}
run_test 29 "permanently remove an OST"
-test_30() {
+test_30a() {
setup
echo Big config llog
# make sure client restart still works
umount_client $MOUNT
mount_client $MOUNT || return 4
- [ "$($TEST)" -ne "$i" ] && return 5
+ [ "$($TEST)" -ne "$i" ] && error "Param didn't stick across restart $($TEST) != $i"
pass
echo Erase parameter setting
cleanup
}
-run_test 30 "Big config llog and conf_param deletion"
+run_test 30a "Big config llog and conf_param deletion"
+
+test_30b() {
+ setup
+
+ NEW="1.2.3.4@tcp"
+ TEST="lctl get_param -n osc.$FSNAME-OST0000-osc-????????*/import | grep failover_nids | sed -n 's/.*\($NEW\).*/\1/p'"
+ set_and_check client "$TEST" "$FSNAME-OST0000.failover.node" $NEW || error "didn't add failover nid $NEW"
+ do_facet mgs "$LCTL conf_param -d $FSNAME-OST0000.failover.node" || error "conf_param delete failed"
+ umount_client $MOUNT
+ mount_client $MOUNT || return 3
+
+ NIDS=$($LCTL get_param -n osc.$FSNAME-OST0000-osc-????????*/import | grep failover_nids)
+ NIDCOUNT=$(echo "$NIDS" | wc -w)
+ echo "only 1 final nid should remain: $NIDS"
+ [ $NIDCOUNT -eq 2 ] || fail "Failover nids not removed"
+ pass
+
+ cleanup
+}
+run_test 30b "Remove failover nids"
test_31() { # bug 10734
# ipaddr must not exist