xfs
[Top] [All Lists]

Re: (fwd) Re: sys_attrctl not working on ppc

To: thomas.graichen@xxxxxxxxxxxxx
Subject: Re: (fwd) Re: sys_attrctl not working on ppc
From: Andrew Gildfind <ajag@xxxxxxxxxxxxxxxxxxxxxxx>
Date: Thu, 7 Dec 2000 21:22:18 +1100
Cc: linux-xfs@xxxxxxxxxxx
In-reply-to: <20001207084102.8701325994@xxxxxxxxxxxxxxxxxxxxxxxx>; from graichen@xxxxxxxxxxxxx on Thu, Dec 07, 2000 at 09:41:02AM +0100
References: <20001207084102.8701325994@xxxxxxxxxxxxxxxxxxxxxxxx>
Sender: owner-linux-xfs@xxxxxxxxxxx
On Thu, Dec 07, 2000 at 09:41:02AM +0100, Thomas Graichen wrote:
> Andrew Gildfind <ajag@xxxxxxxxxxxxxxxxxxxxxxx> wrote:
> 
> > Couple of observations first:
> 
> >  - xfs_attr always calls the attr_* and therefore the system call with
> >    a path, rather than a file descriptor.
> >  - xfs_attr is always called with ATTR_DONT_FOLLOW - that is it never 
> > follows
> >    symlinks
> 
> > The code looks like:
> 
> >     asmlinkage long sys_attrctl(attr_obj_t obj, int type, 
> >                                     attr_op_t *ops, int count)
> ...
> 
> > Which means that on the way in (and we know that at least its hitting the
> > syscall), it will always take the ATTR_TYPE_LPATH case. 
> 
> > I've had another look at your QA results (ppc.15-11-2000) they give the
> > following:
> 
> >     QA output created by 020
> >     *** list non-existant file
> >        *** print attributes
> >     attr_list: Bad address
> >     Could not list attributes for <TESTFILE>
> >           !!! error return
> >     *** list non-xfs file (in /proc)
> >        *** print attributes
> >     attr_list: Bad address
> 
> >     ...
> 
> 
> > The first test checks the non-existent file case, which means that we
> > should come into the syscall, walk the path and die immediately with
> > an ENOENT, ie. we should never get into XFS code at all.
> 
> > The fact that we are getting a bad address even in this case suggests to
> > me that there maybe something weird happening because the path comes
> > out of an attr_obj_t structure - are we sure that those structures are
> > the same size in userland/kernel on PPC?
> 
> looks like (i hope this test is correct)
> 
> ppc:/usr/src/xfs/linux # gdb fs/xfs/xfs.o 
> GNU gdb 4.18
> Copyright 1998 Free Software Foundation, Inc.
> GDB is free software, covered by the GNU General Public License, and you are
> welcome to change it and/or distribute copies of it under certain conditions.
> Type "show copying" to see the conditions.
> There is absolutely no warranty for GDB.  Type "show warranty" for details.
> This GDB was configured as "ppc-suse-linux"...
> (gdb) print sizeof(attr_obj_t)
> $1 = 4
> (gdb) quit
> ppc:/usr/src/xfs/linux # gdb ../cmd/xfs/db/xfs_db 
> GNU gdb 4.18
> Copyright 1998 Free Software Foundation, Inc.
> GDB is free software, covered by the GNU General Public License, and you are
> welcome to change it and/or distribute copies of it under certain conditions.
> Type "show copying" to see the conditions.
> There is absolutely no warranty for GDB.  Type "show warranty" for details.
> This GDB was configured as "ppc-suse-linux"...
> (gdb) print sizeof(attr_obj_t)
> $1 = 4
> (gdb)
> 
> > So... can you whack in another printk just after the switch and check 
> > whether
> > the path lookup ever works - if it does I'm back in stumped-land, if not
> > we have our culprit..
> 
> ok - here is the result:
> 
> Start mounting filesystem: ide0(3,8)
> Ending clean XFS mount for filesystem: ide0(3,8)
> ATTR_TYPE_PATH
> ATTR_TYPE_PATH
> ATTR_TYPE_PATH
> ATTR_TYPE_PATH
> ATTR_TYPE_PATH
> ATTR_TYPE_PATH
> ATTR_TYPE_PATH
> ATTR_TYPE_PATH
> ATTR_TYPE_PATH
> ATTR_TYPE_PATH
> ATTR_TYPE_PATH
> ATTR_TYPE_PATH
> ATTR_TYPE_PATH
> Start mounting filesystem: ide0(3,8)
> Ending clean XFS mount for filesystem: ide0(3,8)
> 

So to confirm the call made its way through the switch ok and went on to call
the vfs? Is ATTR_TYPE_PATH the type that came in with the call? If it was
then there's a bug in the library that maps the IRIXy flags to the attrctl
flags (that's a separate issue tho).

Do you have any more recent stress test outputs I could have a look at?

> so any new ideas?

One of the copy-ins later in the code is stuffed? Given that it already
passes on little-endian ia32 (all the on-disk stuff is big-endian) it's
probably not likely to be an endian issues in the core -> disk -> core 
conversion problem but I'm not really sure what's going on.

If you can let me have a current stress test output I'll have a look 
and see if I can think of anything else.

Andrew

-- 
Andrew Gildfind - R&D Software Engineer - SGI PTG Melbourne Australia
email: ajag@xxxxxxxxxxxxxxxxx - work: +61.3.9834.8200 home: +61.3.9421.5335

<Prev in Thread] Current Thread [Next in Thread>