summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>2011-04-15 10:58:05 -0400
committerKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>2011-04-15 10:59:06 -0400
commitb0aef17924a06646403cae8eecf6c73219a63c19 (patch)
tree0d751786ce85b96654e56263cbad99419a782a6c
parent7708992616487c00d5ca8ed7612111180d8e1b68 (diff)
downloadop-kernel-dev-b0aef17924a06646403cae8eecf6c73219a63c19.zip
op-kernel-dev-b0aef17924a06646403cae8eecf6c73219a63c19.tar.gz
xen/blkback: Cleanup move the code a bit around.
Moving it so that the code that 'fast_flush_area' code is close to the code that deals with it so that the reader won't lose focus. Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
-rw-r--r--drivers/xen/blkback/blkback.c97
1 files changed, 47 insertions, 50 deletions
diff --git a/drivers/xen/blkback/blkback.c b/drivers/xen/blkback/blkback.c
index 3c10499..f282463 100644
--- a/drivers/xen/blkback/blkback.c
+++ b/drivers/xen/blkback/blkback.c
@@ -167,41 +167,18 @@ static void free_req(struct pending_req *req)
}
/*
- * Unmap the grant references, and also remove the M2P over-rides
- * used in the 'pending_req'.
-*/
-static void fast_flush_area(struct pending_req *req)
+ * Notification from the guest OS.
+ */
+static void blkif_notify_work(struct blkif_st *blkif)
{
- struct gnttab_unmap_grant_ref unmap[BLKIF_MAX_SEGMENTS_PER_REQUEST];
- unsigned int i, invcount = 0;
- grant_handle_t handle;
- int ret;
-
- for (i = 0; i < req->nr_pages; i++) {
- handle = pending_handle(req, i);
- if (handle == BLKBACK_INVALID_HANDLE)
- continue;
- gnttab_set_unmap_op(&unmap[invcount], vaddr(req, i),
- GNTMAP_host_map, handle);
- pending_handle(req, i) = BLKBACK_INVALID_HANDLE;
- invcount++;
- }
+ blkif->waiting_reqs = 1;
+ wake_up(&blkif->wq);
+}
- ret = HYPERVISOR_grant_table_op(
- GNTTABOP_unmap_grant_ref, unmap, invcount);
- BUG_ON(ret);
- /* Note, we use invcount, so nr->pages, so we can't index
- * using vaddr(req, i).
- */
- for (i = 0; i < invcount; i++) {
- ret = m2p_remove_override(
- virt_to_page(unmap[i].host_addr), false);
- if (ret) {
- printk(KERN_ALERT "Failed to remove M2P override for " \
- "%lx\n", (unsigned long)unmap[i].host_addr);
- continue;
- }
- }
+irqreturn_t blkif_be_int(int irq, void *dev_id)
+{
+ blkif_notify_work(dev_id);
+ return IRQ_HANDLED;
}
/*
@@ -265,6 +242,43 @@ int blkif_schedule(void *arg)
}
/*
+ * Unmap the grant references, and also remove the M2P over-rides
+ * used in the 'pending_req'.
+*/
+static void fast_flush_area(struct pending_req *req)
+{
+ struct gnttab_unmap_grant_ref unmap[BLKIF_MAX_SEGMENTS_PER_REQUEST];
+ unsigned int i, invcount = 0;
+ grant_handle_t handle;
+ int ret;
+
+ for (i = 0; i < req->nr_pages; i++) {
+ handle = pending_handle(req, i);
+ if (handle == BLKBACK_INVALID_HANDLE)
+ continue;
+ gnttab_set_unmap_op(&unmap[invcount], vaddr(req, i),
+ GNTMAP_host_map, handle);
+ pending_handle(req, i) = BLKBACK_INVALID_HANDLE;
+ invcount++;
+ }
+
+ ret = HYPERVISOR_grant_table_op(
+ GNTTABOP_unmap_grant_ref, unmap, invcount);
+ BUG_ON(ret);
+ /* Note, we use invcount, so nr->pages, so we can't index
+ * using vaddr(req, i).
+ */
+ for (i = 0; i < invcount; i++) {
+ ret = m2p_remove_override(
+ virt_to_page(unmap[i].host_addr), false);
+ if (ret) {
+ printk(KERN_ALERT "Failed to remove M2P override for " \
+ "%lx\n", (unsigned long)unmap[i].host_addr);
+ continue;
+ }
+ }
+}
+/*
* Completion callback on the bio's. Called as bh->b_end_io()
*/
@@ -305,23 +319,6 @@ static void end_block_io_op(struct bio *bio, int error)
}
-/*
- * Notification from the guest OS.
- */
-
-static void blkif_notify_work(struct blkif_st *blkif)
-{
- blkif->waiting_reqs = 1;
- wake_up(&blkif->wq);
-}
-
-irqreturn_t blkif_be_int(int irq, void *dev_id)
-{
- blkif_notify_work(dev_id);
- return IRQ_HANDLED;
-}
-
-
/*
* Function to copy the from the ring buffer the 'struct blkif_request'
OpenPOWER on IntegriCloud