Blob Blame History Raw
diff --git a/usr/iscsiadm.c b/usr/iscsiadm.c
index b7d11b5..fcf2a3a 100644
--- a/usr/iscsiadm.c
+++ b/usr/iscsiadm.c
@@ -465,7 +465,8 @@ static int iface_fn(void *data, node_rec_t *rec)
 	return op_data->fn(op_data->data, rec);
 }
 
-static int for_each_rec(struct node_rec *rec, void *data, idbm_iface_op_fn *fn)
+static int __for_each_rec(int verbose, struct node_rec *rec,
+			  void *data, idbm_iface_op_fn *fn)
 {
 	struct rec_op_data op_data;
 	int nr_found = 0, rc;
@@ -477,16 +478,25 @@ static int for_each_rec(struct node_rec *rec, void *data, idbm_iface_op_fn *fn)
 
 	rc = idbm_for_each_rec(&nr_found, &op_data, iface_fn);
 	if (rc) {
-		log_error("Could not execute operation on all "
-			  "records. Err %d.", rc);
+		if (verbose)
+			log_error("Could not execute operation on all "
+				  "records. Err %d.", rc);
 	} else if (!nr_found) {
-		log_error("no records found!");
+		if (verbose)
+			log_error("no records found!");
 		rc = ENODEV;
 	}
 
 	return rc;
 }
 
+static int for_each_rec(struct node_rec *rec, void *data,
+			idbm_iface_op_fn *fn)
+{
+	return __for_each_rec(1, rec, data, fn);
+}
+
+
 static int login_portals(struct node_rec *pattern_rec)
 {
 	struct list_head rec_list;
@@ -1098,9 +1108,9 @@ new_fail:
 		}
 
 		/* logout and delete records using it first */
-		rc = for_each_rec(rec, NULL, delete_node);
-		if (rc)
-			break;
+		rc = __for_each_rec(0, rec, NULL, delete_node);
+		if (rc && rc != ENODEV)
+			goto delete_fail;
 
 		rc = iface_conf_delete(iface);
 		if (rc)
@@ -1167,9 +1177,11 @@ delete_fail:
 		if (rc)
 			goto update_fail;
 
-		rc = for_each_rec(rec, &set_param, idbm_node_set_param);
-		if (rc)
-			break;
+		rc = __for_each_rec(0, rec, &set_param, idbm_node_set_param);
+		if (rc == ENODEV)
+			rc = 0;
+		else if (rc)
+			goto update_fail;
 
 		printf("%s updated.\n", iface->name);
 		break;
-- 
1.6.6.1