Reworked patch.

Regards,
  Honza

Steven Dake wrote:
> On Tue, 2009-10-27 at 18:42 -0500, Ryan O'Hara wrote:
>> On Tue, Oct 27, 2009 at 06:18:44PM +0100, Jan Friesse wrote:
>>> See patch. I hope this will fix  
>>> https://bugzilla.redhat.com/show_bug.cgi?id=525280.
>>>
>>> Regards,
>>>   Honza
>>>
>> Do we really need SORT_QUEUE_ITEM_MAXIOVS? Perhaps using "MAXIOVS + 1"
>> in the EVT code is sufficient.
>>
> 
> My general response to this is that if we are running into the MAXIOVS
> constraint on the data structure, increasing MAXIOVS by 1 is not going
> to solve the problem (although it may hide this fault condition).
> 
> The use of an extra define as you point out is unnecessary.
> 
> Regards
> -steve
> 
>> Ryan
>>
>>
>>> diff --git a/branches/whitetank/exec/totemsrp.c 
>>> b/branches/whitetank/exec/totemsrp.c
>>> index c11a552..c5a74e8 100644
>>> --- a/branches/whitetank/exec/totemsrp.c
>>> +++ b/branches/whitetank/exec/totemsrp.c
>>> @@ -87,6 +87,7 @@
>>>  #define RETRANS_MESSAGE_QUEUE_SIZE_MAX             500 /* allow 500 
>>> messages to be queued */
>>>  #define RECEIVED_MESSAGE_QUEUE_SIZE_MAX            500 /* allow 500 
>>> messages to be queued */
>>>  #define MAXIOVS                                    5       
>>> +#define SORT_QUEUE_ITEM_MAXIOVS                    MAXIOVS + 1
>>>  #define RETRANSMIT_ENTRIES_MAX                     30
>>>  #define TOKEN_SIZE_MAX                             64000 /* bytes */
>>>  
>>> @@ -278,7 +279,7 @@ struct message_item {
>>>  };
>>>  
>>>  struct sort_queue_item {
>>> -   struct iovec iovec[MAXIOVS];
>>> +   struct iovec iovec[SORT_QUEUE_ITEM_MAXIOVS];
>>>     int iov_len;
>>>  };
>>>  
>>> @@ -1916,7 +1917,7 @@ static void memb_state_recovery_enter (
>>>     strcat (is_originated, seqno_string_hex);
>>>     sort_queue_item = ptr;
>>>     assert (sort_queue_item->iov_len > 0);
>>> -   assert (sort_queue_item->iov_len <= MAXIOVS);
>>> +   assert (sort_queue_item->iov_len <= SORT_QUEUE_ITEM_MAXIOVS);
>>>     messages_originated++;
>>>     memset (&message_item, 0, sizeof (struct message_item));
>>>  // TODO     LEAK
>>> _______________________________________________
>>> Openais mailing list
>>> [email protected]
>>> https://lists.linux-foundation.org/mailman/listinfo/openais
>> _______________________________________________
>> Openais mailing list
>> [email protected]
>> https://lists.linux-foundation.org/mailman/listinfo/openais
> 

diff --git a/branches/whitetank/exec/totemsrp.c 
b/branches/whitetank/exec/totemsrp.c
index c11a552..1cd2099 100644
--- a/branches/whitetank/exec/totemsrp.c
+++ b/branches/whitetank/exec/totemsrp.c
@@ -86,7 +86,7 @@
 #define QUEUE_RTR_ITEMS_SIZE_MAX               256 /* allow 256 retransmit 
items */
 #define RETRANS_MESSAGE_QUEUE_SIZE_MAX         500 /* allow 500 messages to be 
queued */
 #define RECEIVED_MESSAGE_QUEUE_SIZE_MAX                500 /* allow 500 
messages to be queued */
-#define MAXIOVS                                        5       
+#define MAXIOVS                                        10
 #define RETRANSMIT_ENTRIES_MAX                 30
 #define TOKEN_SIZE_MAX                         64000 /* bytes */
 
@@ -2030,6 +2030,8 @@ int totemsrp_mcast (
        message_item.mcast->guarantee = guarantee;
        srp_addr_copy (&message_item.mcast->system_from, &instance->my_id);
 
+       assert (iov_len <= MAXIOVS);
+
        for (i = 0; i < iov_len; i++) {
 // TODO LEAK
                message_item.iovec[i].iov_base = malloc (iovec[i].iov_len);
@@ -2276,6 +2278,7 @@ static int orf_token_mcast (
                message_item->mcast->seq = ++token->seq;
                message_item->mcast->this_seqno = instance->global_seqno++;
 
+               assert (message_item->iov_len < MAXIOVS);
                /*
                 * Build IO vector
                 */
@@ -2292,8 +2295,6 @@ static int orf_token_mcast (
 
                sort_queue_item.iov_len = message_item->iov_len + 1;
 
-               assert (sort_queue_item.iov_len < 16);
-
                /*
                 * Add message to retransmit queue
                 */
_______________________________________________
Openais mailing list
[email protected]
https://lists.linux-foundation.org/mailman/listinfo/openais

Reply via email to