From mboxrd@z Thu Jan 1 00:00:00 1970 Date: Mon, 12 Apr 2021 18:54:52 +0100 From: "Dr. David Alan Gilbert" Message-ID: References: <20210408175150.GA1053917@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20210408175150.GA1053917@redhat.com> Subject: Re: [Virtio-fs] [RFC] Using hard links instead of lo_inode->fd List-Id: Development discussions about virtio-fs List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Vivek Goyal Cc: virtio-fs-list , Max Reitz , Miklos Szeredi * Vivek Goyal (vgoyal@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/. Once last reference to inode > is dropped, workdir/ is removed. > > Now any operation which needs the lo_inode->fd, can do operation on > workdir/. > > 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. Dave > Thanks > Vivek -- Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK