forked from mirrors/linux
		
	NFS: refactor code for calculating the crc32 hash of a filehandle
We want to be able to display the crc32 hash of the filehandle in tracepoints. Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
This commit is contained in:
		
							parent
							
								
									c2dd1378fa
								
							
						
					
					
						commit
						1264a2f053
					
				
					 2 changed files with 21 additions and 2 deletions
				
			
		|  | @ -38,7 +38,6 @@ | ||||||
| #include <linux/slab.h> | #include <linux/slab.h> | ||||||
| #include <linux/compat.h> | #include <linux/compat.h> | ||||||
| #include <linux/freezer.h> | #include <linux/freezer.h> | ||||||
| #include <linux/crc32.h> |  | ||||||
| 
 | 
 | ||||||
| #include <asm/uaccess.h> | #include <asm/uaccess.h> | ||||||
| 
 | 
 | ||||||
|  | @ -1190,7 +1189,7 @@ u32 _nfs_display_fhandle_hash(const struct nfs_fh *fh) | ||||||
| { | { | ||||||
| 	/* wireshark uses 32-bit AUTODIN crc and does a bitwise
 | 	/* wireshark uses 32-bit AUTODIN crc and does a bitwise
 | ||||||
| 	 * not on the result */ | 	 * not on the result */ | ||||||
| 	return ~crc32(0xFFFFFFFF, &fh->data[0], fh->size); | 	return nfs_fhandle_hash(fh); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /*
 | /*
 | ||||||
|  |  | ||||||
|  | @ -5,6 +5,7 @@ | ||||||
| #include "nfs4_fs.h" | #include "nfs4_fs.h" | ||||||
| #include <linux/mount.h> | #include <linux/mount.h> | ||||||
| #include <linux/security.h> | #include <linux/security.h> | ||||||
|  | #include <linux/crc32.h> | ||||||
| 
 | 
 | ||||||
| #define NFS_MS_MASK (MS_RDONLY|MS_NOSUID|MS_NODEV|MS_NOEXEC|MS_SYNCHRONOUS) | #define NFS_MS_MASK (MS_RDONLY|MS_NOSUID|MS_NODEV|MS_NOEXEC|MS_SYNCHRONOUS) | ||||||
| 
 | 
 | ||||||
|  | @ -574,3 +575,22 @@ u64 nfs_timespec_to_change_attr(const struct timespec *ts) | ||||||
| { | { | ||||||
| 	return ((u64)ts->tv_sec << 30) + ts->tv_nsec; | 	return ((u64)ts->tv_sec << 30) + ts->tv_nsec; | ||||||
| } | } | ||||||
|  | 
 | ||||||
|  | #ifdef CONFIG_CRC32 | ||||||
|  | /**
 | ||||||
|  |  * nfs_fhandle_hash - calculate the crc32 hash for the filehandle | ||||||
|  |  * @fh - pointer to filehandle | ||||||
|  |  * | ||||||
|  |  * returns a crc32 hash for the filehandle that is compatible with | ||||||
|  |  * the one displayed by "wireshark". | ||||||
|  |  */ | ||||||
|  | static inline u32 nfs_fhandle_hash(const struct nfs_fh *fh) | ||||||
|  | { | ||||||
|  | 	return ~crc32_le(0xFFFFFFFF, &fh->data[0], fh->size); | ||||||
|  | } | ||||||
|  | #else | ||||||
|  | static inline u32 nfs_fhandle_hash(const struct nfs_fh *fh) | ||||||
|  | { | ||||||
|  | 	return 0; | ||||||
|  | } | ||||||
|  | #endif | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue
	
	 Trond Myklebust
						Trond Myklebust