NFS: add filehandle crc for debug display
Match wireshark's CRC-32 hash for easier debugging Signed-off-by: Weston Andros Adamson <dros@netapp.com> Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
This commit is contained in:
		
							parent
							
								
									ff2eb6818d
								
							
						
					
					
						commit
						d8e0539ebd
					
				| @ -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]; | ||||
| 
 | ||||
|  | ||||
| @ -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) | ||||
| { | ||||
| } | ||||
| static inline void nfs_display_fhandle(const struct nfs_fh *fh, | ||||
| 				       const char *caption) | ||||
| { | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user