qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [V9fs-developer] [Bug 1336794] Re: 9pfs does not honor


From: Eric Van Hensbergen
Subject: Re: [Qemu-devel] [V9fs-developer] [Bug 1336794] Re: 9pfs does not honor open file handles on unlinked files
Date: Mon, 13 Apr 2015 16:05:28 +0000

Well, technically fid 3 isn't 'open', only fid 2 is open - at least according to the protocol.  fid 3 and fid 2 are both clones of fid 1.   However, thanks for the alternative workaround.  If you get a chance, can you check that my change to the client to partially fix this for the other servers doesn't break nfs-ganesha:
   https://github.com/ericvh/linux/commit/fddc7721d6d19e4e6be4905f37ade5b0521f4ed5

On Mon, Apr 13, 2015 at 3:27 AM, Dominique Martinet <address@hidden> wrote:
Hi,

for what it's worth, the sample code given works with nfs-ganesha
server, so I'm not sure what's not working here.

Here's the server traces:
TATTACH: tag=1 fid=0 afid=-1 uname='nobody' aname='/export' n_uname=-1
RATTACH: tag=1 fid=0 qid=(type=128,version=0,path=1)
TGETATTR: tag=1 fid=0 request_mask=0x7ff
RGETATTR: tag=1 valid=0x7ff qid=(type=128,version=0,path=1) mode=040755 uid=0 gid=0 nlink=3 rdev=192 size=4096 blksize=4096 blocks=8 atime=(1428909387,0) mtime=(1428909389,0) ctime=(1428909389,0) btime=(0,0) gen=0, data_version=0
TATTACH: tag=1 fid=1 afid=-1 uname='' aname='/export' n_uname=0
RATTACH: tag=1 fid=1 qid=(type=128,version=0,path=1)
TGETATTR: tag=1 fid=1 request_mask=0x3fff
RGETATTR: tag=1 valid=0x7ff qid=(type=128,version=0,path=1) mode=040755 uid=0 gid=0 nlink=3 rdev=192 size=4096 blksize=4096 blocks=8 atime=(1428909387,0) mtime=(1428909389,0) ctime=(1428909389,0) btime=(0,0) gen=0, data_version=0
TWALK: tag=1 fid=1 newfid=2 nwname=1 (component 1/1 :test.txt)
RERROR(_9P_TWALK) tag=1 err=(2|No such file or directory)
TWALK: tag=1 fid=1 newfid=2 nwname=0
RWALK: tag=1 fid=1 newfid=2 nwqid=0 fileid=1 pentry=0x8278c0 refcount=4
TLCREATE: tag=1 fid=2 name=test.txt flags=0100102 mode=0100644 gid=0
RLCREATE: tag=1 fid=2 name=test.txt qid=(type=0,version=0,path=144115205255725065) iounit=0 pentry=0x7fffc0000d00
TWALK: tag=1 fid=1 newfid=3 nwname=1 (component 1/1 :test.txt)
RWALK: tag=1 fid=1 newfid=3 nwqid=1 fileid=144115205255725065 pentry=0x7fffc0000d00 refcount=3
TGETATTR: tag=1 fid=3 request_mask=0x17ff
RGETATTR: tag=1 valid=0x7ff qid=(type=0,version=0,path=144115205255725065) mode=0100644 uid=0 gid=0 nlink=1 rdev=192 size=0 blksize=4096 blocks=0 atime=(1428909674,0) mtime=(1428909674,0) ctime=(1428909674,0) btime=(0,0) gen=0, data_version=0
TWRITE: tag=1 fid=2 offset=0 count=6
RWRITE: tag=1 fid=2 offset=0 input count=6 output count=6
TUNLINKAT: tag=1 dfid=1 name=test.txt
TUNLINKAT: tag=1 dfid=1 name=test.txt
TGETATTR: tag=1 fid=3 request_mask=0x3fff
RGETATTR: tag=1 valid=0x7ff qid=(type=0,version=0,path=144115205255725065) mode=0100644 uid=0 gid=0 nlink=0 rdev=192 size=6 blksize=4096 blocks=0 atime=(1428909674,0) mtime=(1428909674,0) ctime=(1428909674,0) btime=(0,0) gen=0, data_version=0
TCLUNK: tag=1 fid=2
RCLUNK: tag=1 fid=2
TCLUNK: tag=1 fid=3
RCLUNK: tag=1 fid=3

(if you're not familiar with 9P, ATTACH = mount, WALK = create a new
'fid' either clone of current file (nwname = 0) or lookup, CLUNK ~=
close. Rest is obvious enough)


There's no lookup between the unlink and the getattr, so what I think is
missing is that both qemu and diod do not understand that fids 2 and 3
refer to the same open file ?
It's a bit of a weird behavior that the client will open a new fid
through lookup walk for a first stat, but I'm mounting with cache=none
here so you should be having the same.

--
Dominique


reply via email to

[Prev in Thread] Current Thread [Next in Thread]