Commit 5216d135 authored by Paolo \'Blaisorblade\' Giarrusso's avatar Paolo \'Blaisorblade\' Giarrusso Committed by Linus Torvalds

[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: default avatarPaolo 'Blaisorblade' Giarrusso <blaisorblade_spam@yahoo.it>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 83c4388a
...@@ -773,9 +773,11 @@ int ubd_driver_init(void){ ...@@ -773,9 +773,11 @@ int ubd_driver_init(void){
unsigned long stack; unsigned long stack;
int err; int err;
/* Set by CONFIG_BLK_DEV_UBD_SYNC or ubd=sync.*/
if(global_openflags.s){ if(global_openflags.s){
printk(KERN_INFO "ubd : Synchronous mode\n"); printk(KERN_INFO "ubd: Synchronous mode\n");
return(0); /* Letting ubd=sync be like using ubd#s= instead of ubd#= is
* enough. So use anyway the io thread. */
} }
stack = alloc_stack(0, 0); stack = alloc_stack(0, 0);
io_pid = start_io_thread(stack + PAGE_SIZE - sizeof(void *), io_pid = start_io_thread(stack + PAGE_SIZE - sizeof(void *),
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment