On Sat, Jul 05, 2008 at 08:46:31PM +0200, Ingo van Lil wrote:
> 1. If a file is held read-only by one process it cannot by creat()'ed by
> another one:
>
> [EMAIL PROTECTED] ~]# mount -t hostfs none /mnt
> [EMAIL PROTECTED] ~]# cd /mnt/tmp
> [EMAIL PROTECTED] tmp]# touch foo
> [EMAIL PROTECTED] tmp]# tail -f foo &
> [1] 895
> [EMAIL PROTECTED] tmp]# > foo
> -bash: foo: Invalid argument
> [EMAIL PROTECTED] tmp]# kill 895
> [1]+ Terminated tail -f foo
> [EMAIL PROTECTED] tmp]# > foo
>
> 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.
> 2. As long as a file is held open changes made outside the UML kernel
> (i.e. on the host side) may not be visible:
>
> [EMAIL PROTECTED] tmp]# tail -f foo &
> [1] 897
> # Host system: echo "Hello World" > /tmp/foo
> [EMAIL PROTECTED] tmp]# cat foo
> [EMAIL PROTECTED] tmp]# kill 897
> [1]+ Terminated tail -f foo
> [EMAIL PROTECTED] tmp]# cat foo
> Hello World
>
> I guess this is some kind of caching effect, because strace shows that
> there is only a single read to the actual physical file. Maybe hostfs
> should check whether the outside file has changed and invalidate the
> cache if necessary.
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.
Jeff
--
Work email - jdike at linux dot intel dot com
-------------------------------------------------------------------------
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