Hello, I'm seeing an issue with a specific application flow and with ganesha server (2.6.5). Here is what the application does: - fd1 = open (file1, O_WRONLY|O_CREAT|O_TRUNC) Ganesha creates a state and stores the flags in fd->openflags (see vfs_open2()) - write (fd1, ....) - fd2 = open(file1, O_RDONLY) Ganesha finds the state for the first open, finds the flags and calls fsal_reopen2() with old and new flags OR'd together. This causes the file to be truncated because the original open was done with O_TRUNC. I don't see this behavior with kernel NFS or a local filesystem. Any suggestions on fixing this? Here is a quick and dirty program to reproduce it - you can see that the second stat prints zero as size with a mount from Ganesha server. #include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <sys/stat.h> #include <unistd.h> int main(int argc, char **argv) { char *fn = argv[1]; int fd; char buf[1024]; struct stat stbuf; int rc; fd = open(fn, O_WRONLY|O_CREAT|O_TRUNC, 0666); printf("open(%s) = %d\n", fn, fd); ssize_t ret; ret = write(fd, buf, sizeof(buf)); printf("write returned %ld\n", ret); rc = stat(fn, &stbuf); printf("size: %ld\n", stbuf.st_size); int fd1; fd1 = open(fn, O_RDONLY); printf("open(%s) = %d\n", fn, fd1); rc = stat(fn, &stbuf); printf("size: %ld\n", stbuf.st_size); } Thanks, Pradeep