diff options
| -rw-r--r-- | drivers/block/xen-blkback/blkback.c | 21 | ||||
| -rw-r--r-- | drivers/block/xen-blkback/common.h | 1 |
2 files changed, 6 insertions, 16 deletions
diff --git a/drivers/block/xen-blkback/blkback.c b/drivers/block/xen-blkback/blkback.c index 2cf8381a1c6e..dd5b2fed97e9 100644 --- a/drivers/block/xen-blkback/blkback.c +++ b/drivers/block/xen-blkback/blkback.c | |||
| @@ -442,7 +442,7 @@ int xen_blkif_schedule(void *arg) | |||
| 442 | } | 442 | } |
| 443 | 443 | ||
| 444 | struct seg_buf { | 444 | struct seg_buf { |
| 445 | unsigned long buf; | 445 | unsigned int offset; |
| 446 | unsigned int nsec; | 446 | unsigned int nsec; |
| 447 | }; | 447 | }; |
| 448 | /* | 448 | /* |
| @@ -621,30 +621,21 @@ static int xen_blkbk_map(struct blkif_request *req, | |||
| 621 | * If this is a new persistent grant | 621 | * If this is a new persistent grant |
| 622 | * save the handler | 622 | * save the handler |
| 623 | */ | 623 | */ |
| 624 | persistent_gnts[i]->handle = map[j].handle; | 624 | persistent_gnts[i]->handle = map[j++].handle; |
| 625 | persistent_gnts[i]->dev_bus_addr = | ||
| 626 | map[j++].dev_bus_addr; | ||
| 627 | } | 625 | } |
| 628 | pending_handle(pending_req, i) = | 626 | pending_handle(pending_req, i) = |
| 629 | persistent_gnts[i]->handle; | 627 | persistent_gnts[i]->handle; |
| 630 | 628 | ||
| 631 | if (ret) | 629 | if (ret) |
| 632 | continue; | 630 | continue; |
| 633 | |||
| 634 | seg[i].buf = persistent_gnts[i]->dev_bus_addr | | ||
| 635 | (req->u.rw.seg[i].first_sect << 9); | ||
| 636 | } else { | 631 | } else { |
| 637 | pending_handle(pending_req, i) = map[j].handle; | 632 | pending_handle(pending_req, i) = map[j++].handle; |
| 638 | bitmap_set(pending_req->unmap_seg, i, 1); | 633 | bitmap_set(pending_req->unmap_seg, i, 1); |
| 639 | 634 | ||
| 640 | if (ret) { | 635 | if (ret) |
| 641 | j++; | ||
| 642 | continue; | 636 | continue; |
| 643 | } | ||
| 644 | |||
| 645 | seg[i].buf = map[j++].dev_bus_addr | | ||
| 646 | (req->u.rw.seg[i].first_sect << 9); | ||
| 647 | } | 637 | } |
| 638 | seg[i].offset = (req->u.rw.seg[i].first_sect << 9); | ||
| 648 | } | 639 | } |
| 649 | return ret; | 640 | return ret; |
| 650 | } | 641 | } |
| @@ -971,7 +962,7 @@ static int dispatch_rw_block_io(struct xen_blkif *blkif, | |||
| 971 | (bio_add_page(bio, | 962 | (bio_add_page(bio, |
| 972 | pages[i], | 963 | pages[i], |
| 973 | seg[i].nsec << 9, | 964 | seg[i].nsec << 9, |
| 974 | seg[i].buf & ~PAGE_MASK) == 0)) { | 965 | seg[i].offset) == 0)) { |
| 975 | 966 | ||
| 976 | bio = bio_alloc(GFP_KERNEL, nseg-i); | 967 | bio = bio_alloc(GFP_KERNEL, nseg-i); |
| 977 | if (unlikely(bio == NULL)) | 968 | if (unlikely(bio == NULL)) |
diff --git a/drivers/block/xen-blkback/common.h b/drivers/block/xen-blkback/common.h index da78346487ae..60103e2517ba 100644 --- a/drivers/block/xen-blkback/common.h +++ b/drivers/block/xen-blkback/common.h | |||
| @@ -187,7 +187,6 @@ struct persistent_gnt { | |||
| 187 | struct page *page; | 187 | struct page *page; |
| 188 | grant_ref_t gnt; | 188 | grant_ref_t gnt; |
| 189 | grant_handle_t handle; | 189 | grant_handle_t handle; |
| 190 | uint64_t dev_bus_addr; | ||
| 191 | struct rb_node node; | 190 | struct rb_node node; |
| 192 | }; | 191 | }; |
| 193 | 192 | ||
