wok-next diff linux-libre/stuff/aufs2-2.6.36-fix.patch @ rev 16567
Up: slitaz-boot-scripts + slitaz-tools (urgent bug fix)
author | Christophe Lincoln <pankso@slitaz.org> |
---|---|
date | Thu May 01 22:17:02 2014 +0200 (2014-05-01) |
parents | |
children |
line diff
1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/linux-libre/stuff/aufs2-2.6.36-fix.patch Thu May 01 22:17:02 2014 +0200 1.3 @@ -0,0 +1,130 @@ 1.4 +diff --git a/fs/file_table.c b/fs/file_table.c 1.5 +index a04bdd8..fbf8908 100644 1.6 +--- a/fs/file_table.c 1.7 ++++ b/fs/file_table.c 1.8 +@@ -20,7 +20,6 @@ 1.9 + #include <linux/cdev.h> 1.10 + #include <linux/fsnotify.h> 1.11 + #include <linux/sysctl.h> 1.12 +-#include <linux/lglock.h> 1.13 + #include <linux/percpu_counter.h> 1.14 + #include <linux/percpu.h> 1.15 + #include <linux/ima.h> 1.16 +@@ -34,7 +33,6 @@ struct files_stat_struct files_stat = { 1.17 + .max_files = NR_FILE 1.18 + }; 1.19 + 1.20 +-DECLARE_LGLOCK(files_lglock); 1.21 + DEFINE_LGLOCK(files_lglock); 1.22 + 1.23 + /* SLAB cache for file structures */ 1.24 +@@ -394,37 +392,6 @@ void file_sb_list_del(struct file *file) 1.25 + } 1.26 + } 1.27 + 1.28 +-#ifdef CONFIG_SMP 1.29 +- 1.30 +-/* 1.31 +- * These macros iterate all files on all CPUs for a given superblock. 1.32 +- * files_lglock must be held globally. 1.33 +- */ 1.34 +-#define do_file_list_for_each_entry(__sb, __file) \ 1.35 +-{ \ 1.36 +- int i; \ 1.37 +- for_each_possible_cpu(i) { \ 1.38 +- struct list_head *list; \ 1.39 +- list = per_cpu_ptr((__sb)->s_files, i); \ 1.40 +- list_for_each_entry((__file), list, f_u.fu_list) 1.41 +- 1.42 +-#define while_file_list_for_each_entry \ 1.43 +- } \ 1.44 +-} 1.45 +- 1.46 +-#else 1.47 +- 1.48 +-#define do_file_list_for_each_entry(__sb, __file) \ 1.49 +-{ \ 1.50 +- struct list_head *list; \ 1.51 +- list = &(sb)->s_files; \ 1.52 +- list_for_each_entry((__file), list, f_u.fu_list) 1.53 +- 1.54 +-#define while_file_list_for_each_entry \ 1.55 +-} 1.56 +- 1.57 +-#endif 1.58 +- 1.59 + int fs_may_remount_ro(struct super_block *sb) 1.60 + { 1.61 + struct file *file; 1.62 +diff --git a/fs/statfs.c b/fs/statfs.c 1.63 +index 30ea8c8..9025c98 100644 1.64 +--- a/fs/statfs.c 1.65 ++++ b/fs/statfs.c 1.66 +@@ -61,6 +61,7 @@ int statfs_by_dentry(struct dentry *dentry, struct kstatfs *buf) 1.67 + buf->f_frsize = buf->f_bsize; 1.68 + return retval; 1.69 + } 1.70 ++EXPORT_SYMBOL(statfs_by_dentry); 1.71 + 1.72 + int vfs_statfs(struct path *path, struct kstatfs *buf) 1.73 + { 1.74 +diff --git a/include/linux/fs.h b/include/linux/fs.h 1.75 +index 63d069b..741d296 100644 1.76 +--- a/include/linux/fs.h 1.77 ++++ b/include/linux/fs.h 1.78 +@@ -9,6 +9,7 @@ 1.79 + #include <linux/limits.h> 1.80 + #include <linux/ioctl.h> 1.81 + #include <linux/blk_types.h> 1.82 ++#include <linux/lglock.h> 1.83 + 1.84 + /* 1.85 + * It's silly to have NR_OPEN bigger than NR_FILE, but you can change 1.86 +@@ -1814,6 +1815,7 @@ extern struct vfsmount *collect_mounts(struct path *); 1.87 + extern void drop_collected_mounts(struct vfsmount *); 1.88 + extern int iterate_mounts(int (*)(struct vfsmount *, void *), void *, 1.89 + struct vfsmount *); 1.90 ++extern int statfs_by_dentry(struct dentry *dentry, struct kstatfs *buf); 1.91 + extern int vfs_statfs(struct path *, struct kstatfs *); 1.92 + extern int statfs_by_dentry(struct dentry *, struct kstatfs *); 1.93 + extern int freeze_super(struct super_block *super); 1.94 +@@ -2481,5 +2483,39 @@ int __init get_filesystem_list(char *buf); 1.95 + #define OPEN_FMODE(flag) ((__force fmode_t)(((flag + 1) & O_ACCMODE) | \ 1.96 + (flag & FMODE_NONOTIFY))) 1.97 + 1.98 ++ 1.99 ++DECLARE_LGLOCK(files_lglock); 1.100 ++ 1.101 ++#ifdef CONFIG_SMP 1.102 ++ 1.103 ++/* 1.104 ++ * These macros iterate all files on all CPUs for a given superblock. 1.105 ++ * files_lglock must be held globally. 1.106 ++ */ 1.107 ++#define do_file_list_for_each_entry(__sb, __file) \ 1.108 ++{ \ 1.109 ++ int i; \ 1.110 ++ for_each_possible_cpu(i) { \ 1.111 ++ struct list_head *list; \ 1.112 ++ list = per_cpu_ptr((__sb)->s_files, i); \ 1.113 ++ list_for_each_entry((__file), list, f_u.fu_list) 1.114 ++ 1.115 ++#define while_file_list_for_each_entry \ 1.116 ++ } \ 1.117 ++} 1.118 ++ 1.119 ++#else 1.120 ++ 1.121 ++#define do_file_list_for_each_entry(__sb, __file) \ 1.122 ++{ \ 1.123 ++ struct list_head *list; \ 1.124 ++ list = &(sb)->s_files; \ 1.125 ++ list_for_each_entry((__file), list, f_u.fu_list) 1.126 ++ 1.127 ++#define while_file_list_for_each_entry \ 1.128 ++} 1.129 ++ 1.130 ++#endif 1.131 ++ 1.132 + #endif /* __KERNEL__ */ 1.133 + #endif /* _LINUX_FS_H */