The only way to change the cache settings is from the guest. Without that we're guranteed to lose data when going from WCE=0 to WCE=1.
I have patches to do that, and to allow changing O_DIRECT via a monitor command, but to toggle O_SYNC via fcntl I first need to get a kernel patch in as that's currently not allowed to be changed at runtime.