From: Eric Sandeen <sandeen@sandeen.net>
To: Brian Foster <bfoster@redhat.com>
Cc: yongtaofu@gmail.com, xfs@oss.sgi.com
Subject: Re: xfs_iunlink_remove: xfs_inotobp() returned error 22 -- debugging
Date: Mon, 22 Apr 2013 14:59:54 -0500 [thread overview]
Message-ID: <517596BA.3060408@sandeen.net> (raw)
In-Reply-To: <516C89DF.4070904@redhat.com>
On 4/15/13 6:14 PM, Brian Foster wrote:
> Hi,
>
> Thanks for the data in the previous thread:
>
> http://oss.sgi.com/archives/xfs/2013-04/msg00327.html
>
> I'm spinning off a new thread specifically for this because the original
> thread is already too large and scattered to track. As Eric stated,
> please try to keep data contained in as few messages as possible.
>
Well, it's always simple in the end. It just took a lot of debugging
to figure out what was happening - we do appreciate your help with that!
We were able to create a local reproducer, and it looks like
this patch fixes things:
commit aae8a97d3ec30788790d1720b71d76fd8eb44b73
Author: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
Date: Sat Jan 29 18:43:27 2011 +0530
fs: Don't allow to create hardlink for deleted file
Add inode->i_nlink == 0 check in VFS. Some of the file systems
do this internally. A followup patch will remove those instance.
This is needed to ensure that with link by handle we don't allow
to create hardlink of an unlinked file. The check also prevent a race
between unlink and link
Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
diff --git a/fs/namei.c b/fs/namei.c
index 83e92ba..33be51a 100644
--- a/fs/namei.c
+++ b/fs/namei.c
@@ -2906,7 +2906,11 @@ int vfs_link(struct dentry *old_dentry, struct inode *dir, struct dentry *new_de
return error;
mutex_lock(&inode->i_mutex);
- error = dir->i_op->link(old_dentry, dir, new_dentry);
+ /* Make sure we don't allow creating hardlink to an unlinked file */
+ if (inode->i_nlink == 0)
+ error = -ENOENT;
+ else
+ error = dir->i_op->link(old_dentry, dir, new_dentry);
mutex_unlock(&inode->i_mutex);
if (!error)
fsnotify_link(dir, inode, new_dentry);
_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs
next prev parent reply other threads:[~2013-04-22 19:59 UTC|newest]
Thread overview: 50+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-04-15 23:14 xfs_iunlink_remove: xfs_inotobp() returned error 22 -- debugging Brian Foster
2013-04-16 16:24 ` Dave Chinner
2013-04-16 17:18 ` Brian Foster
2013-04-17 1:04 ` 符永涛
2013-04-17 1:35 ` 符永涛
2013-04-17 3:15 ` 符永涛
2013-04-17 3:48 ` 符永涛
2013-04-17 4:28 ` Eric Sandeen
2013-04-18 1:30 ` 符永涛
2013-04-18 6:45 ` 符永涛
2013-04-18 8:25 ` 符永涛
2013-04-18 11:41 ` Brian Foster
2013-04-18 15:23 ` 符永涛
2013-04-18 16:40 ` 符永涛
2013-04-18 17:03 ` Eric Sandeen
2013-04-18 18:35 ` Eric Sandeen
2013-04-18 20:59 ` Brian Foster
2013-04-19 6:40 ` 符永涛
2013-04-19 11:41 ` 符永涛
2013-04-19 14:59 ` Eric Sandeen
2013-04-19 15:13 ` 符永涛
2013-04-19 15:18 ` 符永涛
2013-04-19 16:16 ` Eric Sandeen
2013-04-19 16:47 ` 符永涛
2013-04-19 17:00 ` 符永涛
2013-04-19 17:04 ` Eric Sandeen
2013-04-19 17:08 ` 符永涛
2013-04-19 17:17 ` 符永涛
2013-04-20 0:03 ` 符永涛
2013-04-20 1:15 ` 符永涛
2013-04-20 2:51 ` 符永涛
2013-04-20 3:40 ` Eric Sandeen
2013-04-20 4:03 ` 符永涛
2013-04-20 4:11 ` 符永涛
2013-04-20 4:20 ` Eric Sandeen
2013-04-20 4:27 ` 符永涛
2013-04-20 10:10 ` 符永涛
2013-04-20 11:38 ` Brian Foster
2013-04-20 11:52 ` 符永涛
2013-04-20 12:58 ` Brian Foster
2013-04-20 13:12 ` 符永涛
2013-04-20 15:36 ` Eric Sandeen
[not found] ` <5172B73C.6000900@sandeen.net>
2013-04-20 23:52 ` 符永涛
2013-04-22 19:59 ` Eric Sandeen [this message]
2013-04-23 0:08 ` Dave Chinner
2013-04-23 0:52 ` Eric Sandeen
2013-04-23 1:31 ` 符永涛
2013-04-24 9:02 ` Dave Chinner
2013-04-24 10:21 ` 符永涛
2013-04-25 0:48 ` 符永涛
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=517596BA.3060408@sandeen.net \
--to=sandeen@sandeen.net \
--cc=bfoster@redhat.com \
--cc=xfs@oss.sgi.com \
--cc=yongtaofu@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.