[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] [BLK] front: Flush workqueues with no locks held. Operation can sleep.
# HG changeset patch # User kfraser@xxxxxxxxxxxxxxxxxxxxx # Node ID 52bb01f36c8b2eae9ee62cb21e330142c2e0f668 # Parent dc017943eea2182390e675c08d9daac2b2ebdf1d [BLK] front: Flush workqueues with no locks held. Operation can sleep. Signed-off-by: Keir Fraser <keir@xxxxxxxxxxxxx> --- linux-2.6-xen-sparse/drivers/xen/blkfront/blkfront.c | 8 ++++++-- 1 files changed, 6 insertions(+), 2 deletions(-) diff -r dc017943eea2 -r 52bb01f36c8b linux-2.6-xen-sparse/drivers/xen/blkfront/blkfront.c --- a/linux-2.6-xen-sparse/drivers/xen/blkfront/blkfront.c Fri Sep 29 09:14:28 2006 +0100 +++ b/linux-2.6-xen-sparse/drivers/xen/blkfront/blkfront.c Fri Sep 29 09:23:18 2006 +0100 @@ -355,8 +355,10 @@ static void blkfront_closing(struct xenb blk_stop_queue(info->rq); /* No more gnttab callback work. */ gnttab_cancel_free_callback(&info->callback); + spin_unlock_irqrestore(&blkif_io_lock, flags); + + /* Flush gnttab callback work. Must be done with no locks held. */ flush_scheduled_work(); - spin_unlock_irqrestore(&blkif_io_lock, flags); xlvbd_del(info); @@ -714,8 +716,10 @@ static void blkif_free(struct blkfront_i blk_stop_queue(info->rq); /* No more gnttab callback work. */ gnttab_cancel_free_callback(&info->callback); + spin_unlock_irq(&blkif_io_lock); + + /* Flush gnttab callback work. Must be done with no locks held. */ flush_scheduled_work(); - spin_unlock_irq(&blkif_io_lock); /* Free resources associated with old device channel. */ if (info->ring_ref != GRANT_INVALID_REF) { _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |