lkml.org 
[lkml]   [2007]   [Jul]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH] [DLM] fix socket shutdown
    Date
    From: Patrick Caulfield <pcaulfie@redhat.com>

    This patch clears the user_data of active sockets as part of cleanup.
    This prevents any late-arriving data from trying to add jobs to the work
    queue while we are tidying up.

    Signed-Off-By: Patrick Caulfield <pcaulfie@redhat.com>
    Signed-Off-By: David Teigland <teigland@redhat.com>
    Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>

    diff --git a/fs/dlm/lowcomms.c b/fs/dlm/lowcomms.c
    index 27970a5..fc0bff7 100644
    --- a/fs/dlm/lowcomms.c
    +++ b/fs/dlm/lowcomms.c
    @@ -260,7 +260,7 @@ static int nodeid_to_addr(int nodeid, struct sockaddr *retaddr)
    static void lowcomms_data_ready(struct sock *sk, int count_unused)
    {
    struct connection *con = sock2con(sk);
    - if (!test_and_set_bit(CF_READ_PENDING, &con->flags))
    + if (con && !test_and_set_bit(CF_READ_PENDING, &con->flags))
    queue_work(recv_workqueue, &con->rwork);
    }

    @@ -268,7 +268,7 @@ static void lowcomms_write_space(struct sock *sk)
    {
    struct connection *con = sock2con(sk);

    - if (!test_and_set_bit(CF_WRITE_PENDING, &con->flags))
    + if (con && !test_and_set_bit(CF_WRITE_PENDING, &con->flags))
    queue_work(send_workqueue, &con->swork);
    }

    @@ -1400,8 +1400,11 @@ void dlm_lowcomms_stop(void)
    down(&connections_lock);
    for (i = 0; i <= max_nodeid; i++) {
    con = __nodeid2con(i, 0);
    - if (con)
    + if (con) {
    con->flags |= 0xFF;
    + if (con->sock)
    + con->sock->sk->sk_user_data = NULL;
    + }
    }
    up(&connections_lock);

    --
    1.5.1.2
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2007-07-09 18:35    [W:2.325 / U:0.216 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site