Jeff Dike wrote: >> 1. If a file is held read-only by one process it cannot by creat()'ed by >> another one: >> [...] >> >> I tracked that problem down to the set_attr() function in hostfs_user.c: >> It tries to ftruncate() the read-only file descriptor. The file should >> be re-opened writable before changing its length. > > Looks like a good diagnosis. There is code in host_file_open which is > supposed to handle this case, but it's not being hit when the shell > opens the file, which I don't understand.
I tracked that down step-by-step on Saturday: If the O_TRUNC flag is set in the open() syscall the file will first be truncated and then opened. The call stack for truncating the file: - sys_open (fs/open.c) - do_sys_open (fs/open.c) - do_filp_open (fs/open.c) - open_namei (fs/namei.c) - may_open (fs/namei.c) - do_truncate (fs/open.c) And the call stack for actually opening the file: - sys_open (fs/open.c) - do_sys_open (fs/open.c) - do_filp_open (fs/open.c) - nameidata_to_filp (fs/open.c) - __dentry_open (fs/open.c) Maybe that helps. > Correct. I've pondered using [id]notify to track changes on the host > and either invalidate the UML cache or update it. Both involve > interactions with the page cache that I'm not entirely comfortable > with right now. That problem is actually more severe for my UML use case: I'm developing firmware for an embedded device, and I'm using UML because it's quicker and more convenient than developing on the target hardware. Now, if I re-compile some library which is still in use by another process the changes will not be visible until I reboot (or kill these background processes). How do similar filesystems (e.g. NFS) solve that problem? Cheers, Ingo ------------------------------------------------------------------------- Sponsored by: SourceForge.net Community Choice Awards: VOTE NOW! Studies have shown that voting for your favorite open source project, along with a healthy diet, reduces your potential for chronic lameness and boredom. Vote Now at http://www.sourceforge.net/community/cca08 _______________________________________________ User-mode-linux-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel
