Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 373445
b: refs/heads/master
c: 7da22d2
h: refs/heads/master
i:
  373443: d33a659
v: v3
  • Loading branch information
Alex Elder authored and Sage Weil committed May 2, 2013
1 parent e2750eb commit 9a2e472
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 11 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 55f27e09312310d4dea9bb7b80c696f407caf1be
refs/heads/master: 7da22d296d871174f3e8251a02a8f86a90c7463b
29 changes: 19 additions & 10 deletions trunk/drivers/block/rbd.c
Original file line number Diff line number Diff line change
Expand Up @@ -176,6 +176,7 @@ struct rbd_obj_request {
u64 length; /* bytes from offset */

struct rbd_img_request *img_request;
u64 img_offset; /* image relative offset */
struct list_head links; /* img_request->obj_requests */
u32 which; /* posn image request list */

Expand Down Expand Up @@ -1576,8 +1577,13 @@ static void rbd_img_obj_callback(struct rbd_obj_request *obj_request)
xferred = (unsigned int)obj_request->xferred;
result = obj_request->result;
if (result) {
rbd_warn(NULL, "obj_request %s result %d xferred %u\n",
struct rbd_device *rbd_dev = img_request->rbd_dev;

rbd_warn(rbd_dev, "%s %llx at %llx (%llx)\n",
img_request->write_request ? "write" : "read",
obj_request->length, obj_request->img_offset,
obj_request->offset);
rbd_warn(rbd_dev, " result %d xferred %x\n",
result, xferred);
if (!img_request->result)
img_request->result = result;
Expand All @@ -1604,16 +1610,16 @@ static int rbd_img_request_fill_bio(struct rbd_img_request *img_request,
struct rbd_obj_request *next_obj_request;
bool write_request = img_request->write_request;
unsigned int bio_offset;
u64 image_offset;
u64 img_offset;
u64 resid;
u16 opcode;

dout("%s: img %p bio %p\n", __func__, img_request, bio_list);

opcode = write_request ? CEPH_OSD_OP_WRITE : CEPH_OSD_OP_READ;
bio_offset = 0;
image_offset = img_request->offset;
rbd_assert(image_offset == bio_list->bi_sector << SECTOR_SHIFT);
img_offset = img_request->offset;
rbd_assert(img_offset == bio_list->bi_sector << SECTOR_SHIFT);
resid = img_request->length;
rbd_assert(resid > 0);
while (resid) {
Expand All @@ -1623,11 +1629,11 @@ static int rbd_img_request_fill_bio(struct rbd_img_request *img_request,
u64 offset;
u64 length;

object_name = rbd_segment_name(rbd_dev, image_offset);
object_name = rbd_segment_name(rbd_dev, img_offset);
if (!object_name)
goto out_unwind;
offset = rbd_segment_offset(rbd_dev, image_offset);
length = rbd_segment_length(rbd_dev, image_offset, resid);
offset = rbd_segment_offset(rbd_dev, img_offset);
length = rbd_segment_length(rbd_dev, img_offset, resid);
obj_request = rbd_obj_request_create(object_name,
offset, length,
OBJ_REQUEST_BIO);
Expand Down Expand Up @@ -1656,9 +1662,10 @@ static int rbd_img_request_fill_bio(struct rbd_img_request *img_request,
obj_request->bio_list, obj_request->length);
rbd_osd_req_format(obj_request, write_request);

obj_request->img_offset = img_offset;
rbd_img_obj_request_add(img_request, obj_request);

image_offset += length;
img_offset += length;
resid -= length;
}

Expand Down Expand Up @@ -1993,8 +2000,10 @@ static void rbd_request_fn(struct request_queue *q)
end_request:
spin_lock_irq(q->queue_lock);
if (result < 0) {
rbd_warn(rbd_dev, "obj_request %s result %d\n",
write_request ? "write" : "read", result);
rbd_warn(rbd_dev, "%s %llx at %llx result %d\n",
write_request ? "write" : "read",
length, offset, result);

__blk_end_request_all(rq, result);
}
}
Expand Down

0 comments on commit 9a2e472

Please sign in to comment.