diff --git a/lustre/osc/osc_request.c b/lustre/osc/osc_request.c
index 313a70533305a1a47484f6adcee1f913682ff200..291a801c0287907e081f2eec09a259ae9ff0a7a6 100644
--- a/lustre/osc/osc_request.c
+++ b/lustre/osc/osc_request.c
@@ -2929,17 +2929,20 @@ static int osc_get_info(struct obd_export *exp, __u32 keylen,
         out:
                 ptlrpc_req_finished(req);
                 RETURN(rc);
-        } else if (keylen == 10 &&
-                   strcmp(key, "client_nid") == 0) {
+        } else if (keylen == 10 && strcmp(key, "client_nid") == 0) {
                 struct ptlrpc_connection * conn;
                 ptl_nid_t * nid = val;
                 *vallen = sizeof(*nid);
-                
+                ptl_process_id_t id;
+                int rc;
                 conn = class_exp2cliimp(exp)->imp_connection;
-                if (!conn) 
+                
+                if (!conn || !conn->c_peer.peer_ni) 
                         RETURN(-ENOTCONN);
                 
-                *nid = &conn->c_peer.peer_id.nid;
+                rc = PtlGetId(conn->c_peer.peer_ni->pni_ni_h, &id);
+                if (rc == PTL_OK)
+                        *nid = id.nid;
                 
                 RETURN(0);
         }