On 2018-05-19 02:02 AM, Roger Pau Monné wrote:
On Thu, May 17, 2018 at 06:10:15PM -0600, Nathan Friess wrote:
I tried the patch on and I my Linux domU did was not able to complete the
attachment to the FreeBSD backend.  I applied the patch to the 11-RELEASE
kernel. (I couldn't get 11-STABLE to compile.)

With xen_platform_pci=0 the frontend and backend vbds were both stuck in
state 1.  With xen_platform_pci=1 the frontend was in state 1 and backend in
state 3.

Thanks for the testing! I however think you had some issue applying
the patch or building/installing the kernel, with the attached patch
the backend should never go into state 3.

Can you confirm that you have the patch correctly applied to the
kernel you are running?

And if so, can you try to debug why the backend goes into state 3?

FWIW, the patch works fine for me and I've been able to boot Debian
and Alpine Linux guests without having to add xen_platform_pci=0.

Thanks, Roger.


Sorry, I don't which run I was looking at there. Here is the order of events. There are two zvols exposed to the domU, /dev/zvol/zroot/vmachines/smyth/rootfs and .../swap, so the messages are interspersed between the two.

xbb(xbb_attach:3738): Attaching to backend/vbd/10/51713
xbb(xbb_attach:3802): Attach done, set state InitWait
xbb(xbb_attach_disk:3612): Enter xbb_attach_disk
xbb(xbb_attach_disk:3620):   Read physical-device-path failed
xbb(xbb_frontend_changed:3918): frontend_state=Initialising, xbb_state=InitWait
xbb(xbb_attach:3738): Attaching to backend/vbd/10/51714
xbb(xbb_attach:3802): Attach done, set state InitWait
xbb(xbb_attach_disk:3612): Enter xbb_attach_disk
xbb(xbb_attach_disk:3620):   Read physical-device-path failed
xbb(xbb_frontend_changed:3918): frontend_state=Initialising, xbb_state=InitWait
(Shell script) Start block script /local/domain/9/backend/vbd/10/51714 add
(Shell script) Start block script /local/domain/9/backend/vbd/10/51713 add
[1] xbb(xbb_frontend_changed:3918): frontend_state=Initialised, xbb_state=InitWait xbb(xbb_connect:3316): Enter xbb_connect: hotplug=0, get_state=2, collect_frontend=0 [1] xbb(xbb_frontend_changed:3918): frontend_state=Initialised, xbb_state=InitWait xbb(xbb_connect:3316): Enter xbb_connect: hotplug=0, get_state=2, collect_frontend=0 (Shell script) Write /dev/zvol/zroot/vmachines/smyth/rootfs to /local/domain/9/backend/vbd/10/51713/physical-device-path
xbb(xbb_attach_disk:3612): Enter xbb_attach_disk
xbb(xbb_open_backend:2687): opening dev=/dev/zvol/zroot/vmachines/smyth/rootfs xbb(xbb_open_backend:2757): opened dev=/dev/zvol/zroot/vmachines/smyth/rootfs sector_size=512 media_size=21474836480
xbb(xbb_attach_disk:3718): Set hotplug done, attach_disk done
(Shell script) Write /dev/zvol/zroot/vmachines/smyth/swap to /local/domain/9/backend/vbd/10/51714/physical-device-path
xbb(xbb_attach_disk:3612): Enter xbb_attach_disk
xbb(xbb_open_backend:2687): opening dev=/dev/zvol/zroot/vmachines/smyth/swap
xbb(xbb_open_backend:2757): opened dev=/dev/zvol/zroot/vmachines/smyth/swap sector_size=512 media_size=2147483648
xbb(xbb_attach_disk:3718): Set hotplug done, attach_disk done

... is stuck here...

At [1] the frontend has transitioned to Initialised but the block script has not completed yet so hotplug_done is 0 and the notification about the frontend status change is lost. Calling xbb_connect at the end of xbb_attach_disk like in the attached patch will catch this case. Now with your recent change and the attached file I can use Linux domUs successfully!


On a related note, did these patches ever make it into 11-stable? I don't see them at svn.freebsd.org/base/stable/11 but I may have missed something.

https://lists.freebsd.org/pipermail/freebsd-xen/2016-December/002918.html

There were 4 patches, the third one being required for xl devd to trigger block scripts. I have been using them as well for over a year with no issues:

https://lists.freebsd.org/pipermail/freebsd-xen/2016-December/002918.html

Thanks,

Nathan
--- blkback.c.orig2	2018-05-21 06:37:22.421962000 -0600
+++ blkback.c	2018-05-21 06:38:27.571800000 -0600
@@ -3694,6 +3694,12 @@
 	}
 
 	xbb->hotplug_done = true;
+
+	/* The front end may have finished first, so we should proceed as well. */
+	if (xenbus_get_otherend_state(xbb->dev) == XenbusStateInitialised) {
+		xbb_connect(xbb);
+	}
+
 }
 
 /**
_______________________________________________
freebsd-xen@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-xen
To unsubscribe, send any mail to "freebsd-xen-unsubscr...@freebsd.org"

Reply via email to