It should be possible for guest applications to fstat a file for which they have a valid file descriptor, even if the file has been removed. Demonstrated by the code sample below (fstat reports no such file or directory). Strangely it seems that reading from a file in this state works fine (and when both are run, the server receives a different fid for each). On any other filesystem, the code runs correctly. On our 9p filesystem it fails. Many applications (including bash) depend on this working correctly. I will continue investigating, but any thoughts anyone has on the subject would be appreciated.
Thanks Sassan #include <stdio.h> #include <unistd.h> #include <fcntl.h> #include <sys/types.h> #include <sys/stat.h> int main(void) { int ret; struct stat statbuf; int fd = open("test.txt", O_RDWR | O_CREAT, 0666); if (fd < 0) { printf("open failed: %m\n"); return 1; } ret = write(fd, "test1\n", 6); if (ret < 0) { printf("write1 failed: %m\n"); return 1; } ret = unlink("test.txt"); if (ret < 0) { printf("unlink failed: %m\n"); return 1; } ret = fstat(fd, &statbuf); if (ret < 0) { printf("fstat failed: %m\n"); return 1; } return 0; }