From: Bryan Schumaker <bjschuma@netapp.com>
To: Weston Andros Adamson <dros@netapp.com>
Cc: Trond.Myklebust@netapp.com, chuck.lever@oracle.com,
linux-nfs@vger.kernel.org
Subject: Re: [PATCH] NFS: add filehandle crc for debug display
Date: Tue, 20 Mar 2012 09:53:15 -0400 [thread overview]
Message-ID: <4F688BCB.3090306@netapp.com> (raw)
In-Reply-To: <1331084803-21460-1-git-send-email-dros@netapp.com>
Hi Dros,
On 03/06/2012 08:46 PM, Weston Andros Adamson wrote:
> Match wireshark's CRC-32 hash for easier debugging
>
> Signed-off-by: Weston Andros Adamson <dros@netapp.com>
> ---
> Reposted with Trond's suggestion of splitting out hash calculation to a
> separate function. Now dprintks can use a fh's CRC instead of the
> multiline nfs_display_fhandle() when it makes sense.
>
> fs/nfs/inode.c | 23 ++++++++++++++++++++---
> include/linux/nfs_fs.h | 8 ++++++++
> 2 files changed, 28 insertions(+), 3 deletions(-)
>
> diff --git a/fs/nfs/inode.c b/fs/nfs/inode.c
> index 99a4f52..3919ceb 100644
> --- a/fs/nfs/inode.c
> +++ b/fs/nfs/inode.c
> @@ -39,6 +39,7 @@
> #include <linux/slab.h>
> #include <linux/compat.h>
> #include <linux/freezer.h>
> +#include <linux/crc32.h>
>
> #include <asm/system.h>
> #include <asm/uaccess.h>
> @@ -1045,7 +1046,23 @@ struct nfs_fh *nfs_alloc_fhandle(void)
> return fh;
> }
>
> -/**
> +#ifdef RPC_DEBUG
> +/*
> + * _nfs_display_fhandle_hash - calculate the crc32 hash for the filehandle
> + * in the same way that wireshark does
> + *
> + * @fh: file handle
> + *
> + * For debugging only.
> + */
> +u32 _nfs_display_fhandle_hash(const struct nfs_fh *fh)
> +{
> + /* wireshark uses 32-bit AUTODIN crc and does a bitwise
> + * not on the result */
> + return ~crc32(0xFFFFFFFF, &fh->data[0], fh->size);
> +}
> +
> +/*
> * _nfs_display_fhandle - display an NFS file handle on the console
> *
> * @fh: file handle to display
> @@ -1053,7 +1070,6 @@ struct nfs_fh *nfs_alloc_fhandle(void)
> *
> * For debugging only.
> */
> -#ifdef RPC_DEBUG
> void _nfs_display_fhandle(const struct nfs_fh *fh, const char *caption)
> {
> unsigned short i;
> @@ -1063,7 +1079,8 @@ void _nfs_display_fhandle(const struct nfs_fh *fh, const char *caption)
> return;
> }
>
> - printk(KERN_DEFAULT "%s at %p is %u bytes:\n", caption, fh, fh->size);
> + printk(KERN_DEFAULT "%s at %p is %u bytes, crc: 0x%08x:\n",
> + caption, fh, fh->size, _nfs_display_fhandle_hash(fh));
> for (i = 0; i < fh->size; i += 16) {
> __be32 *pos = (__be32 *)&fh->data[i];
>
> diff --git a/include/linux/nfs_fs.h b/include/linux/nfs_fs.h
> index c07a757..ce8e436 100644
> --- a/include/linux/nfs_fs.h
> +++ b/include/linux/nfs_fs.h
> @@ -396,6 +396,11 @@ static inline void nfs_free_fhandle(const struct nfs_fh *fh)
> }
>
> #ifdef RPC_DEBUG
> +extern u32 _nfs_display_fhandle_hash(const struct nfs_fh *fh);
> +static inline u32 nfs_display_fhandle_hash(const struct nfs_fh *fh)
> +{
> + return _nfs_display_fhandle_hash(fh);
> +}
> extern void _nfs_display_fhandle(const struct nfs_fh *fh, const char *caption);
> #define nfs_display_fhandle(fh, caption) \
> do { \
> @@ -403,6 +408,9 @@ extern void _nfs_display_fhandle(const struct nfs_fh *fh, const char *caption);
> _nfs_display_fhandle(fh, caption); \
> } while (0)
> #else
> +static inline u32 nfs_display_fhandle_hash(const struct nfs_fh *fh)
> +{
This function should return something... maybe 0?
- Bryan
> +}
> static inline void nfs_display_fhandle(const struct nfs_fh *fh,
> const char *caption)
> {
next prev parent reply other threads:[~2012-03-20 13:53 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-03-07 1:46 [PATCH] NFS: add filehandle crc for debug display Weston Andros Adamson
2012-03-20 13:53 ` Bryan Schumaker [this message]
2012-03-20 13:55 ` Myklebust, Trond
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4F688BCB.3090306@netapp.com \
--to=bjschuma@netapp.com \
--cc=Trond.Myklebust@netapp.com \
--cc=chuck.lever@oracle.com \
--cc=dros@netapp.com \
--cc=linux-nfs@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.