[Virtio-fs] [RFC] Using hard links instead of lo_inode->fd

Dr. David Alan Gilbert dgilbert at redhat.com
Mon Apr 12 18:28:28 UTC 2021


* Vivek Goyal (vgoyal at redhat.com) wrote:
> On Mon, Apr 12, 2021 at 06:54:52PM +0100, Dr. David Alan Gilbert wrote:
> > * Vivek Goyal (vgoyal at redhat.com) wrote:
> > > Hi All,
> > > 
> > > Max has been trying to solve the problem of not having to keep an O_PATH
> > > fd open for every file (until inode goes away). Lot of inodes can get
> > > cached in guest inode cache and soon we can hit number of max fd limit.
> > > 
> > > Today Christophe de Dinechin mentioned that can we maintain hardlinks
> > > for these files and open these hardlinks instead whenever we need
> > > lo_inode->fd.
> > > 
> > > So say there is a notion of "workdir" which is passed to virtiofs where
> > > virtiofsd can create hardlinks. Once inode comes into existence, we
> > > create this link in workdir/<file-link>. Once last reference to inode
> > > is dropped, workdir/<file-link> is removed.
> > > 
> > > Now any operation which needs the lo_inode->fd, can do operation on
> > > workdir/<file-link>.
> > > 
> > > How does this proposal sound. What are the issues where. Some of the
> > > which came to surface during discussion with david gilbert are.
> > > 
> > > 1. links can't be created for directories. So this will only help with
> > >   regular files. 
> > > 
> > > 2. There might be a performance penalty. We don't know yet.
> > > 
> > > 3. More overhead of managing workdir by the user/tools.
> > > 
> > > 
> > > Anything else? Is this a viable idea even if we can implement only
> > > for regular files.
> > 
> > The other one is that linkat(, AT_EMPTY_PATH) which can create the
> > link from the existing O_PATH we have, can only be used with
> > CAP_DAC_READ_SEARCH - which is a shame since otherwise it would seem to
> > make life easier.
> 
> But that does not mitigate issues w.r.t submounts (links across
> filesytem) and ctime updates?

submounts no, I don't think I understand the ctime changes though.

> So only thing this linkat(,AT_EMPTY_PATH) seems to buy is that link
> source can be an fd instead of path, right? 

Yes, and we already have that fd.

Dave

> Vivek
-- 
Dr. David Alan Gilbert / dgilbert at redhat.com / Manchester, UK




More information about the Virtio-fs mailing list