Please try applying this, on top of the previous patch.
If you can then reproduce the problem we'll have a bunch
of new information about the particular request that's
leading to the failure.  That might tell us what more we
can do to find the root cause.  Thank you.

                                        -Alex

PS  I hope my mailer doesn't botch the long lines.  It might.

---
 drivers/block/rbd.c |   25 ++++++++++++++++++++++++-
 1 file changed, 24 insertions(+), 1 deletion(-)

Index: b/drivers/block/rbd.c
===================================================================
--- a/drivers/block/rbd.c
+++ b/drivers/block/rbd.c
@@ -2132,7 +2132,30 @@ static void rbd_img_obj_callback(struct
        spin_lock_irq(&img_request->completion_lock);
        if (which > img_request->next_completion)
                goto out;
-       rbd_assert(which == img_request->next_completion);
+       if (which != img_request->next_completion) {
+               printk("%s: bad image object request information:\n", __func__);
+               printk("obj_request %p\n", obj_request);
+               printk("    ->object_name <%s>\n", obj_request->object_name);
+               printk("    ->offset %llu\n", obj_request->offset);
+               printk("    ->length %llu\n", obj_request->length);
+               printk("    ->type 0x%x\n", (u32)obj_request->type);
+               printk("    ->flags 0x%lx\n", obj_request->flags);
+               printk("    ->which %u\n", obj_request->which);
+               printk("    ->xferred %llu\n", obj_request->xferred);
+               printk("    ->result %d\n", obj_request->result);
+
+               printk("img_request %p\n", img_request);
+               printk("    ->snap 0x%016llx\n", img_request->snap_id);
+               printk("    ->offset %llu\n", img_request->offset);
+               printk("    ->length %llu\n", img_request->length);
+               printk("    ->flags 0x%lx\n", img_request->flags);
+               printk("    ->obj_request_count %u\n",
+                       img_request->obj_request_count);
+               printk("    ->next_completion %u\n",
+                       img_request->next_completion);
+               printk("    ->xferred %llu\n", img_request->xferred);
+               printk("    ->result %d\n", img_request->result);
+       }

        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