rev |
line source |
pascal@24141
|
1 aufs3.16 base patch
|
pascal@24141
|
2
|
pascal@24141
|
3 diff --git a/MAINTAINERS b/MAINTAINERS
|
pascal@24141
|
4 index c2066f4..f07a989 100644
|
pascal@24141
|
5 --- a/MAINTAINERS
|
pascal@24141
|
6 +++ b/MAINTAINERS
|
pascal@24141
|
7 @@ -1698,6 +1698,20 @@ F: include/linux/audit.h
|
pascal@24141
|
8 F: include/uapi/linux/audit.h
|
pascal@24141
|
9 F: kernel/audit*
|
pascal@24141
|
10
|
pascal@24141
|
11 +AUFS (advanced multi layered unification filesystem) FILESYSTEM
|
pascal@24141
|
12 +M: "J. R. Okajima" <hooanon05g@gmail.com>
|
pascal@24141
|
13 +L: linux-unionfs@vger.kernel.org
|
pascal@24141
|
14 +L: aufs-users@lists.sourceforge.net (members only)
|
pascal@24141
|
15 +W: http://aufs.sourceforge.net
|
pascal@24141
|
16 +T: git://git.code.sf.net/p/aufs/aufs3-linux
|
pascal@24141
|
17 +T: git://github.com/sfjro/aufs3-linux.git
|
pascal@24141
|
18 +S: Supported
|
pascal@24141
|
19 +F: Documentation/filesystems/aufs/
|
pascal@24141
|
20 +F: Documentation/ABI/testing/debugfs-aufs
|
pascal@24141
|
21 +F: Documentation/ABI/testing/sysfs-aufs
|
pascal@24141
|
22 +F: fs/aufs/
|
pascal@24141
|
23 +F: include/uapi/linux/aufs_type.h
|
pascal@24141
|
24 +
|
pascal@24141
|
25 AUXILIARY DISPLAY DRIVERS
|
pascal@24141
|
26 M: Miguel Ojeda Sandonis <miguel.ojeda.sandonis@gmail.com>
|
pascal@24141
|
27 W: http://miguelojeda.es/auxdisplay.htm
|
pascal@24141
|
28 diff --git a/drivers/block/loop.c b/drivers/block/loop.c
|
pascal@24141
|
29 index 6cb1beb..30efd68 100644
|
pascal@24141
|
30 --- a/drivers/block/loop.c
|
pascal@24141
|
31 +++ b/drivers/block/loop.c
|
pascal@24141
|
32 @@ -692,6 +692,24 @@ static inline int is_loop_device(struct file *file)
|
pascal@24141
|
33 return i && S_ISBLK(i->i_mode) && MAJOR(i->i_rdev) == LOOP_MAJOR;
|
pascal@24141
|
34 }
|
pascal@24141
|
35
|
pascal@24141
|
36 +/*
|
pascal@24141
|
37 + * for AUFS
|
pascal@24141
|
38 + * no get/put for file.
|
pascal@24141
|
39 + */
|
pascal@24141
|
40 +struct file *loop_backing_file(struct super_block *sb)
|
pascal@24141
|
41 +{
|
pascal@24141
|
42 + struct file *ret;
|
pascal@24141
|
43 + struct loop_device *l;
|
pascal@24141
|
44 +
|
pascal@24141
|
45 + ret = NULL;
|
pascal@24141
|
46 + if (MAJOR(sb->s_dev) == LOOP_MAJOR) {
|
pascal@24141
|
47 + l = sb->s_bdev->bd_disk->private_data;
|
pascal@24141
|
48 + ret = l->lo_backing_file;
|
pascal@24141
|
49 + }
|
pascal@24141
|
50 + return ret;
|
pascal@24141
|
51 +}
|
pascal@24141
|
52 +EXPORT_SYMBOL(loop_backing_file);
|
pascal@24141
|
53 +
|
pascal@24141
|
54 /* loop sysfs attributes */
|
pascal@24141
|
55
|
pascal@24141
|
56 static ssize_t loop_attr_show(struct device *dev, char *page,
|
pascal@24141
|
57 diff --git a/fs/dcache.c b/fs/dcache.c
|
pascal@24141
|
58 index 06f6585..0ea8c4a 100644
|
pascal@24141
|
59 --- a/fs/dcache.c
|
pascal@24141
|
60 +++ b/fs/dcache.c
|
pascal@24141
|
61 @@ -1057,7 +1057,7 @@ enum d_walk_ret {
|
pascal@24141
|
62 *
|
pascal@24141
|
63 * The @enter() and @finish() callbacks are called with d_lock held.
|
pascal@24141
|
64 */
|
pascal@24141
|
65 -static void d_walk(struct dentry *parent, void *data,
|
pascal@24141
|
66 +void d_walk(struct dentry *parent, void *data,
|
pascal@24141
|
67 enum d_walk_ret (*enter)(void *, struct dentry *),
|
pascal@24141
|
68 void (*finish)(void *))
|
pascal@24141
|
69 {
|
pascal@24141
|
70 diff --git a/fs/inode.c b/fs/inode.c
|
pascal@24141
|
71 index 6eecb7f..b225c0f 100644
|
pascal@24141
|
72 --- a/fs/inode.c
|
pascal@24141
|
73 +++ b/fs/inode.c
|
pascal@24141
|
74 @@ -1496,7 +1496,7 @@ static int relatime_need_update(struct vfsmount *mnt, struct inode *inode,
|
pascal@24141
|
75 * This does the actual work of updating an inodes time or version. Must have
|
pascal@24141
|
76 * had called mnt_want_write() before calling this.
|
pascal@24141
|
77 */
|
pascal@24141
|
78 -static int update_time(struct inode *inode, struct timespec *time, int flags)
|
pascal@24141
|
79 +int update_time(struct inode *inode, struct timespec *time, int flags)
|
pascal@24141
|
80 {
|
pascal@24141
|
81 if (inode->i_op->update_time)
|
pascal@24141
|
82 return inode->i_op->update_time(inode, time, flags);
|
pascal@24141
|
83 diff --git a/fs/splice.c b/fs/splice.c
|
pascal@24141
|
84 index f5cb9ba..9ba380c 100644
|
pascal@24141
|
85 --- a/fs/splice.c
|
pascal@24141
|
86 +++ b/fs/splice.c
|
pascal@24141
|
87 @@ -1114,8 +1114,8 @@ EXPORT_SYMBOL(generic_splice_sendpage);
|
pascal@24141
|
88 /*
|
pascal@24141
|
89 * Attempt to initiate a splice from pipe to file.
|
pascal@24141
|
90 */
|
pascal@24141
|
91 -static long do_splice_from(struct pipe_inode_info *pipe, struct file *out,
|
pascal@24141
|
92 - loff_t *ppos, size_t len, unsigned int flags)
|
pascal@24141
|
93 +long do_splice_from(struct pipe_inode_info *pipe, struct file *out,
|
pascal@24141
|
94 + loff_t *ppos, size_t len, unsigned int flags)
|
pascal@24141
|
95 {
|
pascal@24141
|
96 ssize_t (*splice_write)(struct pipe_inode_info *, struct file *,
|
pascal@24141
|
97 loff_t *, size_t, unsigned int);
|
pascal@24141
|
98 @@ -1131,9 +1131,9 @@ static long do_splice_from(struct pipe_inode_info *pipe, struct file *out,
|
pascal@24141
|
99 /*
|
pascal@24141
|
100 * Attempt to initiate a splice from a file to a pipe.
|
pascal@24141
|
101 */
|
pascal@24141
|
102 -static long do_splice_to(struct file *in, loff_t *ppos,
|
pascal@24141
|
103 - struct pipe_inode_info *pipe, size_t len,
|
pascal@24141
|
104 - unsigned int flags)
|
pascal@24141
|
105 +long do_splice_to(struct file *in, loff_t *ppos,
|
pascal@24141
|
106 + struct pipe_inode_info *pipe, size_t len,
|
pascal@24141
|
107 + unsigned int flags)
|
pascal@24141
|
108 {
|
pascal@24141
|
109 ssize_t (*splice_read)(struct file *, loff_t *,
|
pascal@24141
|
110 struct pipe_inode_info *, size_t, unsigned int);
|
pascal@24141
|
111 diff --git a/include/linux/file.h b/include/linux/file.h
|
pascal@24141
|
112 index 4d69123..62cffc0 100644
|
pascal@24141
|
113 --- a/include/linux/file.h
|
pascal@24141
|
114 +++ b/include/linux/file.h
|
pascal@24141
|
115 @@ -19,6 +19,7 @@ struct dentry;
|
pascal@24141
|
116 struct path;
|
pascal@24141
|
117 extern struct file *alloc_file(struct path *, fmode_t mode,
|
pascal@24141
|
118 const struct file_operations *fop);
|
pascal@24141
|
119 +extern struct file *get_empty_filp(void);
|
pascal@24141
|
120
|
pascal@24141
|
121 static inline void fput_light(struct file *file, int fput_needed)
|
pascal@24141
|
122 {
|
pascal@24141
|
123 diff --git a/include/linux/fs.h b/include/linux/fs.h
|
pascal@24141
|
124 index e11d60c..2f32b35 100644
|
pascal@24141
|
125 --- a/include/linux/fs.h
|
pascal@24141
|
126 +++ b/include/linux/fs.h
|
pascal@24141
|
127 @@ -2618,6 +2618,7 @@ extern int inode_change_ok(const struct inode *, struct iattr *);
|
pascal@24141
|
128 extern int inode_newsize_ok(const struct inode *, loff_t offset);
|
pascal@24141
|
129 extern void setattr_copy(struct inode *inode, const struct iattr *attr);
|
pascal@24141
|
130
|
pascal@24141
|
131 +extern int update_time(struct inode *, struct timespec *, int);
|
pascal@24141
|
132 extern int file_update_time(struct file *file);
|
pascal@24141
|
133
|
pascal@24141
|
134 extern int generic_show_options(struct seq_file *m, struct dentry *root);
|
pascal@24141
|
135 diff --git a/include/linux/splice.h b/include/linux/splice.h
|
pascal@24141
|
136 index da2751d..2e0fca6 100644
|
pascal@24141
|
137 --- a/include/linux/splice.h
|
pascal@24141
|
138 +++ b/include/linux/splice.h
|
pascal@24141
|
139 @@ -83,4 +83,10 @@ extern void splice_shrink_spd(struct splice_pipe_desc *);
|
pascal@24141
|
140 extern void spd_release_page(struct splice_pipe_desc *, unsigned int);
|
pascal@24141
|
141
|
pascal@24141
|
142 extern const struct pipe_buf_operations page_cache_pipe_buf_ops;
|
pascal@24141
|
143 +
|
pascal@24141
|
144 +extern long do_splice_from(struct pipe_inode_info *pipe, struct file *out,
|
pascal@24141
|
145 + loff_t *ppos, size_t len, unsigned int flags);
|
pascal@24141
|
146 +extern long do_splice_to(struct file *in, loff_t *ppos,
|
pascal@24141
|
147 + struct pipe_inode_info *pipe, size_t len,
|
pascal@24141
|
148 + unsigned int flags);
|
pascal@24141
|
149 #endif
|