From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751448AbdIEJCk (ORCPT ); Tue, 5 Sep 2017 05:02:40 -0400 Received: from mail-qk0-f177.google.com ([209.85.220.177]:33838 "EHLO mail-qk0-f177.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750891AbdIEJCg (ORCPT ); Tue, 5 Sep 2017 05:02:36 -0400 X-Google-Smtp-Source: ADKCNb4LbSXB4VA/OubGklB8ORc5HzfZJKRuEDXXzDJIGwIrBP2DmnSTEoL6kmgjI1OeAtxcqtwJNBpQ0pZAnDIqpqk= MIME-Version: 1.0 In-Reply-To: References: <1504597596-17994-1-git-send-email-mszeredi@redhat.com> <1504597596-17994-2-git-send-email-mszeredi@redhat.com> From: Miklos Szeredi Date: Tue, 5 Sep 2017 11:02:34 +0200 Message-ID: Subject: Re: [PATCH 1/3] vfs: add flags to d_real() To: Amir Goldstein Cc: linux-fsdevel , Al Viro , linux-kernel , overlayfs Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Sep 5, 2017 at 10:55 AM, Amir Goldstein wrote: > On Tue, Sep 5, 2017 at 10:46 AM, Miklos Szeredi wrote: >> Add a separate flags argument (in addition to the open flags) to control >> the behavior of d_real(). >> >> Signed-off-by: Miklos Szeredi >> --- > ... >> --- a/fs/overlayfs/super.c >> +++ b/fs/overlayfs/super.c >> >> static struct dentry *ovl_d_real(struct dentry *dentry, >> const struct inode *inode, >> - unsigned int open_flags) >> + unsigned int open_flags, unsigned int flags) >> { >> struct dentry *real; >> int err; >> @@ -102,7 +102,7 @@ static struct dentry *ovl_d_real(struct dentry *dentry, >> goto bug; >> >> /* Handle recursion */ >> - real = d_real(real, inode, open_flags); >> + real = d_real(real, inode, open_flags, 0); >> > > Shouldn't recursion pass on flags? > The answer is probably per flag. > The 2 currently proposed flags don't end up in recursion anyway, > although it is arguable that D_REAL_ALL should end up in recursion > because according to comment it should behave the same as > d_real for regular files. > > For the purpose for which D_REAL_ALL was proposed (atime update) > the recursion case doesn't really matter. > > Maybe a flag D_REAL_NORECURSE and then for > update_ovl_inode_times() use D_REAL_ALL|D_REAL_NORECURSE > > Alternatively, update_ovl_inode_times() could use D_REAL_UPPER > and then we explicitly say that we don't care about lower mtime/ctime > modifications. Well, D_REAL_ALL imples nonrecurse. Maybe that needs better documentation (comment above in ovl_d_real()) but I don't otherwise see a problem with the current state of affairs. Thanks, Miklos