From patchwork Thu Jul 21 10:19:51 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: zhangaihua1@huawei.com X-Patchwork-Id: 9241361 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 42FD060574 for ; Thu, 21 Jul 2016 10:14:12 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 326F12026B for ; Thu, 21 Jul 2016 10:14:12 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 2722E27D5E; Thu, 21 Jul 2016 10:14:12 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.9 required=2.0 tests=BAYES_00,RCVD_IN_DNSWL_HI autolearn=unavailable version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 8A4D22026B for ; Thu, 21 Jul 2016 10:14:11 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752103AbcGUKNj (ORCPT ); Thu, 21 Jul 2016 06:13:39 -0400 Received: from szxga03-in.huawei.com ([119.145.14.66]:65121 "EHLO szxga03-in.huawei.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752023AbcGUKNi (ORCPT ); Thu, 21 Jul 2016 06:13:38 -0400 Received: from 172.24.1.47 (EHLO szxeml433-hub.china.huawei.com) ([172.24.1.47]) by szxrg03-dlp.huawei.com (MOS 4.4.3-GA FastPath queued) with ESMTP id CFD31485; Thu, 21 Jul 2016 18:13:28 +0800 (CST) Received: from localhost.localdomain (10.175.100.166) by szxeml433-hub.china.huawei.com (10.82.67.210) with Microsoft SMTP Server id 14.3.235.1; Thu, 21 Jul 2016 18:13:18 +0800 From: To: , , CC: Aihua Zhang Subject: [PATCH] ovl: support ltp/testcase/bin/inotify04 on overlayfs Date: Thu, 21 Jul 2016 18:19:51 +0800 Message-ID: <1469096391-4247-1-git-send-email-zhangaihua1@huawei.com> X-Mailer: git-send-email 1.7.1 MIME-Version: 1.0 X-Originating-IP: [10.175.100.166] X-CFilter-Loop: Reflected X-Mirapoint-Virus-RAPID-Raw: score=unknown(0), refid=str=0001.0A020205.5790A04D.00A8, ss=1, re=0.000, recu=0.000, reip=0.000, cl=1, cld=1, fgs=0, ip=0.0.0.0, so=2013-05-26 15:14:31, dmn=2013-03-21 17:37:32 X-Mirapoint-Loop-Id: f1a42fe085e8cb41d66f2f3d3e44a878 Sender: linux-fsdevel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-fsdevel@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP From: Aihua Zhang after patch: [root@localhost bin]# ./inotify04 inotify04 1 TPASS : got event: wd=1 mask=400 cookie=0 len=0 name="" inotify04 2 TPASS : got event: wd=1 mask=8000 cookie=0 len=0 name="" inotify04 3 TPASS : got event: wd=2 mask=4 cookie=0 len=0 name="" inotify04 4 TPASS : got event: wd=2 mask=400 cookie=0 len=0 name="" inotify04 5 TPASS : got event: wd=2 mask=8000 cookie=0 len=0 name="" Signed-off-by: Aihua Zhang --- fs/dcache.c | 8 ++++++-- fs/overlayfs/inode.c | 2 +- include/linux/fs.h | 1 + 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/fs/dcache.c b/fs/dcache.c index 7654509..0db095d 100644 --- a/fs/dcache.c +++ b/fs/dcache.c @@ -313,7 +313,9 @@ static void dentry_iput(struct dentry * dentry) hlist_del_init(&dentry->d_u.d_alias); spin_unlock(&dentry->d_lock); spin_unlock(&inode->i_lock); - if (!inode->i_nlink) + if ((!inode->i_nlink) || + ((inode->i_flags & S_SPECIAL_OVL) && + (1 == inode->i_nlink))) fsnotify_inoderemove(inode); if (dentry->d_op && dentry->d_op->d_iput) dentry->d_op->d_iput(dentry, inode); @@ -339,7 +341,9 @@ static void dentry_unlink_inode(struct dentry * dentry) dentry_rcuwalk_barrier(dentry); spin_unlock(&dentry->d_lock); spin_unlock(&inode->i_lock); - if (!inode->i_nlink) + if ((!inode->i_nlink) || + ((inode->i_flags & S_SPECIAL_OVL) && + (1 == inode->i_nlink))) fsnotify_inoderemove(inode); if (dentry->d_op && dentry->d_op->d_iput) dentry->d_op->d_iput(dentry, inode); diff --git a/fs/overlayfs/inode.c b/fs/overlayfs/inode.c index e696ba3..eb57b96 100644 --- a/fs/overlayfs/inode.c +++ b/fs/overlayfs/inode.c @@ -399,7 +399,7 @@ struct inode *ovl_new_inode(struct super_block *sb, umode_t mode, inode->i_ino = get_next_ino(); inode->i_mode = mode; - inode->i_flags |= S_NOATIME | S_NOCMTIME; + inode->i_flags |= S_NOATIME | S_NOCMTIME | S_SPECIAL_OVL; switch (mode) { case S_IFDIR: diff --git a/include/linux/fs.h b/include/linux/fs.h index 2a41353..6e763d7 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h @@ -1610,6 +1610,7 @@ struct super_operations { #define S_IMA 1024 /* Inode has an associated IMA struct */ #define S_AUTOMOUNT 2048 /* Automount/referral quasi-directory */ #define S_NOSEC 4096 /* no suid or xattr security attributes */ +#define S_SPECIAL_OVL 8192 /* special inode means ovlerlayfs */ /* * Note that nosuid etc flags are inode-specific: setting some file-system