Re: XFS accessing arch-specific structures

From: Nathan Scott
Date: Mon Dec 12 2005 - 16:55:50 EST


Hi there David,

On Mon, Dec 12, 2005 at 02:39:12PM +0000, David Howells wrote:
> I've got a problem in which XFS is accessing arch-specific structures, and
> thus requiring those structures to conform to its ideals. Specifically, it's
> trying to read the counter using atomic_read(), whether or not this is
> possible:
>
> fs/xfs/linux-2.6/sema.h:
> #define valusema(sp) (atomic_read(&(sp)->count))
>
> compile log:
>
> CC fs/xfs/xfs_inode.o
> CC fs/xfs/xfs_inode_item.o
> fs/xfs/xfs_inode_item.c: In function `xfs_inode_item_pushbuf':
> fs/xfs/xfs_inode_item.c:803: error: structure has no member named `count'
> fs/xfs/xfs_inode_item.c:825: error: structure has no member named `count'
>
> Can you fix this please? This will not compile with all archs.
>
> I'm told that Christoph Hellwig may have an idea or a patch that might provide
> a fix. If it's necessary to get the count on the semaphore (which it might
> be), then you should add a function to each asm/semaphore.h to retrieve it and
> use that.

I just chatted with Christoph about this. For some reason we thought
all instances of direct count use were in debug code (or were put into
debug-only code), but we missed the one in xfs_inode_item_pushbuf. It
only needs to know if count > 0, so we could implement that using the
down_trylock primitive, but it'd be pretty ugly.

It looks like a couple of the arch's have now got a sem_getcount, and
Christoph is planning on reviving an earlier patch to provide that API
across all architectures, and then we can change XFS to use that.

cheers.

--
Nathan
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/