From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-yw0-f193.google.com ([209.85.161.193]:45263 "EHLO mail-yw0-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751182AbeEPLGV (ORCPT ); Wed, 16 May 2018 07:06:21 -0400 MIME-Version: 1.0 In-Reply-To: References: <1526379972-20923-1-git-send-email-amir73il@gmail.com> <1526379972-20923-3-git-send-email-amir73il@gmail.com> From: Amir Goldstein Date: Wed, 16 May 2018 14:06:20 +0300 Message-ID: Subject: Re: [PATCH v3 2/4] ovl: relax WARN_ON() real inode attributes mismatch To: Miklos Szeredi Cc: Al Viro , Vivek Goyal , overlayfs , linux-fsdevel Content-Type: text/plain; charset="UTF-8" Sender: linux-fsdevel-owner@vger.kernel.org List-ID: On Wed, May 16, 2018 at 1:29 PM, Miklos Szeredi wrote: > On Tue, May 15, 2018 at 12:26 PM, Amir Goldstein wrote: >> Overlayfs should cope with online changes to underlying layer >> without crashing the kernel, which is what xfstest overlay/019 >> checks. >> >> This test may sometimes trigger WARN_ON() in ovl_create_or_link() >> when linking an overlay inode that has been changed on underlying >> layer. >> >> Replace those WARN_ON() with pr_warn_ratelimited() to prevent >> test from failing and because this is more appropriate to the >> use case. >> >> Signed-off-by: Amir Goldstein >> --- >> fs/overlayfs/dir.c | 14 +++++++++++--- >> 1 file changed, 11 insertions(+), 3 deletions(-) >> >> diff --git a/fs/overlayfs/dir.c b/fs/overlayfs/dir.c >> index 62e6733b755c..25b339278684 100644 >> --- a/fs/overlayfs/dir.c >> +++ b/fs/overlayfs/dir.c >> @@ -525,9 +525,17 @@ static int ovl_create_or_link(struct dentry *dentry, struct inode *inode, >> if (!err) { >> struct inode *realinode = d_inode(ovl_dentry_upper(dentry)); >> >> - WARN_ON(inode->i_mode != realinode->i_mode); >> - WARN_ON(!uid_eq(inode->i_uid, realinode->i_uid)); >> - WARN_ON(!gid_eq(inode->i_gid, realinode->i_gid)); >> + if (inode->i_mode != realinode->i_mode || >> + !uid_eq(inode->i_uid, realinode->i_uid) || >> + !gid_eq(inode->i_gid, realinode->i_gid)) { >> + pr_warn_ratelimited("overlayfs: real inode attributes mismatch (%pd2, %o.%u.%u != %o.%u.%u).\n", >> + dentry, inode->i_mode, >> + from_kuid(&init_user_ns, inode->i_uid), >> + from_kgid(&init_user_ns, inode->i_gid), >> + realinode->i_mode, >> + from_kuid(&init_user_ns, realinode->i_uid), >> + from_kgid(&init_user_ns, realinode->i_gid)); >> + } > > How about just dropping the warnings altogether. They didn't discover > an issue with the code, just something normal, so IMO we should just > get rid of them. > OK. On that subject, do you want to leave the 'debug' argument to ovl_do_XXX? I started peeling it off slowly from the new helpers, but maybe we should just yank it completely from the ovl_do_XXX helpers? pr_debug can be disabled dynamically anyway. right? Thanks, Amir.