diff options
Diffstat (limited to 'fs/lockd/svcsubs.c')
-rw-r--r-- | fs/lockd/svcsubs.c | 43 |
1 files changed, 34 insertions, 9 deletions
diff --git a/fs/lockd/svcsubs.c b/fs/lockd/svcsubs.c index de7536358c7c..62f4a385177f 100644 --- a/fs/lockd/svcsubs.c +++ b/fs/lockd/svcsubs.c | |||
@@ -30,6 +30,36 @@ | |||
30 | static struct nlm_file * nlm_files[FILE_NRHASH]; | 30 | static struct nlm_file * nlm_files[FILE_NRHASH]; |
31 | static DECLARE_MUTEX(nlm_file_sema); | 31 | static DECLARE_MUTEX(nlm_file_sema); |
32 | 32 | ||
33 | #ifdef NFSD_DEBUG | ||
34 | static inline void nlm_debug_print_fh(char *msg, struct nfs_fh *f) | ||
35 | { | ||
36 | u32 *fhp = (u32*)f->data; | ||
37 | |||
38 | /* print the first 32 bytes of the fh */ | ||
39 | dprintk("lockd: %s (%08x %08x %08x %08x %08x %08x %08x %08x)\n", | ||
40 | msg, fhp[0], fhp[1], fhp[2], fhp[3], | ||
41 | fhp[4], fhp[5], fhp[6], fhp[7]); | ||
42 | } | ||
43 | |||
44 | static inline void nlm_debug_print_file(char *msg, struct nlm_file *file) | ||
45 | { | ||
46 | struct inode *inode = file->f_file->f_dentry->d_inode; | ||
47 | |||
48 | dprintk("lockd: %s %s/%ld\n", | ||
49 | msg, inode->i_sb->s_id, inode->i_ino); | ||
50 | } | ||
51 | #else | ||
52 | static inline void nlm_debug_print_fh(char *msg, struct nfs_fh *f) | ||
53 | { | ||
54 | return; | ||
55 | } | ||
56 | |||
57 | static inline void nlm_debug_print_file(char *msg, struct nlm_file *file) | ||
58 | { | ||
59 | return; | ||
60 | } | ||
61 | #endif | ||
62 | |||
33 | static inline unsigned int file_hash(struct nfs_fh *f) | 63 | static inline unsigned int file_hash(struct nfs_fh *f) |
34 | { | 64 | { |
35 | unsigned int tmp=0; | 65 | unsigned int tmp=0; |
@@ -55,11 +85,8 @@ nlm_lookup_file(struct svc_rqst *rqstp, struct nlm_file **result, | |||
55 | struct nlm_file *file; | 85 | struct nlm_file *file; |
56 | unsigned int hash; | 86 | unsigned int hash; |
57 | u32 nfserr; | 87 | u32 nfserr; |
58 | u32 *fhp = (u32*)f->data; | ||
59 | |||
60 | dprintk("lockd: nlm_file_lookup(%08x %08x %08x %08x %08x %08x)\n", | ||
61 | fhp[0], fhp[1], fhp[2], fhp[3], fhp[4], fhp[5]); | ||
62 | 88 | ||
89 | nlm_debug_print_fh("nlm_file_lookup", f); | ||
63 | 90 | ||
64 | hash = file_hash(f); | 91 | hash = file_hash(f); |
65 | 92 | ||
@@ -70,8 +97,7 @@ nlm_lookup_file(struct svc_rqst *rqstp, struct nlm_file **result, | |||
70 | if (!nfs_compare_fh(&file->f_handle, f)) | 97 | if (!nfs_compare_fh(&file->f_handle, f)) |
71 | goto found; | 98 | goto found; |
72 | 99 | ||
73 | dprintk("lockd: creating file for (%08x %08x %08x %08x %08x %08x)\n", | 100 | nlm_debug_print_fh("creating file for", f); |
74 | fhp[0], fhp[1], fhp[2], fhp[3], fhp[4], fhp[5]); | ||
75 | 101 | ||
76 | nfserr = nlm_lck_denied_nolocks; | 102 | nfserr = nlm_lck_denied_nolocks; |
77 | file = (struct nlm_file *) kmalloc(sizeof(*file), GFP_KERNEL); | 103 | file = (struct nlm_file *) kmalloc(sizeof(*file), GFP_KERNEL); |
@@ -124,11 +150,10 @@ out_free: | |||
124 | static inline void | 150 | static inline void |
125 | nlm_delete_file(struct nlm_file *file) | 151 | nlm_delete_file(struct nlm_file *file) |
126 | { | 152 | { |
127 | struct inode *inode = file->f_file->f_dentry->d_inode; | ||
128 | struct nlm_file **fp, *f; | 153 | struct nlm_file **fp, *f; |
129 | 154 | ||
130 | dprintk("lockd: closing file %s/%ld\n", | 155 | nlm_debug_print_file("closing file", file); |
131 | inode->i_sb->s_id, inode->i_ino); | 156 | |
132 | fp = nlm_files + file->f_hash; | 157 | fp = nlm_files + file->f_hash; |
133 | while ((f = *fp) != NULL) { | 158 | while ((f = *fp) != NULL) { |
134 | if (f == file) { | 159 | if (f == file) { |