mirror of
https://github.com/FEX-Emu/linux.git
synced 2025-02-21 21:02:24 +00:00
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>
This commit is contained in:
parent
49f5baa510
commit
abb97b8c50
@ -299,7 +299,7 @@ static void free_persistent_gnts(struct xen_blkif *blkif, struct rb_root *root,
|
|||||||
BUG_ON(num != 0);
|
BUG_ON(num != 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void unmap_purged_grants(struct work_struct *work)
|
void xen_blkbk_unmap_purged_grants(struct work_struct *work)
|
||||||
{
|
{
|
||||||
struct gnttab_unmap_grant_ref unmap[BLKIF_MAX_SEGMENTS_PER_REQUEST];
|
struct gnttab_unmap_grant_ref unmap[BLKIF_MAX_SEGMENTS_PER_REQUEST];
|
||||||
struct page *pages[BLKIF_MAX_SEGMENTS_PER_REQUEST];
|
struct page *pages[BLKIF_MAX_SEGMENTS_PER_REQUEST];
|
||||||
@ -420,7 +420,6 @@ finished:
|
|||||||
blkif->vbd.overflow_max_grants = 0;
|
blkif->vbd.overflow_max_grants = 0;
|
||||||
|
|
||||||
/* We can defer this work */
|
/* We can defer this work */
|
||||||
INIT_WORK(&blkif->persistent_purge_work, unmap_purged_grants);
|
|
||||||
schedule_work(&blkif->persistent_purge_work);
|
schedule_work(&blkif->persistent_purge_work);
|
||||||
pr_debug(DRV_PFX "Purged %u/%u\n", (total - num_clean), total);
|
pr_debug(DRV_PFX "Purged %u/%u\n", (total - num_clean), total);
|
||||||
return;
|
return;
|
||||||
|
@ -385,6 +385,7 @@ int xen_blkbk_flush_diskcache(struct xenbus_transaction xbt,
|
|||||||
int xen_blkbk_barrier(struct xenbus_transaction xbt,
|
int xen_blkbk_barrier(struct xenbus_transaction xbt,
|
||||||
struct backend_info *be, int state);
|
struct backend_info *be, int state);
|
||||||
struct xenbus_device *xen_blkbk_xenbus(struct backend_info *be);
|
struct xenbus_device *xen_blkbk_xenbus(struct backend_info *be);
|
||||||
|
void xen_blkbk_unmap_purged_grants(struct work_struct *work);
|
||||||
|
|
||||||
static inline void blkif_get_x86_32_req(struct blkif_request *dst,
|
static inline void blkif_get_x86_32_req(struct blkif_request *dst,
|
||||||
struct blkif_x86_32_request *src)
|
struct blkif_x86_32_request *src)
|
||||||
|
@ -129,6 +129,7 @@ static struct xen_blkif *xen_blkif_alloc(domid_t domid)
|
|||||||
blkif->free_pages_num = 0;
|
blkif->free_pages_num = 0;
|
||||||
atomic_set(&blkif->persistent_gnt_in_use, 0);
|
atomic_set(&blkif->persistent_gnt_in_use, 0);
|
||||||
atomic_set(&blkif->inflight, 0);
|
atomic_set(&blkif->inflight, 0);
|
||||||
|
INIT_WORK(&blkif->persistent_purge_work, xen_blkbk_unmap_purged_grants);
|
||||||
|
|
||||||
INIT_LIST_HEAD(&blkif->pending_free);
|
INIT_LIST_HEAD(&blkif->pending_free);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user