Arla 0.26/27pre4 vs. Linux 2.2.10 on SparcUltra 5
Love
lha at stacken.kth.se
Fri Aug 27 17:47:35 CEST 1999
Tobias Grundmann <grundman at 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 {
More information about the Arla-drinkers
mailing list