diff options
author | Roger Pau Monne <roger.pau@citrix.com> | 2014-02-11 22:34:03 -0500 |
---|---|---|
committer | Jens Axboe <axboe@fb.com> | 2014-02-11 22:34:03 -0500 |
commit | abb97b8c502a270d59c0c2e1ecea78ad752372ee (patch) | |
tree | 3348620a7ab9f4cedee4ecc1bb4a170915ba7a52 /drivers/block/xen-blkback | |
parent | 49f5baa5109897b8cee491e8a7c4d74052b6bc1e (diff) |
xen-blkback: init persistent_purge_work work_struct
Initialize persistent_purge_work work_struct on xen_blkif_alloc (and
remove the previous initialization done in purge_persistent_gnt). This
prevents flush_work from complaining even if purge_persistent_gnt has
not been used.
Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
Reviewed-by: David Vrabel <david.vrabel@citrix.com>
Tested-by: Sander Eikelenboom <linux@eikelenboom.it>
Signed-off-by: Jens Axboe <axboe@fb.com>
Diffstat (limited to 'drivers/block/xen-blkback')
-rw-r--r-- | drivers/block/xen-blkback/blkback.c | 3 | ||||
-rw-r--r-- | drivers/block/xen-blkback/common.h | 1 | ||||
-rw-r--r-- | drivers/block/xen-blkback/xenbus.c | 1 |
3 files changed, 3 insertions, 2 deletions
diff --git a/drivers/block/xen-blkback/blkback.c b/drivers/block/xen-blkback/blkback.c index 765fc7348b66..64c60edcdfbc 100644 --- a/drivers/block/xen-blkback/blkback.c +++ b/drivers/block/xen-blkback/blkback.c | |||
@@ -299,7 +299,7 @@ static void free_persistent_gnts(struct xen_blkif *blkif, struct rb_root *root, | |||
299 | BUG_ON(num != 0); | 299 | BUG_ON(num != 0); |
300 | } | 300 | } |
301 | 301 | ||
302 | static void unmap_purged_grants(struct work_struct *work) | 302 | void xen_blkbk_unmap_purged_grants(struct work_struct *work) |
303 | { | 303 | { |
304 | struct gnttab_unmap_grant_ref unmap[BLKIF_MAX_SEGMENTS_PER_REQUEST]; | 304 | struct gnttab_unmap_grant_ref unmap[BLKIF_MAX_SEGMENTS_PER_REQUEST]; |
305 | struct page *pages[BLKIF_MAX_SEGMENTS_PER_REQUEST]; | 305 | struct page *pages[BLKIF_MAX_SEGMENTS_PER_REQUEST]; |
@@ -420,7 +420,6 @@ finished: | |||
420 | blkif->vbd.overflow_max_grants = 0; | 420 | blkif->vbd.overflow_max_grants = 0; |
421 | 421 | ||
422 | /* We can defer this work */ | 422 | /* We can defer this work */ |
423 | INIT_WORK(&blkif->persistent_purge_work, unmap_purged_grants); | ||
424 | schedule_work(&blkif->persistent_purge_work); | 423 | schedule_work(&blkif->persistent_purge_work); |
425 | pr_debug(DRV_PFX "Purged %u/%u\n", (total - num_clean), total); | 424 | pr_debug(DRV_PFX "Purged %u/%u\n", (total - num_clean), total); |
426 | return; | 425 | return; |
diff --git a/drivers/block/xen-blkback/common.h b/drivers/block/xen-blkback/common.h index 9eb34e24b4fe..be052773ad03 100644 --- a/drivers/block/xen-blkback/common.h +++ b/drivers/block/xen-blkback/common.h | |||
@@ -385,6 +385,7 @@ int xen_blkbk_flush_diskcache(struct xenbus_transaction xbt, | |||
385 | int xen_blkbk_barrier(struct xenbus_transaction xbt, | 385 | int xen_blkbk_barrier(struct xenbus_transaction xbt, |
386 | struct backend_info *be, int state); | 386 | struct backend_info *be, int state); |
387 | struct xenbus_device *xen_blkbk_xenbus(struct backend_info *be); | 387 | struct xenbus_device *xen_blkbk_xenbus(struct backend_info *be); |
388 | void xen_blkbk_unmap_purged_grants(struct work_struct *work); | ||
388 | 389 | ||
389 | static inline void blkif_get_x86_32_req(struct blkif_request *dst, | 390 | static inline void blkif_get_x86_32_req(struct blkif_request *dst, |
390 | struct blkif_x86_32_request *src) | 391 | struct blkif_x86_32_request *src) |
diff --git a/drivers/block/xen-blkback/xenbus.c b/drivers/block/xen-blkback/xenbus.c index 84973c6a856a..9a547e6b6ebf 100644 --- a/drivers/block/xen-blkback/xenbus.c +++ b/drivers/block/xen-blkback/xenbus.c | |||
@@ -129,6 +129,7 @@ static struct xen_blkif *xen_blkif_alloc(domid_t domid) | |||
129 | blkif->free_pages_num = 0; | 129 | blkif->free_pages_num = 0; |
130 | atomic_set(&blkif->persistent_gnt_in_use, 0); | 130 | atomic_set(&blkif->persistent_gnt_in_use, 0); |
131 | atomic_set(&blkif->inflight, 0); | 131 | atomic_set(&blkif->inflight, 0); |
132 | INIT_WORK(&blkif->persistent_purge_work, xen_blkbk_unmap_purged_grants); | ||
132 | 133 | ||
133 | INIT_LIST_HEAD(&blkif->pending_free); | 134 | INIT_LIST_HEAD(&blkif->pending_free); |
134 | 135 | ||