Skip to content

Commit 1485595

Browse files
Paul Durrantjgross1
authored andcommitted
xen-blkback: allow module to be cleanly unloaded
Add a module_exit() to perform the necessary clean-up. Signed-off-by: Paul Durrant <[email protected]> Reviewed-by: "Roger Pau Monné" <[email protected]> Reviewed-by: Juergen Gross <[email protected]> Signed-off-by: Juergen Gross <[email protected]>
1 parent 196748a commit 1485595

File tree

3 files changed

+22
-0
lines changed

3 files changed

+22
-0
lines changed

drivers/block/xen-blkback/blkback.c

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1504,5 +1504,13 @@ static int __init xen_blkif_init(void)
15041504

15051505
module_init(xen_blkif_init);
15061506

1507+
static void __exit xen_blkif_fini(void)
1508+
{
1509+
xen_blkif_xenbus_fini();
1510+
xen_blkif_interface_fini();
1511+
}
1512+
1513+
module_exit(xen_blkif_fini);
1514+
15071515
MODULE_LICENSE("Dual BSD/GPL");
15081516
MODULE_ALIAS("xen-backend:vbd");

drivers/block/xen-blkback/common.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -375,9 +375,12 @@ struct phys_req {
375375
struct block_device *bdev;
376376
blkif_sector_t sector_number;
377377
};
378+
378379
int xen_blkif_interface_init(void);
380+
void xen_blkif_interface_fini(void);
379381

380382
int xen_blkif_xenbus_init(void);
383+
void xen_blkif_xenbus_fini(void);
381384

382385
irqreturn_t xen_blkif_be_int(int irq, void *dev_id);
383386
int xen_blkif_schedule(void *arg);

drivers/block/xen-blkback/xenbus.c

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -333,6 +333,12 @@ int __init xen_blkif_interface_init(void)
333333
return 0;
334334
}
335335

336+
void xen_blkif_interface_fini(void)
337+
{
338+
kmem_cache_destroy(xen_blkif_cachep);
339+
xen_blkif_cachep = NULL;
340+
}
341+
336342
/*
337343
* sysfs interface for VBD I/O requests
338344
*/
@@ -1122,3 +1128,8 @@ int xen_blkif_xenbus_init(void)
11221128
{
11231129
return xenbus_register_backend(&xen_blkbk_driver);
11241130
}
1131+
1132+
void xen_blkif_xenbus_fini(void)
1133+
{
1134+
xenbus_unregister_driver(&xen_blkbk_driver);
1135+
}

0 commit comments

Comments
 (0)