diff options
| author | Anton Altaparmakov <aia21@cantab.net> | 2006-01-19 11:39:33 -0500 |
|---|---|---|
| committer | Anton Altaparmakov <aia21@cantab.net> | 2006-01-19 11:39:33 -0500 |
| commit | 944d79559d154c12becde0dab327016cf438f46c (patch) | |
| tree | 50c101806f4d3b6585222dda060559eb4f3e005a /fs/smbfs | |
| parent | d087e4bdd24ebe3ae3d0b265b6573ec901af4b4b (diff) | |
| parent | 0f36b018b2e314d45af86449f1a97facb1fbe300 (diff) | |
Merge branch 'master' of /usr/src/ntfs-2.6/
Diffstat (limited to 'fs/smbfs')
| -rw-r--r-- | fs/smbfs/Makefile | 1 | ||||
| -rw-r--r-- | fs/smbfs/cache.c | 4 | ||||
| -rw-r--r-- | fs/smbfs/file.c | 7 | ||||
| -rw-r--r-- | fs/smbfs/inode.c | 35 | ||||
| -rw-r--r-- | fs/smbfs/proc.c | 3 | ||||
| -rw-r--r-- | fs/smbfs/request.c | 13 |
6 files changed, 20 insertions, 43 deletions
diff --git a/fs/smbfs/Makefile b/fs/smbfs/Makefile index 93246b7dd6fb..6673ee82cb4c 100644 --- a/fs/smbfs/Makefile +++ b/fs/smbfs/Makefile | |||
| @@ -13,7 +13,6 @@ smbfs-objs := proc.o dir.o cache.o sock.o inode.o file.o ioctl.o getopt.o \ | |||
| 13 | EXTRA_CFLAGS += -DSMBFS_PARANOIA | 13 | EXTRA_CFLAGS += -DSMBFS_PARANOIA |
| 14 | #EXTRA_CFLAGS += -DSMBFS_DEBUG | 14 | #EXTRA_CFLAGS += -DSMBFS_DEBUG |
| 15 | #EXTRA_CFLAGS += -DSMBFS_DEBUG_VERBOSE | 15 | #EXTRA_CFLAGS += -DSMBFS_DEBUG_VERBOSE |
| 16 | #EXTRA_CFLAGS += -DDEBUG_SMB_MALLOC | ||
| 17 | #EXTRA_CFLAGS += -DDEBUG_SMB_TIMESTAMP | 16 | #EXTRA_CFLAGS += -DDEBUG_SMB_TIMESTAMP |
| 18 | #EXTRA_CFLAGS += -Werror | 17 | #EXTRA_CFLAGS += -Werror |
| 19 | 18 | ||
diff --git a/fs/smbfs/cache.c b/fs/smbfs/cache.c index f3e6b81288ab..74b86d9725a6 100644 --- a/fs/smbfs/cache.c +++ b/fs/smbfs/cache.c | |||
| @@ -66,7 +66,7 @@ smb_invalidate_dircache_entries(struct dentry *parent) | |||
| 66 | spin_lock(&dcache_lock); | 66 | spin_lock(&dcache_lock); |
| 67 | next = parent->d_subdirs.next; | 67 | next = parent->d_subdirs.next; |
| 68 | while (next != &parent->d_subdirs) { | 68 | while (next != &parent->d_subdirs) { |
| 69 | dentry = list_entry(next, struct dentry, d_child); | 69 | dentry = list_entry(next, struct dentry, d_u.d_child); |
| 70 | dentry->d_fsdata = NULL; | 70 | dentry->d_fsdata = NULL; |
| 71 | smb_age_dentry(server, dentry); | 71 | smb_age_dentry(server, dentry); |
| 72 | next = next->next; | 72 | next = next->next; |
| @@ -100,7 +100,7 @@ smb_dget_fpos(struct dentry *dentry, struct dentry *parent, unsigned long fpos) | |||
| 100 | spin_lock(&dcache_lock); | 100 | spin_lock(&dcache_lock); |
| 101 | next = parent->d_subdirs.next; | 101 | next = parent->d_subdirs.next; |
| 102 | while (next != &parent->d_subdirs) { | 102 | while (next != &parent->d_subdirs) { |
| 103 | dent = list_entry(next, struct dentry, d_child); | 103 | dent = list_entry(next, struct dentry, d_u.d_child); |
| 104 | if ((unsigned long)dent->d_fsdata == fpos) { | 104 | if ((unsigned long)dent->d_fsdata == fpos) { |
| 105 | if (dent->d_inode) | 105 | if (dent->d_inode) |
| 106 | dget_locked(dent); | 106 | dget_locked(dent); |
diff --git a/fs/smbfs/file.c b/fs/smbfs/file.c index b4fcfa8b55a1..7042e62726a4 100644 --- a/fs/smbfs/file.c +++ b/fs/smbfs/file.c | |||
| @@ -209,8 +209,8 @@ smb_updatepage(struct file *file, struct page *page, unsigned long offset, | |||
| 209 | { | 209 | { |
| 210 | struct dentry *dentry = file->f_dentry; | 210 | struct dentry *dentry = file->f_dentry; |
| 211 | 211 | ||
| 212 | DEBUG1("(%s/%s %d@%ld)\n", DENTRY_PATH(dentry), | 212 | DEBUG1("(%s/%s %d@%lld)\n", DENTRY_PATH(dentry), count, |
| 213 | count, (page->index << PAGE_CACHE_SHIFT)+offset); | 213 | ((unsigned long long)page->index << PAGE_CACHE_SHIFT) + offset); |
| 214 | 214 | ||
| 215 | return smb_writepage_sync(dentry->d_inode, page, offset, count); | 215 | return smb_writepage_sync(dentry->d_inode, page, offset, count); |
| 216 | } | 216 | } |
| @@ -374,8 +374,7 @@ smb_file_release(struct inode *inode, struct file * file) | |||
| 374 | /* We must flush any dirty pages now as we won't be able to | 374 | /* We must flush any dirty pages now as we won't be able to |
| 375 | write anything after close. mmap can trigger this. | 375 | write anything after close. mmap can trigger this. |
| 376 | "openers" should perhaps include mmap'ers ... */ | 376 | "openers" should perhaps include mmap'ers ... */ |
| 377 | filemap_fdatawrite(inode->i_mapping); | 377 | filemap_write_and_wait(inode->i_mapping); |
| 378 | filemap_fdatawait(inode->i_mapping); | ||
| 379 | smb_close(inode); | 378 | smb_close(inode); |
| 380 | } | 379 | } |
| 381 | unlock_kernel(); | 380 | unlock_kernel(); |
diff --git a/fs/smbfs/inode.c b/fs/smbfs/inode.c index 10b994428fef..02e3e82d465c 100644 --- a/fs/smbfs/inode.c +++ b/fs/smbfs/inode.c | |||
| @@ -487,11 +487,11 @@ smb_put_super(struct super_block *sb) | |||
| 487 | if (server->conn_pid) | 487 | if (server->conn_pid) |
| 488 | kill_proc(server->conn_pid, SIGTERM, 1); | 488 | kill_proc(server->conn_pid, SIGTERM, 1); |
| 489 | 489 | ||
| 490 | smb_kfree(server->ops); | 490 | kfree(server->ops); |
| 491 | smb_unload_nls(server); | 491 | smb_unload_nls(server); |
| 492 | sb->s_fs_info = NULL; | 492 | sb->s_fs_info = NULL; |
| 493 | smb_unlock_server(server); | 493 | smb_unlock_server(server); |
| 494 | smb_kfree(server); | 494 | kfree(server); |
| 495 | } | 495 | } |
| 496 | 496 | ||
| 497 | static int smb_fill_super(struct super_block *sb, void *raw_data, int silent) | 497 | static int smb_fill_super(struct super_block *sb, void *raw_data, int silent) |
| @@ -519,11 +519,10 @@ static int smb_fill_super(struct super_block *sb, void *raw_data, int silent) | |||
| 519 | sb->s_op = &smb_sops; | 519 | sb->s_op = &smb_sops; |
| 520 | sb->s_time_gran = 100; | 520 | sb->s_time_gran = 100; |
| 521 | 521 | ||
| 522 | server = smb_kmalloc(sizeof(struct smb_sb_info), GFP_KERNEL); | 522 | server = kzalloc(sizeof(struct smb_sb_info), GFP_KERNEL); |
| 523 | if (!server) | 523 | if (!server) |
| 524 | goto out_no_server; | 524 | goto out_no_server; |
| 525 | sb->s_fs_info = server; | 525 | sb->s_fs_info = server; |
| 526 | memset(server, 0, sizeof(struct smb_sb_info)); | ||
| 527 | 526 | ||
| 528 | server->super_block = sb; | 527 | server->super_block = sb; |
| 529 | server->mnt = NULL; | 528 | server->mnt = NULL; |
| @@ -542,8 +541,8 @@ static int smb_fill_super(struct super_block *sb, void *raw_data, int silent) | |||
| 542 | /* FIXME: move these to the smb_sb_info struct */ | 541 | /* FIXME: move these to the smb_sb_info struct */ |
| 543 | VERBOSE("alloc chunk = %d\n", sizeof(struct smb_ops) + | 542 | VERBOSE("alloc chunk = %d\n", sizeof(struct smb_ops) + |
| 544 | sizeof(struct smb_mount_data_kernel)); | 543 | sizeof(struct smb_mount_data_kernel)); |
| 545 | mem = smb_kmalloc(sizeof(struct smb_ops) + | 544 | mem = kmalloc(sizeof(struct smb_ops) + |
| 546 | sizeof(struct smb_mount_data_kernel), GFP_KERNEL); | 545 | sizeof(struct smb_mount_data_kernel), GFP_KERNEL); |
| 547 | if (!mem) | 546 | if (!mem) |
| 548 | goto out_no_mem; | 547 | goto out_no_mem; |
| 549 | 548 | ||
| @@ -621,12 +620,12 @@ out_no_root: | |||
| 621 | out_no_smbiod: | 620 | out_no_smbiod: |
| 622 | smb_unload_nls(server); | 621 | smb_unload_nls(server); |
| 623 | out_bad_option: | 622 | out_bad_option: |
| 624 | smb_kfree(mem); | 623 | kfree(mem); |
| 625 | out_no_mem: | 624 | out_no_mem: |
| 626 | if (!server->mnt) | 625 | if (!server->mnt) |
| 627 | printk(KERN_ERR "smb_fill_super: allocation failure\n"); | 626 | printk(KERN_ERR "smb_fill_super: allocation failure\n"); |
| 628 | sb->s_fs_info = NULL; | 627 | sb->s_fs_info = NULL; |
| 629 | smb_kfree(server); | 628 | kfree(server); |
| 630 | goto out_fail; | 629 | goto out_fail; |
| 631 | out_wrong_data: | 630 | out_wrong_data: |
| 632 | printk(KERN_ERR "smbfs: mount_data version %d is not supported\n", ver); | 631 | printk(KERN_ERR "smbfs: mount_data version %d is not supported\n", ver); |
| @@ -697,8 +696,7 @@ smb_notify_change(struct dentry *dentry, struct iattr *attr) | |||
| 697 | DENTRY_PATH(dentry), | 696 | DENTRY_PATH(dentry), |
| 698 | (long) inode->i_size, (long) attr->ia_size); | 697 | (long) inode->i_size, (long) attr->ia_size); |
| 699 | 698 | ||
| 700 | filemap_fdatawrite(inode->i_mapping); | 699 | filemap_write_and_wait(inode->i_mapping); |
| 701 | filemap_fdatawait(inode->i_mapping); | ||
| 702 | 700 | ||
| 703 | error = smb_open(dentry, O_WRONLY); | 701 | error = smb_open(dentry, O_WRONLY); |
| 704 | if (error) | 702 | if (error) |
| @@ -783,12 +781,6 @@ out: | |||
| 783 | return error; | 781 | return error; |
| 784 | } | 782 | } |
| 785 | 783 | ||
| 786 | #ifdef DEBUG_SMB_MALLOC | ||
| 787 | int smb_malloced; | ||
| 788 | int smb_current_kmalloced; | ||
| 789 | int smb_current_vmalloced; | ||
| 790 | #endif | ||
| 791 | |||
| 792 | static struct super_block *smb_get_sb(struct file_system_type *fs_type, | 784 | static struct super_block *smb_get_sb(struct file_system_type *fs_type, |
| 793 | int flags, const char *dev_name, void *data) | 785 | int flags, const char *dev_name, void *data) |
| 794 | { | 786 | { |
| @@ -808,12 +800,6 @@ static int __init init_smb_fs(void) | |||
| 808 | int err; | 800 | int err; |
| 809 | DEBUG1("registering ...\n"); | 801 | DEBUG1("registering ...\n"); |
| 810 | 802 | ||
| 811 | #ifdef DEBUG_SMB_MALLOC | ||
| 812 | smb_malloced = 0; | ||
| 813 | smb_current_kmalloced = 0; | ||
| 814 | smb_current_vmalloced = 0; | ||
| 815 | #endif | ||
| 816 | |||
| 817 | err = init_inodecache(); | 803 | err = init_inodecache(); |
| 818 | if (err) | 804 | if (err) |
| 819 | goto out_inode; | 805 | goto out_inode; |
| @@ -838,11 +824,6 @@ static void __exit exit_smb_fs(void) | |||
| 838 | unregister_filesystem(&smb_fs_type); | 824 | unregister_filesystem(&smb_fs_type); |
| 839 | smb_destroy_request_cache(); | 825 | smb_destroy_request_cache(); |
| 840 | destroy_inodecache(); | 826 | destroy_inodecache(); |
| 841 | #ifdef DEBUG_SMB_MALLOC | ||
| 842 | printk(KERN_DEBUG "smb_malloced: %d\n", smb_malloced); | ||
| 843 | printk(KERN_DEBUG "smb_current_kmalloced: %d\n",smb_current_kmalloced); | ||
| 844 | printk(KERN_DEBUG "smb_current_vmalloced: %d\n",smb_current_vmalloced); | ||
| 845 | #endif | ||
| 846 | } | 827 | } |
| 847 | 828 | ||
| 848 | module_init(init_smb_fs) | 829 | module_init(init_smb_fs) |
diff --git a/fs/smbfs/proc.c b/fs/smbfs/proc.c index 38ab558835c4..b1b878b81730 100644 --- a/fs/smbfs/proc.c +++ b/fs/smbfs/proc.c | |||
| @@ -8,6 +8,7 @@ | |||
| 8 | */ | 8 | */ |
| 9 | 9 | ||
| 10 | #include <linux/types.h> | 10 | #include <linux/types.h> |
| 11 | #include <linux/capability.h> | ||
| 11 | #include <linux/errno.h> | 12 | #include <linux/errno.h> |
| 12 | #include <linux/slab.h> | 13 | #include <linux/slab.h> |
| 13 | #include <linux/fs.h> | 14 | #include <linux/fs.h> |
| @@ -3113,7 +3114,7 @@ smb_proc_setattr_unix(struct dentry *d, struct iattr *attr, | |||
| 3113 | LSET(data, 32, SMB_TIME_NO_CHANGE); | 3114 | LSET(data, 32, SMB_TIME_NO_CHANGE); |
| 3114 | LSET(data, 40, SMB_UID_NO_CHANGE); | 3115 | LSET(data, 40, SMB_UID_NO_CHANGE); |
| 3115 | LSET(data, 48, SMB_GID_NO_CHANGE); | 3116 | LSET(data, 48, SMB_GID_NO_CHANGE); |
| 3116 | LSET(data, 56, smb_filetype_from_mode(attr->ia_mode)); | 3117 | DSET(data, 56, smb_filetype_from_mode(attr->ia_mode)); |
| 3117 | LSET(data, 60, major); | 3118 | LSET(data, 60, major); |
| 3118 | LSET(data, 68, minor); | 3119 | LSET(data, 68, minor); |
| 3119 | LSET(data, 76, 0); | 3120 | LSET(data, 76, 0); |
diff --git a/fs/smbfs/request.c b/fs/smbfs/request.c index a0f296d9928a..c71c375863cc 100644 --- a/fs/smbfs/request.c +++ b/fs/smbfs/request.c | |||
| @@ -68,7 +68,7 @@ static struct smb_request *smb_do_alloc_request(struct smb_sb_info *server, | |||
| 68 | goto out; | 68 | goto out; |
| 69 | 69 | ||
| 70 | if (bufsize > 0) { | 70 | if (bufsize > 0) { |
| 71 | buf = smb_kmalloc(bufsize, GFP_NOFS); | 71 | buf = kmalloc(bufsize, GFP_NOFS); |
| 72 | if (!buf) { | 72 | if (!buf) { |
| 73 | kmem_cache_free(req_cachep, req); | 73 | kmem_cache_free(req_cachep, req); |
| 74 | return NULL; | 74 | return NULL; |
| @@ -124,9 +124,8 @@ static void smb_free_request(struct smb_request *req) | |||
| 124 | { | 124 | { |
| 125 | atomic_dec(&req->rq_server->nr_requests); | 125 | atomic_dec(&req->rq_server->nr_requests); |
| 126 | if (req->rq_buffer && !(req->rq_flags & SMB_REQ_STATIC)) | 126 | if (req->rq_buffer && !(req->rq_flags & SMB_REQ_STATIC)) |
| 127 | smb_kfree(req->rq_buffer); | 127 | kfree(req->rq_buffer); |
| 128 | if (req->rq_trans2buffer) | 128 | kfree(req->rq_trans2buffer); |
| 129 | smb_kfree(req->rq_trans2buffer); | ||
| 130 | kmem_cache_free(req_cachep, req); | 129 | kmem_cache_free(req_cachep, req); |
| 131 | } | 130 | } |
| 132 | 131 | ||
| @@ -183,8 +182,7 @@ static int smb_setup_request(struct smb_request *req) | |||
| 183 | req->rq_err = 0; | 182 | req->rq_err = 0; |
| 184 | req->rq_errno = 0; | 183 | req->rq_errno = 0; |
| 185 | req->rq_fragment = 0; | 184 | req->rq_fragment = 0; |
| 186 | if (req->rq_trans2buffer) | 185 | kfree(req->rq_trans2buffer); |
| 187 | smb_kfree(req->rq_trans2buffer); | ||
| 188 | 186 | ||
| 189 | return 0; | 187 | return 0; |
| 190 | } | 188 | } |
| @@ -647,10 +645,9 @@ static int smb_recv_trans2(struct smb_sb_info *server, struct smb_request *req) | |||
| 647 | goto out_too_long; | 645 | goto out_too_long; |
| 648 | 646 | ||
| 649 | req->rq_trans2bufsize = buf_len; | 647 | req->rq_trans2bufsize = buf_len; |
| 650 | req->rq_trans2buffer = smb_kmalloc(buf_len, GFP_NOFS); | 648 | req->rq_trans2buffer = kzalloc(buf_len, GFP_NOFS); |
| 651 | if (!req->rq_trans2buffer) | 649 | if (!req->rq_trans2buffer) |
| 652 | goto out_no_mem; | 650 | goto out_no_mem; |
| 653 | memset(req->rq_trans2buffer, 0, buf_len); | ||
| 654 | 651 | ||
| 655 | req->rq_parm = req->rq_trans2buffer; | 652 | req->rq_parm = req->rq_trans2buffer; |
| 656 | req->rq_data = req->rq_trans2buffer + parm_tot; | 653 | req->rq_data = req->rq_trans2buffer + parm_tot; |
