From mboxrd@z Thu Jan 1 00:00:00 1970 Date: Fri, 10 Jan 2020 15:00:43 -0500 From: Vivek Goyal Message-ID: <20200110200043.GE28043@redhat.com> References: <20200110010722.27491-1-misono.tomohiro@jp.fujitsu.com> <20200110161334.GD28043@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20200110161334.GD28043@redhat.com> Subject: Re: [Virtio-fs] [PATCH] virtiofsd: Fix xattr operations List-Id: Development discussions about virtio-fs List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Misono Tomohiro Cc: virtio-fs@redhat.com On Fri, Jan 10, 2020 at 11:13:34AM -0500, Vivek Goyal wrote: [..] > > if (size) { > > @@ -2378,7 +2385,11 @@ static void lo_getxattr(fuse_req_t req, fuse_ino_t ino, const char *name, > > goto out_err; > > } > > > > - ret = fgetxattr(fd, name, value, size); > > + if (inode->is_regular) { > > + ret = fgetxattr(fd, name, value, size); > > + } else { > > + ret = getxattr(procname, name, value, size); > > + } > > Do we need "lgetxattr()" instead of "getxattr()" for symlinks? Well, lgetxattr() will not work as that will try to work on /proc/pid/fd/" and that's just a /proc file. > > Say I have following setup. > > foo-symlink -> foo.txt > > Now lo_lookup(foo-symlink.txt, O_PATH | O_NOFOLLOW), will get fd on > symlink, say 3. And proc should show something similar. > > And /proc/self/fd/3 -> /foo-symlink.txt > > Now if we do getxattr(3), will it not resolve symlinks and get xattr value > from "foo.txt" instead? That does not happen. We had opened 3, with O_PATH and O_NOFOLLOW. So looks like all the operations now happen on actual symbolic file and if this is path to a symlink file, it does not get resolved further. Is it because of O_NOFOLLOW flag? Vivek