Author: royger
Date: Fri May 19 08:11:15 2017
New Revision: 318520
URL: https://svnweb.freebsd.org/changeset/base/318520

Log:
  xen/blkfront: correctly detach a disk with active users
  
  Call disk_gone when the backend switches to the "Closing" state and blkfront
  still has pending users. This allows the disk to be detached, and will call
  into xbd_closing by itself when the geom layout cleanup has finished.
  
  Reported by:          bapt
  Tested by:            manu
  Reviewed by:          bapt
  Sponsored by:         Citrix Systems R&D
  MFC after:            1 week
  Differential revision:        https://reviews.freebsd.org/D10772

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

Modified: head/sys/dev/xen/blkfront/blkfront.c
==============================================================================
--- head/sys/dev/xen/blkfront/blkfront.c        Fri May 19 07:31:48 2017        
(r318519)
+++ head/sys/dev/xen/blkfront/blkfront.c        Fri May 19 08:11:15 2017        
(r318520)
@@ -1578,11 +1578,14 @@ xbd_backend_changed(device_t dev, Xenbus
                break;
 
        case XenbusStateClosing:
-               if (sc->xbd_users > 0)
-                       xenbus_dev_error(dev, -EBUSY,
-                           "Device in use; refusing to close");
-               else
+               if (sc->xbd_users > 0) {
+                       device_printf(dev, "detaching with pending users\n");
+                       KASSERT(sc->xbd_disk != NULL,
+                           ("NULL disk with pending users\n"));
+                       disk_gone(sc->xbd_disk);
+               } else {
                        xbd_closing(dev);
+               }
                break;  
        }
 }
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to