[1109] in arla-drinkers

home help back first fref pref prev next nref lref last post

Re: Arla 0.26/27pre4 vs. Linux 2.2.10 on SparcUltra 5

daemon@ATHENA.MIT.EDU (Love)
Fri Aug 27 11:57:26 1999

From owner-arla-drinkers@stacken.kth.se Fri Aug 27 15:57:26 1999
Return-Path: <owner-arla-drinkers@stacken.kth.se>
Delivered-To: arla-drinkers-mtg@bloom-picayune.mit.edu
Received: (qmail 17139 invoked from network); 27 Aug 1999 15:57:25 -0000
Received: from unknown (HELO sundance.stacken.kth.se) (130.237.234.41)
  by bloom-picayune.mit.edu with SMTP; 27 Aug 1999 15:57:25 -0000
Received: (from majordom@localhost)
	by sundance.stacken.kth.se (8.8.8/8.8.8) id RAA25394
	for arla-drinkers-list; Fri, 27 Aug 1999 17:47:35 +0200 (MET DST)
Received: from elixir.e.kth.se (elixir.e.kth.se [130.237.48.5])
	by sundance.stacken.kth.se (8.8.8/8.8.8) with ESMTP id RAA25390
	for <arla-drinkers@stacken.kth.se>; Fri, 27 Aug 1999 17:47:30 +0200 (MET DST)
Received: from hummel.e.kth.se (hummel.e.kth.se [130.237.43.135])
	by elixir.e.kth.se (8.9.3/8.9.3) with ESMTP id RAA12836;
	Fri, 27 Aug 1999 17:47:28 +0200 (MET DST)
Received: (from lha@localhost)
	by hummel.e.kth.se (8.9.3/8.9.3) id RAA08675;
	Fri, 27 Aug 1999 17:47:25 +0200 (MET DST)
To: Tobias Grundmann <grundman@Informatik.Uni-Tuebingen.De>
Cc: arla-drinkers@stacken.kth.se, grundman@peanuts.informatik.uni-tuebingen.de
Subject: Re: Arla 0.26/27pre4 vs. Linux 2.2.10 on SparcUltra 5
References: <199908271339.PAA23710@peanuts.informatik.uni-tuebingen.de>
From: Love <lha@stacken.kth.se>
Date: 27 Aug 1999 17:47:23 +0200
In-Reply-To: Tobias Grundmann's message of "Fri, 27 Aug 1999 15:41:04 +0200"
Message-ID: <am3dx52pkk.fsf@hummel.e.kth.se>
Lines: 99
User-Agent: Gnus/5.0700000000000003 (Pterodactyl Gnus v0.91) Emacs/20.2
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Sender: owner-arla-drinkers@stacken.kth.se
Precedence: bulk

Tobias Grundmann <grundman@Informatik.Uni-Tuebingen.De> writes:

> thank you for sending the patch. Maybe I should have better mentioned again 
> that I tried the cvs version now where this patch is integrated already. Sorry.

Oh, well.
 
> The question is should I try to work on this or not? If there will be an 
> update soon this would be wasted time.

If you turn on xfs-debugging, do you ever get the logmessage caused by

xfs_syscalls.c: fhget_call()
[...] 
    XFSDEB(XDEBVFOPS, ("fhget_call: dev: %u inode: %u\n",
		       fh.dev_index, (unsigned int) fh.inode));


?

> Well my machine panics in xfs_message_installdata after calling
> xfs_fh_to_dentry which returns a defective dentry (IS_ERR(dentry)):
>  
> iterator kernel: XFS Panic: xfs_message_installdata failed to lookup
> cache file = 00/01@, errno: -22

Can you try this patch, it might be a workaround for the broken fhopen.

Love

Index: xfs_message.c
===================================================================
RCS file: /afs/stacken.kth.se/src/SourceRepository/arla/xfs/linux/xfs_message.c,v
retrieving revision 1.53
diff -u -w -u -w -r1.53 xfs_message.c
--- xfs_message.c	1999/08/21 03:44:30	1.53
+++ xfs_message.c	1999/08/27 15:39:54
@@ -46,7 +46,7 @@
 #include <xfs/xfs_fs.h>
 #include <xfs/xfs_dev.h>
 
-RCSID("$Id$");
+RCSID("$Id: xfs_message.c,v 1.53 1999/08/21 03:44:30 map Exp $");
 
 #ifdef LINUX2_1
 static void
@@ -222,12 +222,6 @@
 #ifndef LINUX2_1
 	current->fs->pwd->i_count++;
 	error = open_namei(message->cache_name, 3, 0, &vp, current->fs->pwd);
-#else
-	dentry = xfs_fh_to_dentry(&message->cache_handle);
-	XFSDEB(XDEBMSG, ("xfs_message_installdata dentry: %p\n",
-			 dentry));
-#endif /* LINUX2_1 */
-#ifndef LINUX2_1
 	if (error == 0) {
 	    if (DATA_FROM_XNODE(t)) {
 		iput(DATA_FROM_XNODE(t));
@@ -242,8 +236,22 @@
 	    memmove(t->rights, message->node.rights, sizeof(t->rights));
 	    t->anonrights = message->node.anonrights;
 	} else
-	    printk(KERN_EMERG "XFS Panic: xfs_message_installdata failed to lookup cache file = %s, error = %d\n", message->cache_name, error);
+	    printk(KERN_EMERG "XFS Panic: xfs_message_installdata failed to lookup "
+		   "cache file = %s, error = %d\n", message->cache_name, error);
 #else
+	dentry = xfs_fh_to_dentry(&message->cache_handle);
+	XFSDEB(XDEBMSG, ("xfs_message_installdata dentry: %p\n",
+			 dentry));
+	if (IS_ERR(dentry)) {
+	    printk(KERN_EMERG "XFS Panic: xfs_message_installdata failed fh_to_dentry = %s, errno: %ld\n",
+		   message->cache_name, PTR_ERR(dentry));
+	    dentry = open_namei(message->cache_name, 3, 0);
+	    if (IS_ERR(dentry)) {
+		printk(KERN_EMERG "XFS Panic: xfs_message_installdata failed open_namei, errno: %ld\n",
+		       PTR_ERR(dentry));
+		return PTR_ERR(dentry);
+	    }
+	}
 	if (!IS_ERR(dentry)) {
 	    if (DATA_FROM_XNODE(t)) {
 		dput(DATA_FROM_XNODE(t));
@@ -259,9 +267,7 @@
 	    memmove(t->id, message->node.id, sizeof(t->id));
 	    memmove(t->rights, message->node.rights, sizeof(t->rights));
 	    t->anonrights = message->node.anonrights;
-	} else {
-	    printk(KERN_EMERG "XFS Panic: xfs_message_installdata failed to lookup cache file = %s, errno: %ld\n", message->cache_name, PTR_ERR(dentry));
-	    error = ENOTTY; /* XXXXX */
+	    error = 0;
 	}
 #endif /* LINUX2_1 */
     } else {






home help back first fref pref prev next nref lref last post