]> err.no Git - linux-2.6/commitdiff
[DLM] fix size of STATUS_REPLY message
authorDavid Teigland <teigland@redhat.com>
Mon, 27 Nov 2006 19:18:41 +0000 (13:18 -0600)
committerSteven Whitehouse <swhiteho@redhat.com>
Thu, 30 Nov 2006 15:37:08 +0000 (10:37 -0500)
When the not_ready routine sends a "fake" status reply with blank status
flags, it needs to use the correct size for a normal STATUS_REPLY by
including the size of the would-be config parameters.  We also fill in the
non-existant config parameters with an invalid lvblen value so it's easier
to notice if these invalid paratmers are ever being used.

Signed-off-by: David Teigland <teigland@redhat.com>
Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
fs/dlm/rcom.c

index 87b12f7d3d22309e8ad293d492faf0ac7a52ca29..6ac195cec0275bd7ce3b33c45084199c9780a3c8 100644 (file)
@@ -370,9 +370,10 @@ static void receive_rcom_lock_reply(struct dlm_ls *ls, struct dlm_rcom *rc_in)
 static int send_ls_not_ready(int nodeid, struct dlm_rcom *rc_in)
 {
        struct dlm_rcom *rc;
+       struct rcom_config *rf;
        struct dlm_mhandle *mh;
        char *mb;
-       int mb_len = sizeof(struct dlm_rcom);
+       int mb_len = sizeof(struct dlm_rcom) + sizeof(struct rcom_config);
 
        mh = dlm_lowcomms_get_buffer(nodeid, mb_len, GFP_KERNEL, &mb);
        if (!mh)
@@ -391,6 +392,9 @@ static int send_ls_not_ready(int nodeid, struct dlm_rcom *rc_in)
        rc->rc_id = rc_in->rc_id;
        rc->rc_result = -ESRCH;
 
+       rf = (struct rcom_config *) rc->rc_buf;
+       rf->rf_lvblen = -1;
+
        dlm_rcom_out(rc);
        dlm_lowcomms_commit_buffer(mh);