https://github.com/torvalds/linux
Revision efd1535270c1deb0487527bf0c3c827301a69c93 authored by Bob Liu on 07 June 2016, 14:43:15 UTC, committed by Konrad Rzeszutek Wilk on 08 June 2016, 17:54:39 UTC
Sometimes blkfront may twice receive blkback_changed() notification (XenbusStateConnected) after migration, which will cause talk_to_blkback() to be called twice too and confuse xen-blkback. The flow is as follow: blkfront blkback blkfront_resume() > talk_to_blkback() > Set blkfront to XenbusStateInitialised front changed() > Connect() > Set blkback to XenbusStateConnected blkback_changed() > Skip talk_to_blkback() because frontstate == XenbusStateInitialised > blkfront_connect() > Set blkfront to XenbusStateConnected ----- And here we get another XenbusStateConnected notification leading to: ----- blkback_changed() > because now frontstate != XenbusStateInitialised talk_to_blkback() is also called again > blkfront state changed from XenbusStateConnected to XenbusStateInitialised (Which is not correct!) front_changed(): > Do nothing because blkback already in XenbusStateConnected Now blkback is in XenbusStateConnected but blkfront is still in XenbusStateInitialised - leading to no disks. Poking of the XenbusStateConnected state is allowed (to deal with block disk change) and has to be dealt with. The most likely cause of this bug are custom udev scripts hooking up the disks and then validating the size. Signed-off-by: Bob Liu <bob.liu@oracle.com> Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
1 parent 116f7d4
Tip revision: efd1535270c1deb0487527bf0c3c827301a69c93 authored by Bob Liu on 07 June 2016, 14:43:15 UTC
xen-blkfront: don't call talk_to_blkback when already connected to blkback
xen-blkfront: don't call talk_to_blkback when already connected to blkback
Tip revision: efd1535
File | Mode | Size |
---|---|---|
Kconfig | -rw-r--r-- | 812 bytes |
Makefile | -rw-r--r-- | 241 bytes |
af_vsock.c | -rw-r--r-- | 47.5 KB |
vmci_transport.c | -rw-r--r-- | 58.2 KB |
vmci_transport.h | -rw-r--r-- | 4.1 KB |
vmci_transport_notify.c | -rw-r--r-- | 18.0 KB |
vmci_transport_notify.h | -rw-r--r-- | 2.9 KB |
vmci_transport_notify_qstate.c | -rw-r--r-- | 11.2 KB |
vsock_addr.c | -rw-r--r-- | 1.9 KB |
Computing file changes ...