ocfs2: o2net: fix connect expired
authorJunxiao Bi <junxiao.bi@oracle.com>
Wed, 10 Dec 2014 23:41:51 +0000 (15:41 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Thu, 11 Dec 2014 01:41:03 +0000 (17:41 -0800)
Set nn_persistent_error to -ENOTCONN will stop reconnect since the
"stop" condition in o2net_start_connect() will be true.

    stop = (nn->nn_sc ||
                (nn->nn_persistent_error &&
                (nn->nn_persistent_error != -ENOTCONN || timeout == 0)));

This will make connection never be established if the first connection
request is lost.

Set nn_persistent_error to 0 when connect expired to fix this.  With
this changes, dlm will not be waken up when connect expired, this is OK
since dlm depends on network, dlm can do nothing in this case if waken
up.  Let it wait there for network recover and connect built again to
continue.

Signed-off-by: Junxiao Bi <junxiao.bi@oracle.com>
Reviewed-by: Srinivas Eeda <srinivas.eeda@oracle.com>
Cc: Joel Becker <jlbec@evilplan.org>
Cc: Mark Fasheh <mfasheh@suse.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
fs/ocfs2/cluster/tcp.c

index a9604400406491744281dfaee496491e36f5a074..2e355e0f8335505604ec61f42c8856bd7a23cfb6 100644 (file)
@@ -1736,7 +1736,7 @@ static void o2net_connect_expired(struct work_struct *work)
                     o2net_idle_timeout() / 1000,
                     o2net_idle_timeout() % 1000);
 
-               o2net_set_nn_state(nn, NULL, 0, -ENOTCONN);
+               o2net_set_nn_state(nn, NULL, 0, 0);
        }
        spin_unlock(&nn->nn_lock);
 }