Re: fault when using iget() on XFS file system (2.6.9)

From: Scott Baker
Date: Fri Sep 22 2006 - 21:21:13 EST


Explain why you think you need iget(). It's almost certainly a Bad Idea(tm) -
code outside of filesystem has no business calling it.

Hello Al,

Thanks for the reply. I'm working on a file system layering module.
Without going into a whole lot of detail, it needs to sit on top of a
lower file system (such as ext3 or xfs), and presents itself as a file
system to other layers, such as usermode and the kernel nfs server.

The kernel nfs server uses the get_object export_operation to map a
file handle (which in our case is identical an inode number) into a
denty. Thus, the kernel nfsd presents my layer with an inode number,
which I must map into a dentry. I do this by calling iget() on the
lower file system (ext3, xfs) to get the inode, then work from there
to get all of the dentrys stitched together.

Thus, I could make everything work if I had a general-purpose
mechanism for querying the lower file system (xfs, ext3) with an inode
number to get an inode or dentry. I thought iget() was my answer, but
it doesn't work in the general case for xfs.

Scott
-
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/