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

Reply via email to