public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: David Greaves <david@dgreaves.com>
To: Christoph Hellwig <hch@infradead.org>
Cc: Jakob Oestergaard <jakob@unthought.net>,
	Jan Kasprzak <kas@fi.muni.cz>,
	linux-kernel@vger.kernel.org, kruty@fi.muni.cz
Subject: Re: XFS: inode with st_mode == 0
Date: Fri, 14 Jan 2005 18:14:55 +0000	[thread overview]
Message-ID: <41E80C1F.3070905@dgreaves.com> (raw)
In-Reply-To: <20041222182344.GB14586@infradead.org>


Christoph Hellwig wrote:

>>>	We have applied these two patches to 2.6.10-rc2, but this
>>>does not help. A few minutes ago I've got the "?----------" file
>>>again from my test script. This time it took >4 hours (it was
>>>about an hour or so without this patch).
>>>      
>>>
I'm seeing this problem occasionally too.

I'm running 2.6.10

The patch you provided below can be made to apply but I get:
LD .tmp_vmlinux1
fs/built-in.o(.text+0xa0ed3): In function `linvfs_decode_fh':
: undefined reference to `find_exported_dentry'

I assume that since you say:

> Btw, any chance you could
>try XFS CVS (which is at 2.6.9) + the patch below instead of plain 2.6.9,
>there have been various other fixes in the last months.
>  
>
That not all the changes in XFS CVS have made it to 2.6.10?

Is there a 2.6.10 patch that I could apply? Or do you have any other 
suggestions.

David

>
>Index: fs/xfs/xfs_vfsops.c
>===================================================================
>RCS file: /cvs/linux-2.6-xfs/fs/xfs/xfs_vfsops.c,v
>retrieving revision 1.459
>diff -u -p -r1.459 xfs_vfsops.c
>--- fs/xfs/xfs_vfsops.c	15 Dec 2004 04:56:58 -0000	1.459
>+++ fs/xfs/xfs_vfsops.c	16 Dec 2004 20:47:22 -0000
>@@ -1581,7 +1581,7 @@ xfs_syncsub(
> }
> 
> /*
>- * xfs_vget - called by DMAPI to get vnode from file handle
>+ * xfs_vget - called by DMAPI and NFSD to get vnode from file handle
>  */
> STATIC int
> xfs_vget(
>@@ -1623,7 +1623,7 @@ xfs_vget(
> 		return XFS_ERROR(EIO);
> 	}
> 
>-	if (ip->i_d.di_mode == 0 || (igen && (ip->i_d.di_gen != igen))) {
>+	if (ip->i_d.di_mode == 0 || ip->i_d.di_gen != igen) {
> 		xfs_iput_new(ip, XFS_ILOCK_SHARED);
> 		*vpp = NULL;
> 		return XFS_ERROR(ENOENT);
>Index: fs/xfs/linux-2.6/xfs_super.c
>===================================================================
>RCS file: /cvs/linux-2.6-xfs/fs/xfs/linux-2.6/xfs_super.c,v
>retrieving revision 1.321
>diff -u -p -r1.321 xfs_super.c
>--- fs/xfs/linux-2.6/xfs_super.c	9 Dec 2004 02:41:20 -0000	1.321
>+++ fs/xfs/linux-2.6/xfs_super.c	16 Dec 2004 20:47:23 -0000
>@@ -731,6 +731,39 @@ linvfs_get_dentry(
> 	return result;
> }
> 
>+STATIC struct dentry *
>+linvfs_decode_fh(
>+	struct super_block	*sb,
>+	__u32			*fh,
>+	int			fh_len,
>+	int			fileid_type,
>+	int (*acceptable)(
>+		void		*context,
>+		struct dentry	*de),
>+	void			*context)
>+{
>+	__u32 parent[2];
>+	parent[0] = parent[1] = 0;
>+	
>+	if (fh_len < 2 || fileid_type > 2)
>+		return NULL;
>+	
>+	if (fileid_type == 2 && fh_len > 2) {
>+		if (fh_len == 3) {
>+			printk(KERN_WARNING
>+			       "XFS: detected filehandle without "
>+			       "parent inode generation information.");
>+			return ERR_PTR(-ESTALE);
>+		}
>+			
>+		parent[0] = fh[2];
>+		parent[1] = fh[3];
>+	}
>+	
>+	return find_exported_dentry(sb, fh, parent, acceptable, context);
>+
>+}
>+
> STATIC int
> linvfs_show_options(
> 	struct seq_file		*m,
>@@ -893,6 +926,7 @@ linvfs_get_sb(
> 
> 
> STATIC struct export_operations linvfs_export_ops = {
>+	.decode_fh		= linvfs_decode_fh,
> 	.get_parent		= linvfs_get_parent,
> 	.get_dentry		= linvfs_get_dentry,
> };
>Index: include/linux/fs.h
>===================================================================
>RCS file: /cvs/linux-2.6-xfs/include/linux/fs.h,v
>retrieving revision 1.11
>diff -u -p -r1.11 fs.h
>--- include/linux/fs.h	1 Oct 2004 15:10:15 -0000	1.11
>+++ include/linux/fs.h	16 Dec 2004 20:47:25 -0000
>@@ -1115,6 +1115,10 @@ struct export_operations {
> 
> };
> 
>+extern struct dentry *
>+find_exported_dentry(struct super_block *sb, void *obj, void *parent,
>+		     int (*acceptable)(void *context, struct dentry *de),
>+		     void *context);
> 
> struct file_system_type {
> 	const char *name;
>-
>To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
>the body of a message to majordomo@vger.kernel.org
>More majordomo info at  http://vger.kernel.org/majordomo-info.html
>Please read the FAQ at  http://www.tux.org/lkml/
>
>  
>


  parent reply	other threads:[~2005-01-14 18:16 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-12-09 12:59 XFS: inode with st_mode == 0 Jan Kasprzak
2004-12-09 13:53 ` Jakob Oestergaard
2004-12-09 14:07   ` Jan Kasprzak
2004-12-09 21:54   ` Christoph Hellwig
2004-12-14 23:40     ` Jakob Oestergaard
2004-12-21 18:43     ` Jan Kasprzak
2004-12-22  8:41       ` Jakob Oestergaard
2004-12-22 18:23         ` Christoph Hellwig
2004-12-23 15:01           ` Jakob Oestergaard
2005-01-04  8:48           ` Jakob Oestergaard
2005-01-05 11:34             ` Christoph Hellwig
2005-01-14 18:14           ` David Greaves [this message]
2005-01-14 18:23             ` Jakob Oestergaard
2005-01-15  2:09               ` Nathan Scott
2005-01-17  0:53                 ` Jakob Oestergaard
2005-01-16 13:51               ` Christoph Hellwig
2005-01-17 10:07                 ` Jakob Oestergaard
2005-01-17 11:55                   ` Jan-Frode Myklebust
2005-01-17 13:48                     ` Anders Saaby
2005-01-17 21:31                   ` journaled filesystems -- known instability; Was: " Jeffrey Hundstad
2005-01-17 20:54                     ` Alan Cox
2005-01-20 22:30                     ` Jeffrey E. Hundstad
2005-01-25 12:47                     ` Stephen C. Tweedie
2005-01-25 15:09                       ` Jeffrey Hundstad
2005-01-25 15:37                         ` Stephen C. Tweedie
2005-01-28 20:15                           ` Jeffrey E. Hundstad
2005-01-28 21:00                             ` Stephen C. Tweedie
2005-01-28 21:06                               ` Jeffrey E. Hundstad
2005-01-18 11:45           ` Jan Kasprzak

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=41E80C1F.3070905@dgreaves.com \
    --to=david@dgreaves.com \
    --cc=hch@infradead.org \
    --cc=jakob@unthought.net \
    --cc=kas@fi.muni.cz \
    --cc=kruty@fi.muni.cz \
    --cc=linux-kernel@vger.kernel.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox