Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 251206
b: refs/heads/master
c: 8770b26
h: refs/heads/master
v: v3
  • Loading branch information
Konrad Rzeszutek Wilk committed Apr 14, 2011
1 parent 1e1ad0e commit 0d2cbb6
Show file tree
Hide file tree
Showing 5 changed files with 23 additions and 12 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: afd91d07ff72919071e37086c0664384b3875688
refs/heads/master: 8770b2683f9f98d4c1d6caf2e28f625592bba4f3
18 changes: 13 additions & 5 deletions trunk/drivers/xen/blkback/blkback.c
Original file line number Diff line number Diff line change
Expand Up @@ -614,6 +614,7 @@ static void make_response(blkif_t *blkif, u64 id,
static int __init blkif_init(void)
{
int i, mmap_pages;
int rc = 0;

if (!xen_pv_domain())
return -ENODEV;
Expand All @@ -626,30 +627,37 @@ static int __init blkif_init(void)
mmap_pages, GFP_KERNEL);
pending_pages = alloc_empty_pages_and_pagevec(mmap_pages);

if (!pending_reqs || !pending_grant_handles || !pending_pages)
if (!pending_reqs || !pending_grant_handles || !pending_pages) {
rc = -ENOMEM;
goto out_of_memory;
}

for (i = 0; i < mmap_pages; i++)
pending_grant_handles[i] = BLKBACK_INVALID_HANDLE;

blkif_interface_init();
rc = blkif_interface_init();
if (rc)
goto failed_init;

memset(pending_reqs, 0, sizeof(pending_reqs));
INIT_LIST_HEAD(&pending_free);

for (i = 0; i < blkif_reqs; i++)
list_add_tail(&pending_reqs[i].free_list, &pending_free);

blkif_xenbus_init();
rc = blkif_xenbus_init();
if (rc)
goto failed_init;

return 0;

out_of_memory:
printk(KERN_ERR "%s: out of memory\n", __func__);
failed_init:
kfree(pending_reqs);
kfree(pending_grant_handles);
free_empty_pages_and_pagevec(pending_pages, mmap_pages);
printk("%s: out of memory\n", __FUNCTION__);
return -ENOMEM;
return rc;
}

module_init(blkif_init);
Expand Down
4 changes: 2 additions & 2 deletions trunk/drivers/xen/blkback/common.h
Original file line number Diff line number Diff line change
Expand Up @@ -124,9 +124,9 @@ struct phys_req {

int vbd_translate(struct phys_req *req, blkif_t *blkif, int operation);

void blkif_interface_init(void);
int blkif_interface_init(void);

void blkif_xenbus_init(void);
int blkif_xenbus_init(void);

irqreturn_t blkif_be_int(int irq, void *dev_id);
int blkif_schedule(void *arg);
Expand Down
6 changes: 5 additions & 1 deletion trunk/drivers/xen/blkback/interface.c
Original file line number Diff line number Diff line change
Expand Up @@ -175,8 +175,12 @@ void blkif_free(blkif_t *blkif)
kmem_cache_free(blkif_cachep, blkif);
}

void __init blkif_interface_init(void)
int __init blkif_interface_init(void)
{
blkif_cachep = kmem_cache_create("blkif_cache", sizeof(blkif_t),
0, 0, NULL);
if (!blkif_cachep)
return -ENOMEM;

return 0;
}
5 changes: 2 additions & 3 deletions trunk/drivers/xen/blkback/xenbus.c
Original file line number Diff line number Diff line change
Expand Up @@ -535,8 +535,7 @@ static struct xenbus_driver blkback = {
};


void blkif_xenbus_init(void)
int blkif_xenbus_init(void)
{
/* XXX must_check */
(void)xenbus_register_backend(&blkback);
return xenbus_register_backend(&blkback);
}

0 comments on commit 0d2cbb6

Please sign in to comment.