svn commit: r231883 - head/sys/dev/xen/blkback

Justin T. Gibbs gibbs at FreeBSD.org
Fri Feb 17 22:33:46 UTC 2012


Author: gibbs
Date: Fri Feb 17 22:33:46 2012
New Revision: 231883
URL: http://svn.freebsd.org/changeset/base/231883

Log:
  Fix regression in the handling of blkback close events for
  devices that are unplugged via QEMU.
  
  sys/dev/xen/blkback/blkback.c:
  	Toolstack initiated closures change the frontend's state
  	to Closing.  The backend must change to Closing as well,
  	even if we can't actually close yet, in order for the
  	frontend to notice and start the closing process.
  
  MFC after:	3 days

Modified:
  head/sys/dev/xen/blkback/blkback.c

Modified: head/sys/dev/xen/blkback/blkback.c
==============================================================================
--- head/sys/dev/xen/blkback/blkback.c	Fri Feb 17 15:31:06 2012	(r231882)
+++ head/sys/dev/xen/blkback/blkback.c	Fri Feb 17 22:33:46 2012	(r231883)
@@ -3955,16 +3955,12 @@ xbb_frontend_changed(device_t dev, Xenbu
 		xbb_connect(xbb);
 		break;
 	case XenbusStateClosing:
-		/*
-		 * Frontend has acknowledged Closing request.
-		 * Wait for Closed state.
-		 */
-		break;
 	case XenbusStateClosed:
 		mtx_lock(&xbb->lock);
 		xbb_shutdown(xbb);
 		mtx_unlock(&xbb->lock);
-		xenbus_set_state(xbb->dev, XenbusStateClosed);
+		if (frontend_state == XenbusStateClosed)
+			xenbus_set_state(xbb->dev, XenbusStateClosed);
 		break;
 	default:
 		xenbus_dev_fatal(xbb->dev, EINVAL, "saw state %d at frontend",


More information about the svn-src-head mailing list