From: Paolo \'Blaisorblade\' Giarrusso Date: Wed, 13 Oct 2004 14:31:21 +0000 (-0700) Subject: [PATCH] uml: use always a separate io thread for UBD X-Git-Tag: v2.6.9-final~6 X-Git-Url: http://git.neil.brown.name/?a=commitdiff_plain;h=5216d135b7d2ebc48dad12ffaddce96bd2250c10;p=history.git [PATCH] uml: use always a separate io thread for UBD Currently, ubd=sync is different from replacing ubd#= with ubd#s=. This is against Principle of Least Surprise, so remove this difference. Also the current ubd=sync behaviour is completely useless: it is to make sure that when the kernel has synched its I/O to the virtual disk, the host does not invalidate this with his caching; this causes ReiserFS corruption. But since actually we call end_request() only after the io_thread has done its work, we never lie to the block layer. Using O_SYNC as we do when replacing ubd#= with ubd#s= is enough. Signed-off-by: Paolo 'Blaisorblade' Giarrusso Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds --- diff --git a/arch/um/drivers/ubd_kern.c b/arch/um/drivers/ubd_kern.c index fb6041342995..53fba09adda8 100644 --- a/arch/um/drivers/ubd_kern.c +++ b/arch/um/drivers/ubd_kern.c @@ -773,9 +773,11 @@ int ubd_driver_init(void){ unsigned long stack; int err; + /* Set by CONFIG_BLK_DEV_UBD_SYNC or ubd=sync.*/ if(global_openflags.s){ - printk(KERN_INFO "ubd : Synchronous mode\n"); - return(0); + printk(KERN_INFO "ubd: Synchronous mode\n"); + /* Letting ubd=sync be like using ubd#s= instead of ubd#= is + * enough. So use anyway the io thread. */ } stack = alloc_stack(0, 0); io_pid = start_io_thread(stack + PAGE_SIZE - sizeof(void *),