9fans archive / 2000 / 03 / 26 /    prev next

From: Roman Shaposhnick vugluskr@uni...
Subject: [9fans] Re: 9p question
Date: Mon, 13 Mar 2000 12:01:18 GMT

On Fri, 10 Mar 2000 11:24:57 GMT, forsyth@cal... wrote:
>>>>>>I definitely can not understand why openness is persistent property in the 
>>>>>>sense that when I clone the open fid the copy happens to be open too.
>>>>
>>>>clone(5) notes that ``The fid [to be cloned]... must not have been
>>>>opened for I/O by an open or create message''.
>
>>>  Well, I certainly can read man page. I ask why there is such limitation, 
>>>not where and how it is described. Sorry, but I would like to discuss bare
>>>9P ( see my previous letter ).
>
>you asked why openness is persistent across clone, and i simply observed that it is not persistent and cannot be,
>because clone is expressly prohibited on an already open fid.  it therefore isn't true
>that when you `clone the open fid the copy happens to be open too'.

 No, may be it isn't true, but it isn't false either. I can not speak with
real P9 server for now, but u9fs allows me to clone open fids. Please see
the following:

>> Tstat tag 3 fid 1
<< Rstat tag 3 fid 1 + dir
>> Topen tag 4 fid 1 mode 0x0
<< Ropen tag 4 fid 1 qid 0x81000002.0x38788ddd
>> Tclone tag 5 fid 1 newfid 2
<< Rclone tag 5 fid 1

That's why I asked question about all that stuff.


>it seems you were really asking: why can't i clone an open fid?
>here is my view (not having actually designed the thing).
>
>the operation of Topen, in some file servers, leads to the creation of some server-side
>state (eg, the state implied by a file descriptor opened in an underlying operating system,
>in the case of u9fs, or as another example, the state created for an open directory to
>permit reading it), and that state might not be easily cloned, or not able to be cloned at all
>(what does it mean to `clone' a file descriptor's state in unix or a file handle's state in Nt?).
>by contrast, the current Tclone clones state that the server can control
>and understand completely (eg, local data structures).
>it's hard enough trying to implement some of the operations as it is!

 I believe, that this limitation is a Plan 9 issue not 9P. Something 
like seek(2) on directories, that is possible in 9P and is forbidden in
Plan 9 due to the reasons mentioned here. That's my speculations, but 
since gurus are not with us and it seems that they are not 
interested we can not know for certain. :)

Thanks,
Roman.