aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2010-08-10 14:26:52 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2010-08-10 14:26:52 -0400
commit5f248c9c251c60af3403902b26e08de43964ea0b (patch)
tree6d3328e72a7e4015a64017eb30be18095c6a3c64 /arch
parentf6cec0ae58c17522a7bc4e2f39dae19f199ab534 (diff)
parentdca332528bc69e05f67161e1ed59929633d5e63d (diff)
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6: (96 commits) no need for list_for_each_entry_safe()/resetting with superblock list Fix sget() race with failing mount vfs: don't hold s_umount over close_bdev_exclusive() call sysv: do not mark superblock dirty on remount sysv: do not mark superblock dirty on mount btrfs: remove junk sb_dirt change BFS: clean up the superblock usage AFFS: wait for sb synchronization when needed AFFS: clean up dirty flag usage cifs: truncate fallout mbcache: fix shrinker function return value mbcache: Remove unused features add f_flags to struct statfs(64) pass a struct path to vfs_statfs update VFS documentation for method changes. All filesystems that need invalidate_inode_buffers() are doing that explicitly convert remaining ->clear_inode() to ->evict_inode() Make ->drop_inode() just return whether inode needs to be dropped fs/inode.c:clear_inode() is gone fs/inode.c:evict() doesn't care about delete vs. non-delete paths now ... Fix up trivial conflicts in fs/nilfs2/super.c
Diffstat (limited to 'arch')
-rw-r--r--arch/alpha/kernel/osf_sys.c8
-rw-r--r--arch/mips/include/asm/statfs.h12
-rw-r--r--arch/parisc/hpux/sys_hpux.c10
-rw-r--r--arch/powerpc/platforms/cell/spufs/inode.c12
-rw-r--r--arch/s390/hypfs/inode.c6
-rw-r--r--arch/s390/include/asm/statfs.h9
-rw-r--r--arch/um/include/shared/os.h3
-rw-r--r--arch/um/kernel/ksyms.c3
-rw-r--r--arch/um/os-Linux/file.c15
-rw-r--r--arch/um/os-Linux/user_syms.c4
10 files changed, 57 insertions, 25 deletions
diff --git a/arch/alpha/kernel/osf_sys.c b/arch/alpha/kernel/osf_sys.c
index de9d39717808..88131c6e42e3 100644
--- a/arch/alpha/kernel/osf_sys.c
+++ b/arch/alpha/kernel/osf_sys.c
@@ -234,11 +234,11 @@ linux_to_osf_statfs(struct kstatfs *linux_stat, struct osf_statfs __user *osf_st
234} 234}
235 235
236static int 236static int
237do_osf_statfs(struct dentry * dentry, struct osf_statfs __user *buffer, 237do_osf_statfs(struct path *path, struct osf_statfs __user *buffer,
238 unsigned long bufsiz) 238 unsigned long bufsiz)
239{ 239{
240 struct kstatfs linux_stat; 240 struct kstatfs linux_stat;
241 int error = vfs_statfs(dentry, &linux_stat); 241 int error = vfs_statfs(path, &linux_stat);
242 if (!error) 242 if (!error)
243 error = linux_to_osf_statfs(&linux_stat, buffer, bufsiz); 243 error = linux_to_osf_statfs(&linux_stat, buffer, bufsiz);
244 return error; 244 return error;
@@ -252,7 +252,7 @@ SYSCALL_DEFINE3(osf_statfs, char __user *, pathname,
252 252
253 retval = user_path(pathname, &path); 253 retval = user_path(pathname, &path);
254 if (!retval) { 254 if (!retval) {
255 retval = do_osf_statfs(path.dentry, buffer, bufsiz); 255 retval = do_osf_statfs(&path buffer, bufsiz);
256 path_put(&path); 256 path_put(&path);
257 } 257 }
258 return retval; 258 return retval;
@@ -267,7 +267,7 @@ SYSCALL_DEFINE3(osf_fstatfs, unsigned long, fd,
267 retval = -EBADF; 267 retval = -EBADF;
268 file = fget(fd); 268 file = fget(fd);
269 if (file) { 269 if (file) {
270 retval = do_osf_statfs(file->f_path.dentry, buffer, bufsiz); 270 retval = do_osf_statfs(&file->f_path, buffer, bufsiz);
271 fput(file); 271 fput(file);
272 } 272 }
273 return retval; 273 return retval;
diff --git a/arch/mips/include/asm/statfs.h b/arch/mips/include/asm/statfs.h
index c3ddf973c1c0..0f805c7a42a5 100644
--- a/arch/mips/include/asm/statfs.h
+++ b/arch/mips/include/asm/statfs.h
@@ -33,7 +33,8 @@ struct statfs {
33 /* Linux specials */ 33 /* Linux specials */
34 __kernel_fsid_t f_fsid; 34 __kernel_fsid_t f_fsid;
35 long f_namelen; 35 long f_namelen;
36 long f_spare[6]; 36 long f_flags;
37 long f_spare[5];
37}; 38};
38 39
39#if (_MIPS_SIM == _MIPS_SIM_ABI32) || (_MIPS_SIM == _MIPS_SIM_NABI32) 40#if (_MIPS_SIM == _MIPS_SIM_ABI32) || (_MIPS_SIM == _MIPS_SIM_NABI32)
@@ -53,7 +54,8 @@ struct statfs64 {
53 __u64 f_bavail; 54 __u64 f_bavail;
54 __kernel_fsid_t f_fsid; 55 __kernel_fsid_t f_fsid;
55 __u32 f_namelen; 56 __u32 f_namelen;
56 __u32 f_spare[6]; 57 __u32 f_flags;
58 __u32 f_spare[5];
57}; 59};
58 60
59#endif /* _MIPS_SIM == _MIPS_SIM_ABI32 */ 61#endif /* _MIPS_SIM == _MIPS_SIM_ABI32 */
@@ -73,7 +75,8 @@ struct statfs64 { /* Same as struct statfs */
73 /* Linux specials */ 75 /* Linux specials */
74 __kernel_fsid_t f_fsid; 76 __kernel_fsid_t f_fsid;
75 long f_namelen; 77 long f_namelen;
76 long f_spare[6]; 78 long f_flags;
79 long f_spare[5];
77}; 80};
78 81
79struct compat_statfs64 { 82struct compat_statfs64 {
@@ -88,7 +91,8 @@ struct compat_statfs64 {
88 __u64 f_bavail; 91 __u64 f_bavail;
89 __kernel_fsid_t f_fsid; 92 __kernel_fsid_t f_fsid;
90 __u32 f_namelen; 93 __u32 f_namelen;
91 __u32 f_spare[6]; 94 __u32 f_flags;
95 __u32 f_spare[5];
92}; 96};
93 97
94#endif /* _MIPS_SIM == _MIPS_SIM_ABI64 */ 98#endif /* _MIPS_SIM == _MIPS_SIM_ABI64 */
diff --git a/arch/parisc/hpux/sys_hpux.c b/arch/parisc/hpux/sys_hpux.c
index 92343bd35fa3..ba430a03bc7a 100644
--- a/arch/parisc/hpux/sys_hpux.c
+++ b/arch/parisc/hpux/sys_hpux.c
@@ -145,7 +145,7 @@ static int hpux_ustat(dev_t dev, struct hpux_ustat __user *ubuf)
145 s = user_get_super(dev); 145 s = user_get_super(dev);
146 if (s == NULL) 146 if (s == NULL)
147 goto out; 147 goto out;
148 err = vfs_statfs(s->s_root, &sbuf); 148 err = statfs_by_dentry(s->s_root, &sbuf);
149 drop_super(s); 149 drop_super(s);
150 if (err) 150 if (err)
151 goto out; 151 goto out;
@@ -186,12 +186,12 @@ struct hpux_statfs {
186 int16_t f_pad; 186 int16_t f_pad;
187}; 187};
188 188
189static int vfs_statfs_hpux(struct dentry *dentry, struct hpux_statfs *buf) 189static int do_statfs_hpux(struct path *path, struct hpux_statfs *buf)
190{ 190{
191 struct kstatfs st; 191 struct kstatfs st;
192 int retval; 192 int retval;
193 193
194 retval = vfs_statfs(dentry, &st); 194 retval = vfs_statfs(path, &st);
195 if (retval) 195 if (retval)
196 return retval; 196 return retval;
197 197
@@ -219,7 +219,7 @@ asmlinkage long hpux_statfs(const char __user *pathname,
219 error = user_path(pathname, &path); 219 error = user_path(pathname, &path);
220 if (!error) { 220 if (!error) {
221 struct hpux_statfs tmp; 221 struct hpux_statfs tmp;
222 error = vfs_statfs_hpux(path.dentry, &tmp); 222 error = do_statfs_hpux(&path, &tmp);
223 if (!error && copy_to_user(buf, &tmp, sizeof(tmp))) 223 if (!error && copy_to_user(buf, &tmp, sizeof(tmp)))
224 error = -EFAULT; 224 error = -EFAULT;
225 path_put(&path); 225 path_put(&path);
@@ -237,7 +237,7 @@ asmlinkage long hpux_fstatfs(unsigned int fd, struct hpux_statfs __user * buf)
237 file = fget(fd); 237 file = fget(fd);
238 if (!file) 238 if (!file)
239 goto out; 239 goto out;
240 error = vfs_statfs_hpux(file->f_path.dentry, &tmp); 240 error = do_statfs_hpux(&file->f_path, &tmp);
241 if (!error && copy_to_user(buf, &tmp, sizeof(tmp))) 241 if (!error && copy_to_user(buf, &tmp, sizeof(tmp)))
242 error = -EFAULT; 242 error = -EFAULT;
243 fput(file); 243 fput(file);
diff --git a/arch/powerpc/platforms/cell/spufs/inode.c b/arch/powerpc/platforms/cell/spufs/inode.c
index e5e5f823d687..5dec408d6703 100644
--- a/arch/powerpc/platforms/cell/spufs/inode.c
+++ b/arch/powerpc/platforms/cell/spufs/inode.c
@@ -110,7 +110,9 @@ spufs_setattr(struct dentry *dentry, struct iattr *attr)
110 if ((attr->ia_valid & ATTR_SIZE) && 110 if ((attr->ia_valid & ATTR_SIZE) &&
111 (attr->ia_size != inode->i_size)) 111 (attr->ia_size != inode->i_size))
112 return -EINVAL; 112 return -EINVAL;
113 return inode_setattr(inode, attr); 113 setattr_copy(inode, attr);
114 mark_inode_dirty(inode);
115 return 0;
114} 116}
115 117
116 118
@@ -141,15 +143,14 @@ out:
141} 143}
142 144
143static void 145static void
144spufs_delete_inode(struct inode *inode) 146spufs_evict_inode(struct inode *inode)
145{ 147{
146 struct spufs_inode_info *ei = SPUFS_I(inode); 148 struct spufs_inode_info *ei = SPUFS_I(inode);
147 149 end_writeback(inode);
148 if (ei->i_ctx) 150 if (ei->i_ctx)
149 put_spu_context(ei->i_ctx); 151 put_spu_context(ei->i_ctx);
150 if (ei->i_gang) 152 if (ei->i_gang)
151 put_spu_gang(ei->i_gang); 153 put_spu_gang(ei->i_gang);
152 clear_inode(inode);
153} 154}
154 155
155static void spufs_prune_dir(struct dentry *dir) 156static void spufs_prune_dir(struct dentry *dir)
@@ -777,8 +778,7 @@ spufs_fill_super(struct super_block *sb, void *data, int silent)
777 .alloc_inode = spufs_alloc_inode, 778 .alloc_inode = spufs_alloc_inode,
778 .destroy_inode = spufs_destroy_inode, 779 .destroy_inode = spufs_destroy_inode,
779 .statfs = simple_statfs, 780 .statfs = simple_statfs,
780 .delete_inode = spufs_delete_inode, 781 .evict_inode = spufs_evict_inode,
781 .drop_inode = generic_delete_inode,
782 .show_options = generic_show_options, 782 .show_options = generic_show_options,
783 }; 783 };
784 784
diff --git a/arch/s390/hypfs/inode.c b/arch/s390/hypfs/inode.c
index 6b120f073043..98a4a4c267a7 100644
--- a/arch/s390/hypfs/inode.c
+++ b/arch/s390/hypfs/inode.c
@@ -117,10 +117,10 @@ static struct inode *hypfs_make_inode(struct super_block *sb, int mode)
117 return ret; 117 return ret;
118} 118}
119 119
120static void hypfs_drop_inode(struct inode *inode) 120static void hypfs_evict_inode(struct inode *inode)
121{ 121{
122 end_writeback(inode);
122 kfree(inode->i_private); 123 kfree(inode->i_private);
123 generic_delete_inode(inode);
124} 124}
125 125
126static int hypfs_open(struct inode *inode, struct file *filp) 126static int hypfs_open(struct inode *inode, struct file *filp)
@@ -460,7 +460,7 @@ static struct file_system_type hypfs_type = {
460 460
461static const struct super_operations hypfs_s_ops = { 461static const struct super_operations hypfs_s_ops = {
462 .statfs = simple_statfs, 462 .statfs = simple_statfs,
463 .drop_inode = hypfs_drop_inode, 463 .evict_inode = hypfs_evict_inode,
464 .show_options = hypfs_show_options, 464 .show_options = hypfs_show_options,
465}; 465};
466 466
diff --git a/arch/s390/include/asm/statfs.h b/arch/s390/include/asm/statfs.h
index 06cc70307ece..3be7fbd406c8 100644
--- a/arch/s390/include/asm/statfs.h
+++ b/arch/s390/include/asm/statfs.h
@@ -33,7 +33,8 @@ struct statfs {
33 __kernel_fsid_t f_fsid; 33 __kernel_fsid_t f_fsid;
34 int f_namelen; 34 int f_namelen;
35 int f_frsize; 35 int f_frsize;
36 int f_spare[5]; 36 int f_flags;
37 int f_spare[4];
37}; 38};
38 39
39struct statfs64 { 40struct statfs64 {
@@ -47,7 +48,8 @@ struct statfs64 {
47 __kernel_fsid_t f_fsid; 48 __kernel_fsid_t f_fsid;
48 int f_namelen; 49 int f_namelen;
49 int f_frsize; 50 int f_frsize;
50 int f_spare[5]; 51 int f_flags;
52 int f_spare[4];
51}; 53};
52 54
53struct compat_statfs64 { 55struct compat_statfs64 {
@@ -61,7 +63,8 @@ struct compat_statfs64 {
61 __kernel_fsid_t f_fsid; 63 __kernel_fsid_t f_fsid;
62 __u32 f_namelen; 64 __u32 f_namelen;
63 __u32 f_frsize; 65 __u32 f_frsize;
64 __u32 f_spare[5]; 66 __u32 f_flags;
67 __u32 f_spare[4];
65}; 68};
66 69
67#endif /* __s390x__ */ 70#endif /* __s390x__ */
diff --git a/arch/um/include/shared/os.h b/arch/um/include/shared/os.h
index cd40fddcf99d..c4617baaa4f2 100644
--- a/arch/um/include/shared/os.h
+++ b/arch/um/include/shared/os.h
@@ -161,6 +161,9 @@ extern int os_stat_filesystem(char *path, long *bsize_out,
161 long *spare_out); 161 long *spare_out);
162extern int os_change_dir(char *dir); 162extern int os_change_dir(char *dir);
163extern int os_fchange_dir(int fd); 163extern int os_fchange_dir(int fd);
164extern unsigned os_major(unsigned long long dev);
165extern unsigned os_minor(unsigned long long dev);
166extern unsigned long long os_makedev(unsigned major, unsigned minor);
164 167
165/* start_up.c */ 168/* start_up.c */
166extern void os_early_checks(void); 169extern void os_early_checks(void);
diff --git a/arch/um/kernel/ksyms.c b/arch/um/kernel/ksyms.c
index 836fc9b94707..0ae0dfcfbffb 100644
--- a/arch/um/kernel/ksyms.c
+++ b/arch/um/kernel/ksyms.c
@@ -58,6 +58,9 @@ EXPORT_SYMBOL(os_accept_connection);
58EXPORT_SYMBOL(os_rcv_fd); 58EXPORT_SYMBOL(os_rcv_fd);
59EXPORT_SYMBOL(run_helper); 59EXPORT_SYMBOL(run_helper);
60EXPORT_SYMBOL(start_thread); 60EXPORT_SYMBOL(start_thread);
61EXPORT_SYMBOL(os_major);
62EXPORT_SYMBOL(os_minor);
63EXPORT_SYMBOL(os_makedev);
61 64
62EXPORT_SYMBOL(add_sigio_fd); 65EXPORT_SYMBOL(add_sigio_fd);
63EXPORT_SYMBOL(ignore_sigio_fd); 66EXPORT_SYMBOL(ignore_sigio_fd);
diff --git a/arch/um/os-Linux/file.c b/arch/um/os-Linux/file.c
index b5afcfd0f861..140e587bc0ad 100644
--- a/arch/um/os-Linux/file.c
+++ b/arch/um/os-Linux/file.c
@@ -561,3 +561,18 @@ int os_lock_file(int fd, int excl)
561 out: 561 out:
562 return err; 562 return err;
563} 563}
564
565unsigned os_major(unsigned long long dev)
566{
567 return major(dev);
568}
569
570unsigned os_minor(unsigned long long dev)
571{
572 return minor(dev);
573}
574
575unsigned long long os_makedev(unsigned major, unsigned minor)
576{
577 return makedev(major, minor);
578}
diff --git a/arch/um/os-Linux/user_syms.c b/arch/um/os-Linux/user_syms.c
index 89b48a116a89..05f5ea8e83d2 100644
--- a/arch/um/os-Linux/user_syms.c
+++ b/arch/um/os-Linux/user_syms.c
@@ -103,6 +103,10 @@ EXPORT_SYMBOL_PROTO(getuid);
103EXPORT_SYMBOL_PROTO(fsync); 103EXPORT_SYMBOL_PROTO(fsync);
104EXPORT_SYMBOL_PROTO(fdatasync); 104EXPORT_SYMBOL_PROTO(fdatasync);
105 105
106EXPORT_SYMBOL_PROTO(lstat64);
107EXPORT_SYMBOL_PROTO(fstat64);
108EXPORT_SYMBOL_PROTO(mknod);
109
106/* Export symbols used by GCC for the stack protector. */ 110/* Export symbols used by GCC for the stack protector. */
107extern void __stack_smash_handler(void *) __attribute__((weak)); 111extern void __stack_smash_handler(void *) __attribute__((weak));
108EXPORT_SYMBOL(__stack_smash_handler); 112EXPORT_SYMBOL(__stack_smash_handler);