#include <xen/interface/grant_table.h>
#include <xen/gnttab.h>
#include <asm/hypervisor.h>
-#include <asm/maddr.h>
#define BLKIF_STATE_DISCONNECTED 0
#define BLKIF_STATE_CONNECTED 1
DPRINTK("blkfront:backend_changed.\n");
switch (backend_state) {
+ case XenbusStateUnknown:
case XenbusStateInitialising:
case XenbusStateInitWait:
case XenbusStateInitialised:
- case XenbusStateUnknown:
case XenbusStateClosed:
break;
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);
- xenbus_frontend_closed(dev);
+ xenbus_switch_state(dev, XenbusStateClosed);
}
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) {