nfs_display_fhandle() is a lame client-side function to display file handles on the console. It is for debugging only. Signed-off-by: Chuck Lever <chuck.lever@xxxxxxxxxx> --- fs/nfs/inode.c | 44 ++++++++++++++++++++++++++++++++++++++++++++ include/linux/nfs_fs.h | 13 +++++++++++++ 2 files changed, 57 insertions(+), 0 deletions(-) diff --git a/fs/nfs/inode.c b/fs/nfs/inode.c index 1cc600e..1325160 100644 --- a/fs/nfs/inode.c +++ b/fs/nfs/inode.c @@ -1033,6 +1033,50 @@ struct nfs_fh *nfs_alloc_fhandle(void) } /** + * _nfs_display_fhandle - display an NFS file handle on the console + * + * @fh: file handle to display + * + * For debugging only. + */ +#ifdef RPC_DEBUG +void _nfs_display_fhandle(const struct nfs_fh *fh) +{ + unsigned short i; + + if (fh->size == 0 || fh == NULL) { + printk(KERN_NOTICE "Empty NFS file handle at %p\n", fh); + return; + } + + printk(KERN_NOTICE "NFS file handle at %p (size %u):\n", fh, fh->size); + for (i = 0; i < fh->size; i += 16) { + __be32 *pos = (__be32 *)&fh->data[i]; + + switch ((fh->size - i - 1) >> 2) { + case 0: + printk(KERN_NOTICE " %08x", + be32_to_cpup(pos)); + break; + case 1: + printk(KERN_NOTICE " %08x %08x\n", + be32_to_cpup(pos), be32_to_cpup(pos + 1)); + break; + case 2: + printk(KERN_NOTICE " %08x %08x %08x\n", + be32_to_cpup(pos), be32_to_cpup(pos + 1), + be32_to_cpup(pos + 2)); + break; + default: + printk(KERN_NOTICE " %08x %08x %08x %08x\n", + be32_to_cpup(pos), be32_to_cpup(pos + 1), + be32_to_cpup(pos + 2), be32_to_cpup(pos + 3)); + } + } +} +#endif + +/** * nfs_inode_attrs_need_update - check if the inode attributes need updating * @inode - pointer to inode * @fattr - attributes diff --git a/include/linux/nfs_fs.h b/include/linux/nfs_fs.h index 6023efa..511e22a 100644 --- a/include/linux/nfs_fs.h +++ b/include/linux/nfs_fs.h @@ -384,6 +384,19 @@ static inline void nfs_free_fhandle(const struct nfs_fh *fh) kfree(fh); } +#ifdef RPC_DEBUG +extern void _nfs_display_fhandle(const struct nfs_fh *fh); +#define nfs_display_fhandle(fh) \ + do { \ + if (unlikely(nfs_debug & NFSDBG_FACILITY)) \ + _nfs_display_fhandle(fh); \ + } while(0) +#else +static inline void nfs_display_fhandle(const struct nfs_fh *fh) +{ +} +#endif + /* * linux/fs/nfs/nfsroot.c */ -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html