...
>> So, a (partial) fix can be this patch ?
>>
>> --- a/drivers/block/rbd.c
>> +++ b/drivers/block/rbd.c
>> @@ -2123,6 +2123,7 @@ static void rbd_img_obj_callback(struct 
>> rbd_obj_request *obj_request)
>>         rbd_assert(obj_request_img_data_test(obj_request));
>>         img_request = obj_request->img_request;
>>  
>> +       spin_lock_irq(&img_request->completion_lock);
>>         dout("%s: img %p obj %p\n", __func__, img_request, obj_request);
>>         rbd_assert(img_request != NULL);
>>         rbd_assert(img_request->obj_request_count > 0);
>> @@ -2130,7 +2131,6 @@ static void rbd_img_obj_callback(struct 
>> rbd_obj_request *obj_request)
>>         rbd_assert(which < img_request->obj_request_count);
>>         rbd_assert(which >= img_request->next_completion);
>>  
>> -       spin_lock_irq(&img_request->completion_lock);
>>         if (which != img_request->next_completion)
>>                 goto out;
> 
> 
> Yes, roughly.  I'd do the following instead.  It would be great
> to learn whether it eliminates the one form of assertion failure
> you were seeing.
> 
>                                       -Alex
>


Strike that, my last patch was dead wrong.  Sorry.  Try this:

--- a/drivers/block/rbd.c
+++ b/drivers/block/rbd.c
@@ -2128,11 +2128,11 @@ static void rbd_img_obj_callback(struct
        rbd_assert(img_request->obj_request_count > 0);
        rbd_assert(which != BAD_WHICH);
        rbd_assert(which < img_request->obj_request_count);
-       rbd_assert(which >= img_request->next_completion);

        spin_lock_irq(&img_request->completion_lock);
-       if (which != img_request->next_completion)
+       if (which > img_request->next_completion)
                goto out;
+       rbd_assert(which == img_request->next_completion);

        for_each_obj_request_from(img_request, obj_request) {
                rbd_assert(more);


--
To unsubscribe from this list: send the line "unsubscribe ceph-devel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to