Re: Issue #5876 : assertion failure in rbd_img_obj_callback()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



...
>> 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 majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [CEPH Users]     [Ceph Large]     [Information on CEPH]     [Linux BTRFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux