There are some situations in which an export's connection can be
NULL. This patch adds a NULL check before dereferencing in
nm_member_reclassify_nodemap. If the connection is null, keep export
in current nodemap since it should get reclassified on reconnect.
Signed-off-by: Kit Westneat <kit.westneat@gmail.com>
Change-Id: I795afdac3b388e883bafe5a79c8237794bc01ef6
Reviewed-on: http://review.whamcloud.com/19595
Tested-by: Jenkins
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: Andreas Dilger <andreas.dilger@intel.com>
Reviewed-by: James Simmons <uja.ornl@yahoo.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
mutex_lock(&nodemap->nm_member_list_lock);
list_for_each_entry_safe(exp, tmp, &nodemap->nm_member_list,
exp_target_data.ted_nodemap_member) {
mutex_lock(&nodemap->nm_member_list_lock);
list_for_each_entry_safe(exp, tmp, &nodemap->nm_member_list,
exp_target_data.ted_nodemap_member) {
- lnet_nid_t nid = exp->exp_connection->c_peer.nid;
+ struct ptlrpc_connection *conn = exp->exp_connection;
+
+ /* if no conn assigned to this exp, reconnect will reclassify */
+ if (conn)
+ /* nodemap_classify_nid requires nmc_range_tree_lock */
+ new_nodemap = nodemap_classify_nid(conn->c_peer.nid);
+ else
+ continue;
- /* nodemap_classify_nid requires nmc_range_tree_lock */
- new_nodemap = nodemap_classify_nid(nid);
if (new_nodemap != nodemap) {
/* don't use member_del because ted_nodemap
* should never be null
if (new_nodemap != nodemap) {
/* don't use member_del because ted_nodemap
* should never be null