From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from zeniv.linux.org.uk ([195.92.253.2]:44888 "EHLO ZenIV.linux.org.uk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751345AbcACUVX (ORCPT ); Sun, 3 Jan 2016 15:21:23 -0500 Date: Sun, 3 Jan 2016 20:21:21 +0000 From: Al Viro To: Linus Torvalds Cc: Linux Kernel Mailing List , linux-fsdevel Subject: Re: [RFC] ->get_link(), ->put_link() and cookies Message-ID: <20160103202121.GM9938@ZenIV.linux.org.uk> References: <20160101063624.GG9938@ZenIV.linux.org.uk> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: Sender: linux-fsdevel-owner@vger.kernel.org List-ID: On Sun, Jan 03, 2016 at 11:53:21AM -0800, Linus Torvalds wrote: > On Thu, Dec 31, 2015 at 10:36 PM, Al Viro wrote: > > In cases when we need to pin the symlink body in some manner, we > > need to undo whatever we'd done once the caller is done with the body. > > That went through several variants, the latest (in -next right now) being > > "have non-NULL ->put_link() and leave an argument for it in void *cookie, > > address of which is passed to ->get_link()". > > The series looks ok to me, even if I still am not a fan of the cookie. > I suspect the remaining users could easily embed the returned string > at the end of a structure, and get their data with container_of(). It > would complicate their unusual behavior for sure, but make the common > case much more understandable. > > Oh well. I won't insist - it may be too painful to be worth it. And > it's a fairly separate issue anyway. > > So no objections to this series. Just to make sure - that does include 13/13, presumably? IOW, ->put_link() is gone and the final calling conventions for ->get_link() are const char *(*get_link)(struct dentry *dentry, struct inode *inode, struct delayed_call *done); with dentry == NULL <=> call in RCU mode, ERR_PTR(-E...) returned on error and set_delayed_call(done, destructor, arg) done if destructor(arg) should be done once pathname resolution is through with the body returned by ->get_link().