On Thu, Feb 07, 2008 at 03:13:30PM +0100, Tomasz Chmielewski wrote:According to kernel/kexec.c:
* kexec does not sync, or unmount filesystems so if you need
* that to happen you need to do that yourself.
In latest kexec code I do see it syncing. But it does not unmount the
filesystems. So this comment looks like partially wrong.
I saw this was true with 2.6.18 kernel (i.e., it didn't sync), but kexec syncs with recent kernels (I checked 2.6.23.14 and 2.6.24):
# kexec -e
md: stopping all md devices
sd 2:0:0:0: [sdb] Synchronizing SCSI cache
Which kexec-tools you are using?
syncing is initiated by user space so changing kernel will not have
any effect (as long as user space is same). I think just that message
are spitted by kernel, so probably 2.6.18 did not spit any message and
2.6.24 does.
The way kexec works now makes rebooting unreliable again:
- network interfaces are brought down,
- kernel tries to sync - it never will, as we're booted off network, which is down
Kexec has got an option -x --no-ifdown, which will not bring the network
down. Try that. "kexec- -e -x"
Any ideas why kexec insists on syncing?
To me it makes sense. Just making sure that cache changes make to the file
system before you boot into new kernel.
In latest kexec-tools, I do see sync() is done first and then network
interfaces are brought down.
Try latest kexec tools from:
http://www.vergenet.net/~horms/linux/kexec/kexec-tools/testing/kexec-tools-testing-20071017-rc.tar.gz