1 |
tommy 09/07/28 18:43:26 |
2 |
|
3 |
Modified: aufs2-standalone-29.patch |
4 |
Added: aufs2-standalone-27.patch aufs2-standalone-30.patch |
5 |
aufs2-standalone-28.patch |
6 |
Removed: aufs2-standalone.patch |
7 |
Log: |
8 |
Version bump, add support for kernel version 2.6.30 |
9 |
(Portage version: 2.2_rc33-r4/cvs/Linux x86_64) |
10 |
|
11 |
Revision Changes Path |
12 |
1.3 sys-fs/aufs2/files/aufs2-standalone-29.patch |
13 |
|
14 |
file : http://sources.gentoo.org/viewcvs.py/gentoo-x86/sys-fs/aufs2/files/aufs2-standalone-29.patch?rev=1.3&view=markup |
15 |
plain: http://sources.gentoo.org/viewcvs.py/gentoo-x86/sys-fs/aufs2/files/aufs2-standalone-29.patch?rev=1.3&content-type=text/plain |
16 |
diff : http://sources.gentoo.org/viewcvs.py/gentoo-x86/sys-fs/aufs2/files/aufs2-standalone-29.patch?r1=1.2&r2=1.3 |
17 |
|
18 |
Index: aufs2-standalone-29.patch |
19 |
=================================================================== |
20 |
RCS file: /var/cvsroot/gentoo-x86/sys-fs/aufs2/files/aufs2-standalone-29.patch,v |
21 |
retrieving revision 1.2 |
22 |
retrieving revision 1.3 |
23 |
diff -u -r1.2 -r1.3 |
24 |
--- aufs2-standalone-29.patch 5 Jun 2009 17:20:53 -0000 1.2 |
25 |
+++ aufs2-standalone-29.patch 28 Jul 2009 18:43:26 -0000 1.3 |
26 |
@@ -41,16 +41,14 @@ |
27 |
/** |
28 |
* lookup_one_len - filesystem helper to lookup single pathname component |
29 |
diff --git a/fs/namespace.c b/fs/namespace.c |
30 |
-index 06f8e63..b002ec3 100644 |
31 |
+index 06f8e63..f71793e 100644 |
32 |
--- a/fs/namespace.c |
33 |
+++ b/fs/namespace.c |
34 |
-@@ -37,6 +37,9 @@ |
35 |
+@@ -37,6 +37,7 @@ |
36 |
|
37 |
/* spinlock for vfsmount related operations, inplace of dcache_lock */ |
38 |
__cacheline_aligned_in_smp DEFINE_SPINLOCK(vfsmount_lock); |
39 |
-+#ifdef CONFIG_AUFS_EXPORT |
40 |
+EXPORT_SYMBOL(vfsmount_lock); |
41 |
-+#endif |
42 |
|
43 |
static int event; |
44 |
static DEFINE_IDA(mnt_id_ida); |
45 |
@@ -119,19 +117,6 @@ |
46 |
|
47 |
/** |
48 |
* generic_shutdown_super - common helper for ->kill_sb() |
49 |
-diff --git a/include/linux/lockdep.h b/include/linux/lockdep.h |
50 |
-index 23bf02f..49e5b47 100644 |
51 |
---- a/include/linux/lockdep.h |
52 |
-+++ b/include/linux/lockdep.h |
53 |
-@@ -58,7 +58,7 @@ enum lock_usage_bit |
54 |
- #define LOCKF_USED_IN_IRQ_READ \ |
55 |
- (LOCKF_USED_IN_HARDIRQ_READ | LOCKF_USED_IN_SOFTIRQ_READ) |
56 |
- |
57 |
--#define MAX_LOCKDEP_SUBCLASSES 8UL |
58 |
-+#define MAX_LOCKDEP_SUBCLASSES 12UL |
59 |
- |
60 |
- /* |
61 |
- * Lock-classes are keyed via unique addresses, by embedding the |
62 |
diff --git a/include/linux/namei.h b/include/linux/namei.h |
63 |
index fc2e035..182d43b 100644 |
64 |
--- a/include/linux/namei.h |
65 |
@@ -174,7 +159,7 @@ |
66 |
int devcgroup_inode_mknod(int mode, dev_t dev) |
67 |
{ |
68 |
diff --git a/security/security.c b/security/security.c |
69 |
-index c3586c0..8b0495f 100644 |
70 |
+index c3586c0..9841a3e 100644 |
71 |
--- a/security/security.c |
72 |
+++ b/security/security.c |
73 |
@@ -389,6 +389,7 @@ int security_path_mkdir(struct path *path, struct dentry *dentry, int mode) |
74 |
@@ -249,3 +234,11 @@ |
75 |
|
76 |
int security_inode_setattr(struct dentry *dentry, struct iattr *attr) |
77 |
{ |
78 |
+@@ -620,6 +629,7 @@ int security_file_permission(struct file *file, int mask) |
79 |
+ { |
80 |
+ return security_ops->file_permission(file, mask); |
81 |
+ } |
82 |
++EXPORT_SYMBOL(security_file_permission); |
83 |
+ |
84 |
+ int security_file_alloc(struct file *file) |
85 |
+ { |
86 |
|
87 |
|
88 |
|
89 |
1.1 sys-fs/aufs2/files/aufs2-standalone-27.patch |
90 |
|
91 |
file : http://sources.gentoo.org/viewcvs.py/gentoo-x86/sys-fs/aufs2/files/aufs2-standalone-27.patch?rev=1.1&view=markup |
92 |
plain: http://sources.gentoo.org/viewcvs.py/gentoo-x86/sys-fs/aufs2/files/aufs2-standalone-27.patch?rev=1.1&content-type=text/plain |
93 |
|
94 |
Index: aufs2-standalone-27.patch |
95 |
=================================================================== |
96 |
aufs2 standalone patch for linux-2.6.27 |
97 |
|
98 |
diff --git a/fs/Kconfig b/fs/Kconfig |
99 |
index abccb5d..b987e5e 100644 |
100 |
--- a/fs/Kconfig |
101 |
+++ b/fs/Kconfig |
102 |
@@ -1539,6 +1539,8 @@ config UFS_DEBUG |
103 |
Y here. This will result in _many_ additional debugging messages to be |
104 |
written to the system log. |
105 |
|
106 |
+source "fs/aufs/Kconfig" |
107 |
+ |
108 |
endmenu |
109 |
|
110 |
menuconfig NETWORK_FILESYSTEMS |
111 |
diff --git a/fs/Makefile b/fs/Makefile |
112 |
index a1482a5..aa51c5a 100644 |
113 |
--- a/fs/Makefile |
114 |
+++ b/fs/Makefile |
115 |
@@ -122,3 +122,4 @@ obj-$(CONFIG_HPPFS) += hppfs/ |
116 |
obj-$(CONFIG_DEBUG_FS) += debugfs/ |
117 |
obj-$(CONFIG_OCFS2_FS) += ocfs2/ |
118 |
obj-$(CONFIG_GFS2_FS) += gfs2/ |
119 |
+obj-$(CONFIG_AUFS_FS) += aufs/ |
120 |
diff --git a/fs/namei.c b/fs/namei.c |
121 |
index 4ea63ed..b207821 100644 |
122 |
--- a/fs/namei.c |
123 |
+++ b/fs/namei.c |
124 |
@@ -354,6 +354,7 @@ int deny_write_access(struct file * file) |
125 |
|
126 |
return 0; |
127 |
} |
128 |
+EXPORT_SYMBOL(deny_write_access); |
129 |
|
130 |
/** |
131 |
* path_get - get a reference to a path |
132 |
@@ -1241,7 +1242,7 @@ out: |
133 |
* needs parent already locked. Doesn't follow mounts. |
134 |
* SMP-safe. |
135 |
*/ |
136 |
-static struct dentry *lookup_hash(struct nameidata *nd) |
137 |
+struct dentry *lookup_hash(struct nameidata *nd) |
138 |
{ |
139 |
int err; |
140 |
|
141 |
@@ -1250,8 +1251,9 @@ static struct dentry *lookup_hash(struct nameidata *nd) |
142 |
return ERR_PTR(err); |
143 |
return __lookup_hash(&nd->last, nd->path.dentry, nd); |
144 |
} |
145 |
+EXPORT_SYMBOL(lookup_hash); |
146 |
|
147 |
-static int __lookup_one_len(const char *name, struct qstr *this, |
148 |
+int __lookup_one_len(const char *name, struct qstr *this, |
149 |
struct dentry *base, int len) |
150 |
{ |
151 |
unsigned long hash; |
152 |
@@ -1272,6 +1274,7 @@ static int __lookup_one_len(const char *name, struct qstr *this, |
153 |
this->hash = end_name_hash(hash); |
154 |
return 0; |
155 |
} |
156 |
+EXPORT_SYMBOL(__lookup_one_len); |
157 |
|
158 |
/** |
159 |
* lookup_one_len - filesystem helper to lookup single pathname component |
160 |
diff --git a/fs/namespace.c b/fs/namespace.c |
161 |
index 6e283c9..98f56b9 100644 |
162 |
--- a/fs/namespace.c |
163 |
+++ b/fs/namespace.c |
164 |
@@ -37,6 +37,9 @@ |
165 |
|
166 |
/* spinlock for vfsmount related operations, inplace of dcache_lock */ |
167 |
__cacheline_aligned_in_smp DEFINE_SPINLOCK(vfsmount_lock); |
168 |
+#ifdef CONFIG_AUFS_EXPORT |
169 |
+EXPORT_SYMBOL(vfsmount_lock); |
170 |
+#endif |
171 |
|
172 |
static int event; |
173 |
static DEFINE_IDA(mnt_id_ida); |
174 |
diff --git a/fs/open.c b/fs/open.c |
175 |
index 07da935..b8e9726 100644 |
176 |
--- a/fs/open.c |
177 |
+++ b/fs/open.c |
178 |
@@ -222,6 +222,7 @@ int do_truncate(struct dentry *dentry, loff_t length, unsigned int time_attrs, |
179 |
mutex_unlock(&dentry->d_inode->i_mutex); |
180 |
return err; |
181 |
} |
182 |
+EXPORT_SYMBOL(do_truncate); |
183 |
|
184 |
static long do_sys_truncate(const char __user *pathname, loff_t length) |
185 |
{ |
186 |
diff --git a/fs/splice.c b/fs/splice.c |
187 |
index a1e701c..48d7e72 100644 |
188 |
--- a/fs/splice.c |
189 |
+++ b/fs/splice.c |
190 |
@@ -887,8 +887,8 @@ EXPORT_SYMBOL(generic_splice_sendpage); |
191 |
/* |
192 |
* Attempt to initiate a splice from pipe to file. |
193 |
*/ |
194 |
-static long do_splice_from(struct pipe_inode_info *pipe, struct file *out, |
195 |
- loff_t *ppos, size_t len, unsigned int flags) |
196 |
+long do_splice_from(struct pipe_inode_info *pipe, struct file *out, |
197 |
+ loff_t *ppos, size_t len, unsigned int flags) |
198 |
{ |
199 |
int ret; |
200 |
|
201 |
@@ -907,13 +907,14 @@ static long do_splice_from(struct pipe_inode_info *pipe, struct file *out, |
202 |
|
203 |
return out->f_op->splice_write(pipe, out, ppos, len, flags); |
204 |
} |
205 |
+EXPORT_SYMBOL(do_splice_from); |
206 |
|
207 |
/* |
208 |
* Attempt to initiate a splice from a file to a pipe. |
209 |
*/ |
210 |
-static long do_splice_to(struct file *in, loff_t *ppos, |
211 |
- struct pipe_inode_info *pipe, size_t len, |
212 |
- unsigned int flags) |
213 |
+long do_splice_to(struct file *in, loff_t *ppos, |
214 |
+ struct pipe_inode_info *pipe, size_t len, |
215 |
+ unsigned int flags) |
216 |
{ |
217 |
int ret; |
218 |
|
219 |
@@ -929,6 +930,7 @@ static long do_splice_to(struct file *in, loff_t *ppos, |
220 |
|
221 |
return in->f_op->splice_read(in, ppos, pipe, len, flags); |
222 |
} |
223 |
+EXPORT_SYMBOL(do_splice_to); |
224 |
|
225 |
/** |
226 |
* splice_direct_to_actor - splices data directly between two non-pipes |
227 |
diff --git a/fs/super.c b/fs/super.c |
228 |
index e931ae9..141853c 100644 |
229 |
--- a/fs/super.c |
230 |
+++ b/fs/super.c |
231 |
@@ -270,6 +270,7 @@ int fsync_super(struct super_block *sb) |
232 |
__fsync_super(sb); |
233 |
return sync_blockdev(sb->s_bdev); |
234 |
} |
235 |
+EXPORT_SYMBOL(fsync_super); |
236 |
|
237 |
/** |
238 |
* generic_shutdown_super - common helper for ->kill_sb() |
239 |
diff --git a/fs/sync.c b/fs/sync.c |
240 |
index 2967562..34040d6 100644 |
241 |
--- a/fs/sync.c |
242 |
+++ b/fs/sync.c |
243 |
@@ -104,6 +104,7 @@ long do_fsync(struct file *file, int datasync) |
244 |
out: |
245 |
return ret; |
246 |
} |
247 |
+EXPORT_SYMBOL(do_fsync); |
248 |
|
249 |
static long __do_fsync(unsigned int fd, int datasync) |
250 |
{ |
251 |
diff --git a/include/linux/Kbuild b/include/linux/Kbuild |
252 |
index b68ec09..22d182c 100644 |
253 |
--- a/include/linux/Kbuild |
254 |
+++ b/include/linux/Kbuild |
255 |
@@ -34,6 +34,7 @@ header-y += atmppp.h |
256 |
header-y += atmsap.h |
257 |
header-y += atmsvc.h |
258 |
header-y += atm_zatm.h |
259 |
+header-y += aufs_type.h |
260 |
header-y += auto_fs4.h |
261 |
header-y += ax25.h |
262 |
header-y += b1lli.h |
263 |
diff --git a/include/linux/lockdep.h b/include/linux/lockdep.h |
264 |
index 331e5f1..606bf6e 100644 |
265 |
--- a/include/linux/lockdep.h |
266 |
+++ b/include/linux/lockdep.h |
267 |
@@ -58,7 +58,7 @@ enum lock_usage_bit |
268 |
#define LOCKF_USED_IN_IRQ_READ \ |
269 |
(LOCKF_USED_IN_HARDIRQ_READ | LOCKF_USED_IN_SOFTIRQ_READ) |
270 |
|
271 |
-#define MAX_LOCKDEP_SUBCLASSES 8UL |
272 |
+#define MAX_LOCKDEP_SUBCLASSES 12UL |
273 |
|
274 |
/* |
275 |
* Lock-classes are keyed via unique addresses, by embedding the |
276 |
diff --git a/include/linux/namei.h b/include/linux/namei.h |
277 |
index 68f8c32..5522432 100644 |
278 |
--- a/include/linux/namei.h |
279 |
+++ b/include/linux/namei.h |
280 |
@@ -71,6 +71,9 @@ extern struct file *lookup_instantiate_filp(struct nameidata *nd, struct dentry |
281 |
extern struct file *nameidata_to_filp(struct nameidata *nd, int flags); |
282 |
extern void release_open_intent(struct nameidata *); |
283 |
|
284 |
+extern struct dentry *lookup_hash(struct nameidata *nd); |
285 |
+extern int __lookup_one_len(const char *name, struct qstr *this, |
286 |
+ struct dentry *base, int len); |
287 |
extern struct dentry *lookup_one_len(const char *, struct dentry *, int); |
288 |
extern struct dentry *lookup_one_noperm(const char *, struct dentry *); |
289 |
|
290 |
diff --git a/include/linux/splice.h b/include/linux/splice.h |
291 |
index 528dcb9..5123bc6 100644 |
292 |
--- a/include/linux/splice.h |
293 |
+++ b/include/linux/splice.h |
294 |
@@ -71,4 +71,10 @@ extern ssize_t splice_to_pipe(struct pipe_inode_info *, |
295 |
extern ssize_t splice_direct_to_actor(struct file *, struct splice_desc *, |
296 |
splice_direct_actor *); |
297 |
|
298 |
+extern long do_splice_from(struct pipe_inode_info *pipe, struct file *out, |
299 |
+ loff_t *ppos, size_t len, unsigned int flags); |
300 |
+extern long do_splice_to(struct file *in, loff_t *ppos, |
301 |
+ struct pipe_inode_info *pipe, size_t len, |
302 |
+ unsigned int flags); |
303 |
+ |
304 |
#endif |
305 |
diff --git a/security/device_cgroup.c b/security/device_cgroup.c |
306 |
index 46f2397..00ec611 100644 |
307 |
--- a/security/device_cgroup.c |
308 |
+++ b/security/device_cgroup.c |
309 |
@@ -537,6 +537,7 @@ acc_check: |
310 |
|
311 |
return -EPERM; |
312 |
} |
313 |
+EXPORT_SYMBOL(devcgroup_inode_permission); |
314 |
|
315 |
int devcgroup_inode_mknod(int mode, dev_t dev) |
316 |
{ |
317 |
diff --git a/security/security.c b/security/security.c |
318 |
index 3a4b4f5..4d7882e 100644 |
319 |
--- a/security/security.c |
320 |
+++ b/security/security.c |
321 |
@@ -425,6 +425,7 @@ int security_inode_readlink(struct dentry *dentry) |
322 |
return 0; |
323 |
return security_ops->inode_readlink(dentry); |
324 |
} |
325 |
+EXPORT_SYMBOL(security_inode_readlink); |
326 |
|
327 |
int security_inode_follow_link(struct dentry *dentry, struct nameidata *nd) |
328 |
{ |
329 |
@@ -439,6 +440,7 @@ int security_inode_permission(struct inode *inode, int mask) |
330 |
return 0; |
331 |
return security_ops->inode_permission(inode, mask); |
332 |
} |
333 |
+EXPORT_SYMBOL(security_inode_permission); |
334 |
|
335 |
int security_inode_setattr(struct dentry *dentry, struct iattr *attr) |
336 |
{ |
337 |
|
338 |
|
339 |
|
340 |
1.1 sys-fs/aufs2/files/aufs2-standalone-30.patch |
341 |
|
342 |
file : http://sources.gentoo.org/viewcvs.py/gentoo-x86/sys-fs/aufs2/files/aufs2-standalone-30.patch?rev=1.1&view=markup |
343 |
plain: http://sources.gentoo.org/viewcvs.py/gentoo-x86/sys-fs/aufs2/files/aufs2-standalone-30.patch?rev=1.1&content-type=text/plain |
344 |
|
345 |
Index: aufs2-standalone-30.patch |
346 |
=================================================================== |
347 |
aufs2 standalone patch for linux-2.6.30 |
348 |
|
349 |
diff --git a/fs/namei.c b/fs/namei.c |
350 |
index 967c3db..64a5060 100644 |
351 |
--- a/fs/namei.c |
352 |
+++ b/fs/namei.c |
353 |
@@ -337,6 +337,7 @@ int deny_write_access(struct file * file) |
354 |
|
355 |
return 0; |
356 |
} |
357 |
+EXPORT_SYMBOL(deny_write_access); |
358 |
|
359 |
/** |
360 |
* path_get - get a reference to a path |
361 |
@@ -1200,7 +1201,7 @@ out: |
362 |
* needs parent already locked. Doesn't follow mounts. |
363 |
* SMP-safe. |
364 |
*/ |
365 |
-static struct dentry *lookup_hash(struct nameidata *nd) |
366 |
+struct dentry *lookup_hash(struct nameidata *nd) |
367 |
{ |
368 |
int err; |
369 |
|
370 |
@@ -1209,8 +1210,9 @@ static struct dentry *lookup_hash(struct nameidata *nd) |
371 |
return ERR_PTR(err); |
372 |
return __lookup_hash(&nd->last, nd->path.dentry, nd); |
373 |
} |
374 |
+EXPORT_SYMBOL(lookup_hash); |
375 |
|
376 |
-static int __lookup_one_len(const char *name, struct qstr *this, |
377 |
+int __lookup_one_len(const char *name, struct qstr *this, |
378 |
struct dentry *base, int len) |
379 |
{ |
380 |
unsigned long hash; |
381 |
@@ -1231,6 +1233,7 @@ static int __lookup_one_len(const char *name, struct qstr *this, |
382 |
this->hash = end_name_hash(hash); |
383 |
return 0; |
384 |
} |
385 |
+EXPORT_SYMBOL(__lookup_one_len); |
386 |
|
387 |
/** |
388 |
* lookup_one_len - filesystem helper to lookup single pathname component |
389 |
diff --git a/fs/namespace.c b/fs/namespace.c |
390 |
index 134d494..5a6d038 100644 |
391 |
--- a/fs/namespace.c |
392 |
+++ b/fs/namespace.c |
393 |
@@ -38,6 +38,7 @@ |
394 |
|
395 |
/* spinlock for vfsmount related operations, inplace of dcache_lock */ |
396 |
__cacheline_aligned_in_smp DEFINE_SPINLOCK(vfsmount_lock); |
397 |
+EXPORT_SYMBOL(vfsmount_lock); |
398 |
|
399 |
static int event; |
400 |
static DEFINE_IDA(mnt_id_ida); |
401 |
diff --git a/fs/open.c b/fs/open.c |
402 |
index bdfbf03..81c39b3 100644 |
403 |
--- a/fs/open.c |
404 |
+++ b/fs/open.c |
405 |
@@ -221,6 +221,7 @@ int do_truncate(struct dentry *dentry, loff_t length, unsigned int time_attrs, |
406 |
mutex_unlock(&dentry->d_inode->i_mutex); |
407 |
return err; |
408 |
} |
409 |
+EXPORT_SYMBOL(do_truncate); |
410 |
|
411 |
static long do_sys_truncate(const char __user *pathname, loff_t length) |
412 |
{ |
413 |
diff --git a/fs/splice.c b/fs/splice.c |
414 |
index 666953d..fbc3f77 100644 |
415 |
--- a/fs/splice.c |
416 |
+++ b/fs/splice.c |
417 |
@@ -905,8 +905,8 @@ EXPORT_SYMBOL(generic_splice_sendpage); |
418 |
/* |
419 |
* Attempt to initiate a splice from pipe to file. |
420 |
*/ |
421 |
-static long do_splice_from(struct pipe_inode_info *pipe, struct file *out, |
422 |
- loff_t *ppos, size_t len, unsigned int flags) |
423 |
+long do_splice_from(struct pipe_inode_info *pipe, struct file *out, |
424 |
+ loff_t *ppos, size_t len, unsigned int flags) |
425 |
{ |
426 |
int ret; |
427 |
|
428 |
@@ -925,13 +925,14 @@ static long do_splice_from(struct pipe_inode_info *pipe, struct file *out, |
429 |
|
430 |
return out->f_op->splice_write(pipe, out, ppos, len, flags); |
431 |
} |
432 |
+EXPORT_SYMBOL(do_splice_from); |
433 |
|
434 |
/* |
435 |
* Attempt to initiate a splice from a file to a pipe. |
436 |
*/ |
437 |
-static long do_splice_to(struct file *in, loff_t *ppos, |
438 |
- struct pipe_inode_info *pipe, size_t len, |
439 |
- unsigned int flags) |
440 |
+long do_splice_to(struct file *in, loff_t *ppos, |
441 |
+ struct pipe_inode_info *pipe, size_t len, |
442 |
+ unsigned int flags) |
443 |
{ |
444 |
int ret; |
445 |
|
446 |
@@ -947,6 +948,7 @@ static long do_splice_to(struct file *in, loff_t *ppos, |
447 |
|
448 |
return in->f_op->splice_read(in, ppos, pipe, len, flags); |
449 |
} |
450 |
+EXPORT_SYMBOL(do_splice_to); |
451 |
|
452 |
/** |
453 |
* splice_direct_to_actor - splices data directly between two non-pipes |
454 |
diff --git a/include/linux/namei.h b/include/linux/namei.h |
455 |
index 518098f..42a5279 100644 |
456 |
--- a/include/linux/namei.h |
457 |
+++ b/include/linux/namei.h |
458 |
@@ -74,6 +74,9 @@ extern struct file *lookup_instantiate_filp(struct nameidata *nd, struct dentry |
459 |
extern struct file *nameidata_to_filp(struct nameidata *nd, int flags); |
460 |
extern void release_open_intent(struct nameidata *); |
461 |
|
462 |
+extern struct dentry *lookup_hash(struct nameidata *nd); |
463 |
+extern int __lookup_one_len(const char *name, struct qstr *this, |
464 |
+ struct dentry *base, int len); |
465 |
extern struct dentry *lookup_one_len(const char *, struct dentry *, int); |
466 |
extern struct dentry *lookup_one_noperm(const char *, struct dentry *); |
467 |
|
468 |
diff --git a/include/linux/splice.h b/include/linux/splice.h |
469 |
index 5f3faa9..d2f8660 100644 |
470 |
--- a/include/linux/splice.h |
471 |
+++ b/include/linux/splice.h |
472 |
@@ -83,4 +83,10 @@ extern ssize_t splice_to_pipe(struct pipe_inode_info *, |
473 |
extern ssize_t splice_direct_to_actor(struct file *, struct splice_desc *, |
474 |
splice_direct_actor *); |
475 |
|
476 |
+extern long do_splice_from(struct pipe_inode_info *pipe, struct file *out, |
477 |
+ loff_t *ppos, size_t len, unsigned int flags); |
478 |
+extern long do_splice_to(struct file *in, loff_t *ppos, |
479 |
+ struct pipe_inode_info *pipe, size_t len, |
480 |
+ unsigned int flags); |
481 |
+ |
482 |
#endif |
483 |
diff --git a/security/device_cgroup.c b/security/device_cgroup.c |
484 |
index 5fda7df..440e476 100644 |
485 |
--- a/security/device_cgroup.c |
486 |
+++ b/security/device_cgroup.c |
487 |
@@ -512,6 +512,7 @@ acc_check: |
488 |
|
489 |
return -EPERM; |
490 |
} |
491 |
+EXPORT_SYMBOL(devcgroup_inode_permission); |
492 |
|
493 |
int devcgroup_inode_mknod(int mode, dev_t dev) |
494 |
{ |
495 |
diff --git a/security/security.c b/security/security.c |
496 |
index 5284255..ed62ecd 100644 |
497 |
--- a/security/security.c |
498 |
+++ b/security/security.c |
499 |
@@ -389,6 +389,7 @@ int security_path_mkdir(struct path *path, struct dentry *dentry, int mode) |
500 |
return 0; |
501 |
return security_ops->path_mkdir(path, dentry, mode); |
502 |
} |
503 |
+EXPORT_SYMBOL(security_path_mkdir); |
504 |
|
505 |
int security_path_rmdir(struct path *path, struct dentry *dentry) |
506 |
{ |
507 |
@@ -396,6 +397,7 @@ int security_path_rmdir(struct path *path, struct dentry *dentry) |
508 |
return 0; |
509 |
return security_ops->path_rmdir(path, dentry); |
510 |
} |
511 |
+EXPORT_SYMBOL(security_path_rmdir); |
512 |
|
513 |
int security_path_unlink(struct path *path, struct dentry *dentry) |
514 |
{ |
515 |
@@ -403,6 +405,7 @@ int security_path_unlink(struct path *path, struct dentry *dentry) |
516 |
return 0; |
517 |
return security_ops->path_unlink(path, dentry); |
518 |
} |
519 |
+EXPORT_SYMBOL(security_path_unlink); |
520 |
|
521 |
int security_path_symlink(struct path *path, struct dentry *dentry, |
522 |
const char *old_name) |
523 |
@@ -411,6 +414,7 @@ int security_path_symlink(struct path *path, struct dentry *dentry, |
524 |
return 0; |
525 |
return security_ops->path_symlink(path, dentry, old_name); |
526 |
} |
527 |
+EXPORT_SYMBOL(security_path_symlink); |
528 |
|
529 |
int security_path_link(struct dentry *old_dentry, struct path *new_dir, |
530 |
struct dentry *new_dentry) |
531 |
@@ -419,6 +423,7 @@ int security_path_link(struct dentry *old_dentry, struct path *new_dir, |
532 |
return 0; |
533 |
return security_ops->path_link(old_dentry, new_dir, new_dentry); |
534 |
} |
535 |
+EXPORT_SYMBOL(security_path_link); |
536 |
|
537 |
int security_path_rename(struct path *old_dir, struct dentry *old_dentry, |
538 |
struct path *new_dir, struct dentry *new_dentry) |
539 |
@@ -429,6 +434,7 @@ int security_path_rename(struct path *old_dir, struct dentry *old_dentry, |
540 |
return security_ops->path_rename(old_dir, old_dentry, new_dir, |
541 |
new_dentry); |
542 |
} |
543 |
+EXPORT_SYMBOL(security_path_rename); |
544 |
|
545 |
int security_path_truncate(struct path *path, loff_t length, |
546 |
unsigned int time_attrs) |
547 |
@@ -437,6 +443,7 @@ int security_path_truncate(struct path *path, loff_t length, |
548 |
return 0; |
549 |
return security_ops->path_truncate(path, length, time_attrs); |
550 |
} |
551 |
+EXPORT_SYMBOL(security_path_truncate); |
552 |
#endif |
553 |
|
554 |
int security_inode_create(struct inode *dir, struct dentry *dentry, int mode) |
555 |
@@ -508,6 +515,7 @@ int security_inode_readlink(struct dentry *dentry) |
556 |
return 0; |
557 |
return security_ops->inode_readlink(dentry); |
558 |
} |
559 |
+EXPORT_SYMBOL(security_inode_readlink); |
560 |
|
561 |
int security_inode_follow_link(struct dentry *dentry, struct nameidata *nd) |
562 |
{ |
563 |
@@ -522,6 +530,7 @@ int security_inode_permission(struct inode *inode, int mask) |
564 |
return 0; |
565 |
return security_ops->inode_permission(inode, mask); |
566 |
} |
567 |
+EXPORT_SYMBOL(security_inode_permission); |
568 |
|
569 |
int security_inode_setattr(struct dentry *dentry, struct iattr *attr) |
570 |
{ |
571 |
@@ -622,6 +631,7 @@ int security_file_permission(struct file *file, int mask) |
572 |
{ |
573 |
return security_ops->file_permission(file, mask); |
574 |
} |
575 |
+EXPORT_SYMBOL(security_file_permission); |
576 |
|
577 |
int security_file_alloc(struct file *file) |
578 |
{ |
579 |
|
580 |
|
581 |
|
582 |
1.1 sys-fs/aufs2/files/aufs2-standalone-28.patch |
583 |
|
584 |
file : http://sources.gentoo.org/viewcvs.py/gentoo-x86/sys-fs/aufs2/files/aufs2-standalone-28.patch?rev=1.1&view=markup |
585 |
plain: http://sources.gentoo.org/viewcvs.py/gentoo-x86/sys-fs/aufs2/files/aufs2-standalone-28.patch?rev=1.1&content-type=text/plain |
586 |
|
587 |
Index: aufs2-standalone-28.patch |
588 |
=================================================================== |
589 |
aufs2 standalone patch for linux-2.6.28 |
590 |
|
591 |
diff --git a/fs/namei.c b/fs/namei.c |
592 |
index d34e0f9..2779304 100644 |
593 |
--- a/fs/namei.c |
594 |
+++ b/fs/namei.c |
595 |
@@ -341,6 +341,7 @@ int deny_write_access(struct file * file) |
596 |
|
597 |
return 0; |
598 |
} |
599 |
+EXPORT_SYMBOL(deny_write_access); |
600 |
|
601 |
/** |
602 |
* path_get - get a reference to a path |
603 |
@@ -1212,7 +1213,7 @@ out: |
604 |
* needs parent already locked. Doesn't follow mounts. |
605 |
* SMP-safe. |
606 |
*/ |
607 |
-static struct dentry *lookup_hash(struct nameidata *nd) |
608 |
+struct dentry *lookup_hash(struct nameidata *nd) |
609 |
{ |
610 |
int err; |
611 |
|
612 |
@@ -1221,8 +1222,9 @@ static struct dentry *lookup_hash(struct nameidata *nd) |
613 |
return ERR_PTR(err); |
614 |
return __lookup_hash(&nd->last, nd->path.dentry, nd); |
615 |
} |
616 |
+EXPORT_SYMBOL(lookup_hash); |
617 |
|
618 |
-static int __lookup_one_len(const char *name, struct qstr *this, |
619 |
+int __lookup_one_len(const char *name, struct qstr *this, |
620 |
struct dentry *base, int len) |
621 |
{ |
622 |
unsigned long hash; |
623 |
@@ -1243,6 +1245,7 @@ static int __lookup_one_len(const char *name, struct qstr *this, |
624 |
this->hash = end_name_hash(hash); |
625 |
return 0; |
626 |
} |
627 |
+EXPORT_SYMBOL(__lookup_one_len); |
628 |
|
629 |
/** |
630 |
* lookup_one_len - filesystem helper to lookup single pathname component |
631 |
diff --git a/fs/namespace.c b/fs/namespace.c |
632 |
index 65b3dc8..39fbbac 100644 |
633 |
--- a/fs/namespace.c |
634 |
+++ b/fs/namespace.c |
635 |
@@ -37,6 +37,7 @@ |
636 |
|
637 |
/* spinlock for vfsmount related operations, inplace of dcache_lock */ |
638 |
__cacheline_aligned_in_smp DEFINE_SPINLOCK(vfsmount_lock); |
639 |
+EXPORT_SYMBOL(vfsmount_lock); |
640 |
|
641 |
static int event; |
642 |
static DEFINE_IDA(mnt_id_ida); |
643 |
diff --git a/fs/open.c b/fs/open.c |
644 |
index 83cdb9d..bb43dab 100644 |
645 |
--- a/fs/open.c |
646 |
+++ b/fs/open.c |
647 |
@@ -222,6 +222,7 @@ int do_truncate(struct dentry *dentry, loff_t length, unsigned int time_attrs, |
648 |
mutex_unlock(&dentry->d_inode->i_mutex); |
649 |
return err; |
650 |
} |
651 |
+EXPORT_SYMBOL(do_truncate); |
652 |
|
653 |
static long do_sys_truncate(const char __user *pathname, loff_t length) |
654 |
{ |
655 |
diff --git a/fs/splice.c b/fs/splice.c |
656 |
index 1abab5c..7b7d65e 100644 |
657 |
--- a/fs/splice.c |
658 |
+++ b/fs/splice.c |
659 |
@@ -887,8 +887,8 @@ EXPORT_SYMBOL(generic_splice_sendpage); |
660 |
/* |
661 |
* Attempt to initiate a splice from pipe to file. |
662 |
*/ |
663 |
-static long do_splice_from(struct pipe_inode_info *pipe, struct file *out, |
664 |
- loff_t *ppos, size_t len, unsigned int flags) |
665 |
+long do_splice_from(struct pipe_inode_info *pipe, struct file *out, |
666 |
+ loff_t *ppos, size_t len, unsigned int flags) |
667 |
{ |
668 |
int ret; |
669 |
|
670 |
@@ -907,13 +907,14 @@ static long do_splice_from(struct pipe_inode_info *pipe, struct file *out, |
671 |
|
672 |
return out->f_op->splice_write(pipe, out, ppos, len, flags); |
673 |
} |
674 |
+EXPORT_SYMBOL(do_splice_from); |
675 |
|
676 |
/* |
677 |
* Attempt to initiate a splice from a file to a pipe. |
678 |
*/ |
679 |
-static long do_splice_to(struct file *in, loff_t *ppos, |
680 |
- struct pipe_inode_info *pipe, size_t len, |
681 |
- unsigned int flags) |
682 |
+long do_splice_to(struct file *in, loff_t *ppos, |
683 |
+ struct pipe_inode_info *pipe, size_t len, |
684 |
+ unsigned int flags) |
685 |
{ |
686 |
int ret; |
687 |
|
688 |
@@ -929,6 +930,7 @@ static long do_splice_to(struct file *in, loff_t *ppos, |
689 |
|
690 |
return in->f_op->splice_read(in, ppos, pipe, len, flags); |
691 |
} |
692 |
+EXPORT_SYMBOL(do_splice_to); |
693 |
|
694 |
/** |
695 |
* splice_direct_to_actor - splices data directly between two non-pipes |
696 |
diff --git a/fs/super.c b/fs/super.c |
697 |
index 400a760..a1df361 100644 |
698 |
--- a/fs/super.c |
699 |
+++ b/fs/super.c |
700 |
@@ -270,6 +270,7 @@ int fsync_super(struct super_block *sb) |
701 |
__fsync_super(sb); |
702 |
return sync_blockdev(sb->s_bdev); |
703 |
} |
704 |
+EXPORT_SYMBOL(fsync_super); |
705 |
|
706 |
/** |
707 |
* generic_shutdown_super - common helper for ->kill_sb() |
708 |
diff --git a/fs/sync.c b/fs/sync.c |
709 |
index 2967562..34040d6 100644 |
710 |
--- a/fs/sync.c |
711 |
+++ b/fs/sync.c |
712 |
@@ -104,6 +104,7 @@ long do_fsync(struct file *file, int datasync) |
713 |
out: |
714 |
return ret; |
715 |
} |
716 |
+EXPORT_SYMBOL(do_fsync); |
717 |
|
718 |
static long __do_fsync(unsigned int fd, int datasync) |
719 |
{ |
720 |
diff --git a/include/linux/namei.h b/include/linux/namei.h |
721 |
index 99eb803..f6cdf1c 100644 |
722 |
--- a/include/linux/namei.h |
723 |
+++ b/include/linux/namei.h |
724 |
@@ -75,6 +75,9 @@ extern struct file *lookup_instantiate_filp(struct nameidata *nd, struct dentry |
725 |
extern struct file *nameidata_to_filp(struct nameidata *nd, int flags); |
726 |
extern void release_open_intent(struct nameidata *); |
727 |
|
728 |
+extern struct dentry *lookup_hash(struct nameidata *nd); |
729 |
+extern int __lookup_one_len(const char *name, struct qstr *this, |
730 |
+ struct dentry *base, int len); |
731 |
extern struct dentry *lookup_one_len(const char *, struct dentry *, int); |
732 |
extern struct dentry *lookup_one_noperm(const char *, struct dentry *); |
733 |
|
734 |
diff --git a/include/linux/splice.h b/include/linux/splice.h |
735 |
index 528dcb9..5123bc6 100644 |
736 |
--- a/include/linux/splice.h |
737 |
+++ b/include/linux/splice.h |
738 |
@@ -71,4 +71,10 @@ extern ssize_t splice_to_pipe(struct pipe_inode_info *, |
739 |
extern ssize_t splice_direct_to_actor(struct file *, struct splice_desc *, |
740 |
splice_direct_actor *); |
741 |
|
742 |
+extern long do_splice_from(struct pipe_inode_info *pipe, struct file *out, |
743 |
+ loff_t *ppos, size_t len, unsigned int flags); |
744 |
+extern long do_splice_to(struct file *in, loff_t *ppos, |
745 |
+ struct pipe_inode_info *pipe, size_t len, |
746 |
+ unsigned int flags); |
747 |
+ |
748 |
#endif |
749 |
diff --git a/security/device_cgroup.c b/security/device_cgroup.c |
750 |
index 5ba7870..8f880c2 100644 |
751 |
--- a/security/device_cgroup.c |
752 |
+++ b/security/device_cgroup.c |
753 |
@@ -507,6 +507,7 @@ acc_check: |
754 |
|
755 |
return -EPERM; |
756 |
} |
757 |
+EXPORT_SYMBOL(devcgroup_inode_permission); |
758 |
|
759 |
int devcgroup_inode_mknod(int mode, dev_t dev) |
760 |
{ |
761 |
diff --git a/security/security.c b/security/security.c |
762 |
index c0acfa7..812ebf4 100644 |
763 |
--- a/security/security.c |
764 |
+++ b/security/security.c |
765 |
@@ -434,6 +434,7 @@ int security_inode_readlink(struct dentry *dentry) |
766 |
return 0; |
767 |
return security_ops->inode_readlink(dentry); |
768 |
} |
769 |
+EXPORT_SYMBOL(security_inode_readlink); |
770 |
|
771 |
int security_inode_follow_link(struct dentry *dentry, struct nameidata *nd) |
772 |
{ |
773 |
@@ -448,6 +449,7 @@ int security_inode_permission(struct inode *inode, int mask) |
774 |
return 0; |
775 |
return security_ops->inode_permission(inode, mask); |
776 |
} |
777 |
+EXPORT_SYMBOL(security_inode_permission); |
778 |
|
779 |
int security_inode_setattr(struct dentry *dentry, struct iattr *attr) |
780 |
{ |
781 |
@@ -548,6 +550,7 @@ int security_file_permission(struct file *file, int mask) |
782 |
{ |
783 |
return security_ops->file_permission(file, mask); |
784 |
} |
785 |
+EXPORT_SYMBOL(security_file_permission); |
786 |
|
787 |
int security_file_alloc(struct file *file) |
788 |
{ |