diff options
Diffstat (limited to 'fs/cifs/cifsfs.c')
-rw-r--r-- | fs/cifs/cifsfs.c | 163 |
1 files changed, 15 insertions, 148 deletions
diff --git a/fs/cifs/cifsfs.c b/fs/cifs/cifsfs.c index ad235d604a0b..78c02eb4cb1f 100644 --- a/fs/cifs/cifsfs.c +++ b/fs/cifs/cifsfs.c | |||
@@ -49,10 +49,6 @@ | |||
49 | #include "cifs_spnego.h" | 49 | #include "cifs_spnego.h" |
50 | #define CIFS_MAGIC_NUMBER 0xFF534D42 /* the first four bytes of SMB PDUs */ | 50 | #define CIFS_MAGIC_NUMBER 0xFF534D42 /* the first four bytes of SMB PDUs */ |
51 | 51 | ||
52 | #ifdef CONFIG_CIFS_QUOTA | ||
53 | static const struct quotactl_ops cifs_quotactl_ops; | ||
54 | #endif /* QUOTA */ | ||
55 | |||
56 | int cifsFYI = 0; | 52 | int cifsFYI = 0; |
57 | int cifsERROR = 1; | 53 | int cifsERROR = 1; |
58 | int traceSMB = 0; | 54 | int traceSMB = 0; |
@@ -61,7 +57,7 @@ unsigned int experimEnabled = 0; | |||
61 | unsigned int linuxExtEnabled = 1; | 57 | unsigned int linuxExtEnabled = 1; |
62 | unsigned int lookupCacheEnabled = 1; | 58 | unsigned int lookupCacheEnabled = 1; |
63 | unsigned int multiuser_mount = 0; | 59 | unsigned int multiuser_mount = 0; |
64 | unsigned int extended_security = CIFSSEC_DEF; | 60 | unsigned int global_secflags = CIFSSEC_DEF; |
65 | /* unsigned int ntlmv2_support = 0; */ | 61 | /* unsigned int ntlmv2_support = 0; */ |
66 | unsigned int sign_CIFS_PDUs = 1; | 62 | unsigned int sign_CIFS_PDUs = 1; |
67 | static const struct super_operations cifs_super_ops; | 63 | static const struct super_operations cifs_super_ops; |
@@ -86,8 +82,6 @@ extern mempool_t *cifs_sm_req_poolp; | |||
86 | extern mempool_t *cifs_req_poolp; | 82 | extern mempool_t *cifs_req_poolp; |
87 | extern mempool_t *cifs_mid_poolp; | 83 | extern mempool_t *cifs_mid_poolp; |
88 | 84 | ||
89 | extern struct kmem_cache *cifs_oplock_cachep; | ||
90 | |||
91 | static int | 85 | static int |
92 | cifs_read_super(struct super_block *sb, void *data, | 86 | cifs_read_super(struct super_block *sb, void *data, |
93 | const char *devname, int silent) | 87 | const char *devname, int silent) |
@@ -135,8 +129,7 @@ cifs_read_super(struct super_block *sb, void *data, | |||
135 | 129 | ||
136 | if (rc) { | 130 | if (rc) { |
137 | if (!silent) | 131 | if (!silent) |
138 | cERROR(1, | 132 | cERROR(1, "cifs_mount failed w/return code = %d", rc); |
139 | ("cifs_mount failed w/return code = %d", rc)); | ||
140 | goto out_mount_failed; | 133 | goto out_mount_failed; |
141 | } | 134 | } |
142 | 135 | ||
@@ -146,9 +139,6 @@ cifs_read_super(struct super_block *sb, void *data, | |||
146 | /* if (cifs_sb->tcon->ses->server->maxBuf > MAX_CIFS_HDR_SIZE + 512) | 139 | /* if (cifs_sb->tcon->ses->server->maxBuf > MAX_CIFS_HDR_SIZE + 512) |
147 | sb->s_blocksize = | 140 | sb->s_blocksize = |
148 | cifs_sb->tcon->ses->server->maxBuf - MAX_CIFS_HDR_SIZE; */ | 141 | cifs_sb->tcon->ses->server->maxBuf - MAX_CIFS_HDR_SIZE; */ |
149 | #ifdef CONFIG_CIFS_QUOTA | ||
150 | sb->s_qcop = &cifs_quotactl_ops; | ||
151 | #endif | ||
152 | sb->s_blocksize = CIFS_MAX_MSGSIZE; | 142 | sb->s_blocksize = CIFS_MAX_MSGSIZE; |
153 | sb->s_blocksize_bits = 14; /* default 2**14 = CIFS_MAX_MSGSIZE */ | 143 | sb->s_blocksize_bits = 14; /* default 2**14 = CIFS_MAX_MSGSIZE */ |
154 | inode = cifs_root_iget(sb, ROOT_I); | 144 | inode = cifs_root_iget(sb, ROOT_I); |
@@ -168,7 +158,7 @@ cifs_read_super(struct super_block *sb, void *data, | |||
168 | 158 | ||
169 | #ifdef CONFIG_CIFS_EXPERIMENTAL | 159 | #ifdef CONFIG_CIFS_EXPERIMENTAL |
170 | if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_SERVER_INUM) { | 160 | if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_SERVER_INUM) { |
171 | cFYI(1, ("export ops supported")); | 161 | cFYI(1, "export ops supported"); |
172 | sb->s_export_op = &cifs_export_ops; | 162 | sb->s_export_op = &cifs_export_ops; |
173 | } | 163 | } |
174 | #endif /* EXPERIMENTAL */ | 164 | #endif /* EXPERIMENTAL */ |
@@ -176,7 +166,7 @@ cifs_read_super(struct super_block *sb, void *data, | |||
176 | return 0; | 166 | return 0; |
177 | 167 | ||
178 | out_no_root: | 168 | out_no_root: |
179 | cERROR(1, ("cifs_read_super: get root inode failed")); | 169 | cERROR(1, "cifs_read_super: get root inode failed"); |
180 | if (inode) | 170 | if (inode) |
181 | iput(inode); | 171 | iput(inode); |
182 | 172 | ||
@@ -203,10 +193,10 @@ cifs_put_super(struct super_block *sb) | |||
203 | int rc = 0; | 193 | int rc = 0; |
204 | struct cifs_sb_info *cifs_sb; | 194 | struct cifs_sb_info *cifs_sb; |
205 | 195 | ||
206 | cFYI(1, ("In cifs_put_super")); | 196 | cFYI(1, "In cifs_put_super"); |
207 | cifs_sb = CIFS_SB(sb); | 197 | cifs_sb = CIFS_SB(sb); |
208 | if (cifs_sb == NULL) { | 198 | if (cifs_sb == NULL) { |
209 | cFYI(1, ("Empty cifs superblock info passed to unmount")); | 199 | cFYI(1, "Empty cifs superblock info passed to unmount"); |
210 | return; | 200 | return; |
211 | } | 201 | } |
212 | 202 | ||
@@ -214,7 +204,7 @@ cifs_put_super(struct super_block *sb) | |||
214 | 204 | ||
215 | rc = cifs_umount(sb, cifs_sb); | 205 | rc = cifs_umount(sb, cifs_sb); |
216 | if (rc) | 206 | if (rc) |
217 | cERROR(1, ("cifs_umount failed with return code %d", rc)); | 207 | cERROR(1, "cifs_umount failed with return code %d", rc); |
218 | #ifdef CONFIG_CIFS_DFS_UPCALL | 208 | #ifdef CONFIG_CIFS_DFS_UPCALL |
219 | if (cifs_sb->mountdata) { | 209 | if (cifs_sb->mountdata) { |
220 | kfree(cifs_sb->mountdata); | 210 | kfree(cifs_sb->mountdata); |
@@ -300,7 +290,6 @@ static int cifs_permission(struct inode *inode, int mask) | |||
300 | static struct kmem_cache *cifs_inode_cachep; | 290 | static struct kmem_cache *cifs_inode_cachep; |
301 | static struct kmem_cache *cifs_req_cachep; | 291 | static struct kmem_cache *cifs_req_cachep; |
302 | static struct kmem_cache *cifs_mid_cachep; | 292 | static struct kmem_cache *cifs_mid_cachep; |
303 | struct kmem_cache *cifs_oplock_cachep; | ||
304 | static struct kmem_cache *cifs_sm_req_cachep; | 293 | static struct kmem_cache *cifs_sm_req_cachep; |
305 | mempool_t *cifs_sm_req_poolp; | 294 | mempool_t *cifs_sm_req_poolp; |
306 | mempool_t *cifs_req_poolp; | 295 | mempool_t *cifs_req_poolp; |
@@ -432,106 +421,6 @@ cifs_show_options(struct seq_file *s, struct vfsmount *m) | |||
432 | return 0; | 421 | return 0; |
433 | } | 422 | } |
434 | 423 | ||
435 | #ifdef CONFIG_CIFS_QUOTA | ||
436 | int cifs_xquota_set(struct super_block *sb, int quota_type, qid_t qid, | ||
437 | struct fs_disk_quota *pdquota) | ||
438 | { | ||
439 | int xid; | ||
440 | int rc = 0; | ||
441 | struct cifs_sb_info *cifs_sb = CIFS_SB(sb); | ||
442 | struct cifsTconInfo *pTcon; | ||
443 | |||
444 | if (cifs_sb) | ||
445 | pTcon = cifs_sb->tcon; | ||
446 | else | ||
447 | return -EIO; | ||
448 | |||
449 | |||
450 | xid = GetXid(); | ||
451 | if (pTcon) { | ||
452 | cFYI(1, ("set type: 0x%x id: %d", quota_type, qid)); | ||
453 | } else | ||
454 | rc = -EIO; | ||
455 | |||
456 | FreeXid(xid); | ||
457 | return rc; | ||
458 | } | ||
459 | |||
460 | int cifs_xquota_get(struct super_block *sb, int quota_type, qid_t qid, | ||
461 | struct fs_disk_quota *pdquota) | ||
462 | { | ||
463 | int xid; | ||
464 | int rc = 0; | ||
465 | struct cifs_sb_info *cifs_sb = CIFS_SB(sb); | ||
466 | struct cifsTconInfo *pTcon; | ||
467 | |||
468 | if (cifs_sb) | ||
469 | pTcon = cifs_sb->tcon; | ||
470 | else | ||
471 | return -EIO; | ||
472 | |||
473 | xid = GetXid(); | ||
474 | if (pTcon) { | ||
475 | cFYI(1, ("set type: 0x%x id: %d", quota_type, qid)); | ||
476 | } else | ||
477 | rc = -EIO; | ||
478 | |||
479 | FreeXid(xid); | ||
480 | return rc; | ||
481 | } | ||
482 | |||
483 | int cifs_xstate_set(struct super_block *sb, unsigned int flags, int operation) | ||
484 | { | ||
485 | int xid; | ||
486 | int rc = 0; | ||
487 | struct cifs_sb_info *cifs_sb = CIFS_SB(sb); | ||
488 | struct cifsTconInfo *pTcon; | ||
489 | |||
490 | if (cifs_sb) | ||
491 | pTcon = cifs_sb->tcon; | ||
492 | else | ||
493 | return -EIO; | ||
494 | |||
495 | xid = GetXid(); | ||
496 | if (pTcon) { | ||
497 | cFYI(1, ("flags: 0x%x operation: 0x%x", flags, operation)); | ||
498 | } else | ||
499 | rc = -EIO; | ||
500 | |||
501 | FreeXid(xid); | ||
502 | return rc; | ||
503 | } | ||
504 | |||
505 | int cifs_xstate_get(struct super_block *sb, struct fs_quota_stat *qstats) | ||
506 | { | ||
507 | int xid; | ||
508 | int rc = 0; | ||
509 | struct cifs_sb_info *cifs_sb = CIFS_SB(sb); | ||
510 | struct cifsTconInfo *pTcon; | ||
511 | |||
512 | if (cifs_sb) | ||
513 | pTcon = cifs_sb->tcon; | ||
514 | else | ||
515 | return -EIO; | ||
516 | |||
517 | xid = GetXid(); | ||
518 | if (pTcon) { | ||
519 | cFYI(1, ("pqstats %p", qstats)); | ||
520 | } else | ||
521 | rc = -EIO; | ||
522 | |||
523 | FreeXid(xid); | ||
524 | return rc; | ||
525 | } | ||
526 | |||
527 | static const struct quotactl_ops cifs_quotactl_ops = { | ||
528 | .set_xquota = cifs_xquota_set, | ||
529 | .get_xquota = cifs_xquota_get, | ||
530 | .set_xstate = cifs_xstate_set, | ||
531 | .get_xstate = cifs_xstate_get, | ||
532 | }; | ||
533 | #endif | ||
534 | |||
535 | static void cifs_umount_begin(struct super_block *sb) | 424 | static void cifs_umount_begin(struct super_block *sb) |
536 | { | 425 | { |
537 | struct cifs_sb_info *cifs_sb = CIFS_SB(sb); | 426 | struct cifs_sb_info *cifs_sb = CIFS_SB(sb); |
@@ -558,7 +447,7 @@ static void cifs_umount_begin(struct super_block *sb) | |||
558 | /* cancel_brl_requests(tcon); */ /* BB mark all brl mids as exiting */ | 447 | /* cancel_brl_requests(tcon); */ /* BB mark all brl mids as exiting */ |
559 | /* cancel_notify_requests(tcon); */ | 448 | /* cancel_notify_requests(tcon); */ |
560 | if (tcon->ses && tcon->ses->server) { | 449 | if (tcon->ses && tcon->ses->server) { |
561 | cFYI(1, ("wake up tasks now - umount begin not complete")); | 450 | cFYI(1, "wake up tasks now - umount begin not complete"); |
562 | wake_up_all(&tcon->ses->server->request_q); | 451 | wake_up_all(&tcon->ses->server->request_q); |
563 | wake_up_all(&tcon->ses->server->response_q); | 452 | wake_up_all(&tcon->ses->server->response_q); |
564 | msleep(1); /* yield */ | 453 | msleep(1); /* yield */ |
@@ -609,7 +498,7 @@ cifs_get_sb(struct file_system_type *fs_type, | |||
609 | int rc; | 498 | int rc; |
610 | struct super_block *sb = sget(fs_type, NULL, set_anon_super, NULL); | 499 | struct super_block *sb = sget(fs_type, NULL, set_anon_super, NULL); |
611 | 500 | ||
612 | cFYI(1, ("Devname: %s flags: %d ", dev_name, flags)); | 501 | cFYI(1, "Devname: %s flags: %d ", dev_name, flags); |
613 | 502 | ||
614 | if (IS_ERR(sb)) | 503 | if (IS_ERR(sb)) |
615 | return PTR_ERR(sb); | 504 | return PTR_ERR(sb); |
@@ -656,7 +545,6 @@ static loff_t cifs_llseek(struct file *file, loff_t offset, int origin) | |||
656 | return generic_file_llseek_unlocked(file, offset, origin); | 545 | return generic_file_llseek_unlocked(file, offset, origin); |
657 | } | 546 | } |
658 | 547 | ||
659 | #ifdef CONFIG_CIFS_EXPERIMENTAL | ||
660 | static int cifs_setlease(struct file *file, long arg, struct file_lock **lease) | 548 | static int cifs_setlease(struct file *file, long arg, struct file_lock **lease) |
661 | { | 549 | { |
662 | /* note that this is called by vfs setlease with the BKL held | 550 | /* note that this is called by vfs setlease with the BKL held |
@@ -685,7 +573,6 @@ static int cifs_setlease(struct file *file, long arg, struct file_lock **lease) | |||
685 | else | 573 | else |
686 | return -EAGAIN; | 574 | return -EAGAIN; |
687 | } | 575 | } |
688 | #endif | ||
689 | 576 | ||
690 | struct file_system_type cifs_fs_type = { | 577 | struct file_system_type cifs_fs_type = { |
691 | .owner = THIS_MODULE, | 578 | .owner = THIS_MODULE, |
@@ -762,10 +649,7 @@ const struct file_operations cifs_file_ops = { | |||
762 | #ifdef CONFIG_CIFS_POSIX | 649 | #ifdef CONFIG_CIFS_POSIX |
763 | .unlocked_ioctl = cifs_ioctl, | 650 | .unlocked_ioctl = cifs_ioctl, |
764 | #endif /* CONFIG_CIFS_POSIX */ | 651 | #endif /* CONFIG_CIFS_POSIX */ |
765 | |||
766 | #ifdef CONFIG_CIFS_EXPERIMENTAL | ||
767 | .setlease = cifs_setlease, | 652 | .setlease = cifs_setlease, |
768 | #endif /* CONFIG_CIFS_EXPERIMENTAL */ | ||
769 | }; | 653 | }; |
770 | 654 | ||
771 | const struct file_operations cifs_file_direct_ops = { | 655 | const struct file_operations cifs_file_direct_ops = { |
@@ -784,9 +668,7 @@ const struct file_operations cifs_file_direct_ops = { | |||
784 | .unlocked_ioctl = cifs_ioctl, | 668 | .unlocked_ioctl = cifs_ioctl, |
785 | #endif /* CONFIG_CIFS_POSIX */ | 669 | #endif /* CONFIG_CIFS_POSIX */ |
786 | .llseek = cifs_llseek, | 670 | .llseek = cifs_llseek, |
787 | #ifdef CONFIG_CIFS_EXPERIMENTAL | ||
788 | .setlease = cifs_setlease, | 671 | .setlease = cifs_setlease, |
789 | #endif /* CONFIG_CIFS_EXPERIMENTAL */ | ||
790 | }; | 672 | }; |
791 | const struct file_operations cifs_file_nobrl_ops = { | 673 | const struct file_operations cifs_file_nobrl_ops = { |
792 | .read = do_sync_read, | 674 | .read = do_sync_read, |
@@ -803,10 +685,7 @@ const struct file_operations cifs_file_nobrl_ops = { | |||
803 | #ifdef CONFIG_CIFS_POSIX | 685 | #ifdef CONFIG_CIFS_POSIX |
804 | .unlocked_ioctl = cifs_ioctl, | 686 | .unlocked_ioctl = cifs_ioctl, |
805 | #endif /* CONFIG_CIFS_POSIX */ | 687 | #endif /* CONFIG_CIFS_POSIX */ |
806 | |||
807 | #ifdef CONFIG_CIFS_EXPERIMENTAL | ||
808 | .setlease = cifs_setlease, | 688 | .setlease = cifs_setlease, |
809 | #endif /* CONFIG_CIFS_EXPERIMENTAL */ | ||
810 | }; | 689 | }; |
811 | 690 | ||
812 | const struct file_operations cifs_file_direct_nobrl_ops = { | 691 | const struct file_operations cifs_file_direct_nobrl_ops = { |
@@ -824,9 +703,7 @@ const struct file_operations cifs_file_direct_nobrl_ops = { | |||
824 | .unlocked_ioctl = cifs_ioctl, | 703 | .unlocked_ioctl = cifs_ioctl, |
825 | #endif /* CONFIG_CIFS_POSIX */ | 704 | #endif /* CONFIG_CIFS_POSIX */ |
826 | .llseek = cifs_llseek, | 705 | .llseek = cifs_llseek, |
827 | #ifdef CONFIG_CIFS_EXPERIMENTAL | ||
828 | .setlease = cifs_setlease, | 706 | .setlease = cifs_setlease, |
829 | #endif /* CONFIG_CIFS_EXPERIMENTAL */ | ||
830 | }; | 707 | }; |
831 | 708 | ||
832 | const struct file_operations cifs_dir_ops = { | 709 | const struct file_operations cifs_dir_ops = { |
@@ -878,7 +755,7 @@ cifs_init_request_bufs(void) | |||
878 | } else { | 755 | } else { |
879 | CIFSMaxBufSize &= 0x1FE00; /* Round size to even 512 byte mult*/ | 756 | CIFSMaxBufSize &= 0x1FE00; /* Round size to even 512 byte mult*/ |
880 | } | 757 | } |
881 | /* cERROR(1,("CIFSMaxBufSize %d 0x%x",CIFSMaxBufSize,CIFSMaxBufSize)); */ | 758 | /* cERROR(1, "CIFSMaxBufSize %d 0x%x",CIFSMaxBufSize,CIFSMaxBufSize); */ |
882 | cifs_req_cachep = kmem_cache_create("cifs_request", | 759 | cifs_req_cachep = kmem_cache_create("cifs_request", |
883 | CIFSMaxBufSize + | 760 | CIFSMaxBufSize + |
884 | MAX_CIFS_HDR_SIZE, 0, | 761 | MAX_CIFS_HDR_SIZE, 0, |
@@ -890,7 +767,7 @@ cifs_init_request_bufs(void) | |||
890 | cifs_min_rcv = 1; | 767 | cifs_min_rcv = 1; |
891 | else if (cifs_min_rcv > 64) { | 768 | else if (cifs_min_rcv > 64) { |
892 | cifs_min_rcv = 64; | 769 | cifs_min_rcv = 64; |
893 | cERROR(1, ("cifs_min_rcv set to maximum (64)")); | 770 | cERROR(1, "cifs_min_rcv set to maximum (64)"); |
894 | } | 771 | } |
895 | 772 | ||
896 | cifs_req_poolp = mempool_create_slab_pool(cifs_min_rcv, | 773 | cifs_req_poolp = mempool_create_slab_pool(cifs_min_rcv, |
@@ -921,7 +798,7 @@ cifs_init_request_bufs(void) | |||
921 | cifs_min_small = 2; | 798 | cifs_min_small = 2; |
922 | else if (cifs_min_small > 256) { | 799 | else if (cifs_min_small > 256) { |
923 | cifs_min_small = 256; | 800 | cifs_min_small = 256; |
924 | cFYI(1, ("cifs_min_small set to maximum (256)")); | 801 | cFYI(1, "cifs_min_small set to maximum (256)"); |
925 | } | 802 | } |
926 | 803 | ||
927 | cifs_sm_req_poolp = mempool_create_slab_pool(cifs_min_small, | 804 | cifs_sm_req_poolp = mempool_create_slab_pool(cifs_min_small, |
@@ -962,15 +839,6 @@ cifs_init_mids(void) | |||
962 | return -ENOMEM; | 839 | return -ENOMEM; |
963 | } | 840 | } |
964 | 841 | ||
965 | cifs_oplock_cachep = kmem_cache_create("cifs_oplock_structs", | ||
966 | sizeof(struct oplock_q_entry), 0, | ||
967 | SLAB_HWCACHE_ALIGN, NULL); | ||
968 | if (cifs_oplock_cachep == NULL) { | ||
969 | mempool_destroy(cifs_mid_poolp); | ||
970 | kmem_cache_destroy(cifs_mid_cachep); | ||
971 | return -ENOMEM; | ||
972 | } | ||
973 | |||
974 | return 0; | 842 | return 0; |
975 | } | 843 | } |
976 | 844 | ||
@@ -979,7 +847,6 @@ cifs_destroy_mids(void) | |||
979 | { | 847 | { |
980 | mempool_destroy(cifs_mid_poolp); | 848 | mempool_destroy(cifs_mid_poolp); |
981 | kmem_cache_destroy(cifs_mid_cachep); | 849 | kmem_cache_destroy(cifs_mid_cachep); |
982 | kmem_cache_destroy(cifs_oplock_cachep); | ||
983 | } | 850 | } |
984 | 851 | ||
985 | static int __init | 852 | static int __init |
@@ -1019,10 +886,10 @@ init_cifs(void) | |||
1019 | 886 | ||
1020 | if (cifs_max_pending < 2) { | 887 | if (cifs_max_pending < 2) { |
1021 | cifs_max_pending = 2; | 888 | cifs_max_pending = 2; |
1022 | cFYI(1, ("cifs_max_pending set to min of 2")); | 889 | cFYI(1, "cifs_max_pending set to min of 2"); |
1023 | } else if (cifs_max_pending > 256) { | 890 | } else if (cifs_max_pending > 256) { |
1024 | cifs_max_pending = 256; | 891 | cifs_max_pending = 256; |
1025 | cFYI(1, ("cifs_max_pending set to max of 256")); | 892 | cFYI(1, "cifs_max_pending set to max of 256"); |
1026 | } | 893 | } |
1027 | 894 | ||
1028 | rc = cifs_init_inodecache(); | 895 | rc = cifs_init_inodecache(); |
@@ -1080,7 +947,7 @@ init_cifs(void) | |||
1080 | static void __exit | 947 | static void __exit |
1081 | exit_cifs(void) | 948 | exit_cifs(void) |
1082 | { | 949 | { |
1083 | cFYI(DBG2, ("exit_cifs")); | 950 | cFYI(DBG2, "exit_cifs"); |
1084 | cifs_proc_clean(); | 951 | cifs_proc_clean(); |
1085 | #ifdef CONFIG_CIFS_DFS_UPCALL | 952 | #ifdef CONFIG_CIFS_DFS_UPCALL |
1086 | cifs_dfs_release_automount_timer(); | 953 | cifs_dfs_release_automount_timer(); |