[PATCH 079/124] staging: lustre: mgc: add nid iteration

2016-09-18 Thread James Simmons
From: Alexander Boyko 

mgc_apply_recover_logs use only first nid from entry,
this could be the problem for a cluster with several network
address for a one node.

Signed-off-by: Alexander Boyko 
Intel-bug-id: https://jira.hpdd.intel.com/browse/LU-5950
Xyratex-bug-id: MRP-2255
Reviewed-on: http://review.whamcloud.com/12829
Reviewed-by: Andreas Dilger 
Reviewed-by: Mike Pershin 
Reviewed-by: Ann Koehler 
Signed-off-by: James Simmons 
---
 drivers/staging/lustre/lustre/mgc/mgc_request.c |   16 +++-
 1 files changed, 11 insertions(+), 5 deletions(-)

diff --git a/drivers/staging/lustre/lustre/mgc/mgc_request.c 
b/drivers/staging/lustre/lustre/mgc/mgc_request.c
index 2191ca1..23374ca 100644
--- a/drivers/staging/lustre/lustre/mgc/mgc_request.c
+++ b/drivers/staging/lustre/lustre/mgc/mgc_request.c
@@ -1159,7 +1159,7 @@ static int mgc_apply_recover_logs(struct obd_device *mgc,
 
while (datalen > 0) {
int   entry_len = sizeof(*entry);
-   int   is_ost;
+   int is_ost, i;
struct obd_device *obd;
char *obdname;
char *cname;
@@ -1265,11 +1265,17 @@ static int mgc_apply_recover_logs(struct obd_device 
*mgc,
continue;
}
 
-   /* TODO: iterate all nids to find one */
+   /* iterate all nids to find one */
/* find uuid by nid */
-   rc = client_import_find_conn(obd->u.cli.cl_import,
-entry->u.nids[0],
-(struct obd_uuid *)uuid);
+   rc = -ENOENT;
+   for (i = 0; i < entry->mne_nid_count; i++) {
+   rc = client_import_find_conn(obd->u.cli.cl_import,
+entry->u.nids[0],
+(struct obd_uuid *)uuid);
+   if (!rc)
+   break;
+   }
+
up_read(>u.cli.cl_sem);
if (rc < 0) {
CERROR("mgc: cannot find uuid by nid %s\n",
-- 
1.7.1



[PATCH 079/124] staging: lustre: mgc: add nid iteration

2016-09-18 Thread James Simmons
From: Alexander Boyko 

mgc_apply_recover_logs use only first nid from entry,
this could be the problem for a cluster with several network
address for a one node.

Signed-off-by: Alexander Boyko 
Intel-bug-id: https://jira.hpdd.intel.com/browse/LU-5950
Xyratex-bug-id: MRP-2255
Reviewed-on: http://review.whamcloud.com/12829
Reviewed-by: Andreas Dilger 
Reviewed-by: Mike Pershin 
Reviewed-by: Ann Koehler 
Signed-off-by: James Simmons 
---
 drivers/staging/lustre/lustre/mgc/mgc_request.c |   16 +++-
 1 files changed, 11 insertions(+), 5 deletions(-)

diff --git a/drivers/staging/lustre/lustre/mgc/mgc_request.c 
b/drivers/staging/lustre/lustre/mgc/mgc_request.c
index 2191ca1..23374ca 100644
--- a/drivers/staging/lustre/lustre/mgc/mgc_request.c
+++ b/drivers/staging/lustre/lustre/mgc/mgc_request.c
@@ -1159,7 +1159,7 @@ static int mgc_apply_recover_logs(struct obd_device *mgc,
 
while (datalen > 0) {
int   entry_len = sizeof(*entry);
-   int   is_ost;
+   int is_ost, i;
struct obd_device *obd;
char *obdname;
char *cname;
@@ -1265,11 +1265,17 @@ static int mgc_apply_recover_logs(struct obd_device 
*mgc,
continue;
}
 
-   /* TODO: iterate all nids to find one */
+   /* iterate all nids to find one */
/* find uuid by nid */
-   rc = client_import_find_conn(obd->u.cli.cl_import,
-entry->u.nids[0],
-(struct obd_uuid *)uuid);
+   rc = -ENOENT;
+   for (i = 0; i < entry->mne_nid_count; i++) {
+   rc = client_import_find_conn(obd->u.cli.cl_import,
+entry->u.nids[0],
+(struct obd_uuid *)uuid);
+   if (!rc)
+   break;
+   }
+
up_read(>u.cli.cl_sem);
if (rc < 0) {
CERROR("mgc: cannot find uuid by nid %s\n",
-- 
1.7.1