Hide Forgot
Raghu is working on a fix.
There is a reproduceable data corruption while using unfs3booster over libglusterfsclient with write-behind as a translator in the tree. The simplest way to reproduce is to run dd with various block sizes and counts. The input should be /dev/zero. Once the dd run is complete, use the hexdump -x <filename> command. It'll show that not all bytes in the file are zero. The cause of the corruption is the way we handle writes in libglusterfsclient. Libglusterfsclient hands the references to users data to write-behind, which writes that data at a later point in time. After submitting the write, libglusterfsclient returns the write call back to the application. When the write actually takes place, it is possible that the buffer handed to write-behind has already been over-written by other data or freed if it was allocated from heap.
PATCH: http://patches.gluster.com/patch/838 in master (libglusterfsclient: Use iobufs for storing application write data)
PATCH: http://patches.gluster.com/patch/839 in release-2.0 (libglusterfsclient: Use iobufs for storing application write data)
Fixed in mainline: http://git.gluster.com/?p=glusterfs.git;a=commit;h=83ef3c8211282a9ef66659bfbde25116e4949b71 in release-2.0: http://git.gluster.com/?p=glusterfs.git;a=commit;h=c8765d4d807cc9e63c8d96a568fc05002fa7cbd3