From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754333AbdFNGb2 (ORCPT ); Wed, 14 Jun 2017 02:31:28 -0400 Received: from szxga01-in.huawei.com ([45.249.212.187]:8282 "EHLO szxga01-in.huawei.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750771AbdFNGb1 (ORCPT ); Wed, 14 Jun 2017 02:31:27 -0400 Subject: [PATCH] fs/jffs2: Fix a Invalid argument error when mkdir in jffs2 which is mounted as overlayfs From: yangshukui To: , , References: <58B689F1.3000000@huawei.com> Message-ID: <3b8362cf-da22-fbb0-de80-9f9bf8ec4326@huawei.com> Date: Wed, 14 Jun 2017 14:30:30 +0800 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.1.0 MIME-Version: 1.0 In-Reply-To: <58B689F1.3000000@huawei.com> Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [10.177.248.94] X-CFilter-Loop: Reflected X-Mirapoint-Virus-RAPID-Raw: score=unknown(0), refid=str=0001.0A020206.5940D816.013A,ss=1,re=0.000,recu=0.000,reip=0.000,cl=1,cld=1,fgs=0, ip=0.0.0.0, so=2014-11-16 11:51:01, dmn=2013-03-21 17:37:32 X-Mirapoint-Loop-Id: 1eba77db36657e7e3ca085ccc532d2ba Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org In jffs2 filesystem, I mount a overlayfs, after rmdir and mkdir, 'Invalid argument' error will appear. It can be reproduced like this, [root@localhost mnt]# mkdir -p overlay-mkdir [root@localhost overlay-mkdir]# pwd;mount|grep jffs2 /root/mnt/overlay-mkdir /dev/mtdblock0 on /root/mnt type jffs2 (rw,relatime) [root@localhost mnt]# cd overlay-mkdir/ [root@localhost overlay-mkdir]# mkdir -p merged lower/hello upper work [root@localhost overlay-mkdir]# mount -t overlay overlay -olowerdir=lower,upperdir=upper,workdir=work merged [root@localhost overlay-mkdir]# rmdir merged/hello [root@localhost overlay-mkdir]# mkdir merged/hello mkdir: cannot create directory merged/hello Invalid argument From: Shukui Yang Date: Wed, 14 Jun 2017 14:03:51 +0800 Subject: [PATCH] fs/jffs2: fix a Invalid argument error when mkdir in jffs2 which is mounted as overlayfs Signed-off-by: Shukui Yang --- fs/jffs2/dir.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/fs/jffs2/dir.c b/fs/jffs2/dir.c index cfbceb1..9a95d98 100644 --- a/fs/jffs2/dir.c +++ b/fs/jffs2/dir.c @@ -34,8 +34,8 @@ static int jffs2_symlink (struct inode *,struct dentry *,const char *); static int jffs2_mkdir (struct inode *,struct dentry *,umode_t); static int jffs2_rmdir (struct inode *,struct dentry *); static int jffs2_mknod (struct inode *,struct dentry *,umode_t,dev_t); -static int jffs2_rename (struct inode *, struct dentry *, - struct inode *, struct dentry *); +static int jffs2_rename2 (struct inode *, struct dentry *, + struct inode *, struct dentry *, unsigned int); const struct file_operations jffs2_dir_operations = { @@ -57,7 +57,7 @@ const struct inode_operations jffs2_dir_inode_operations = .mkdir = jffs2_mkdir, .rmdir = jffs2_rmdir, .mknod = jffs2_mknod, - .rename = jffs2_rename, + .rename2 = jffs2_rename2, .get_acl = jffs2_get_acl, .set_acl = jffs2_set_acl, .setattr = jffs2_setattr, @@ -865,3 +865,8 @@ static int jffs2_rename (struct inode *old_dir_i, struct dentry *old_dentry, return 0; } +static int jffs2_rename2 (struct inode *old_dir_i, struct dentry *old_dentry, + struct inode *new_dir_i, struct dentry *new_dentry, unsigned int flags) +{ + return jffs2_rename(old_dir_i, old_dentry, new_dir_i, new_dentry); +} -- 2.6.2