Author: shadzik Date: Thu Oct 21 11:58:51 2010 GMT Module: packages Tag: Titanium ---- Log message: - updated for 2.6.36
---- Files affected: packages/kernel-desktop: kernel-desktop-unionfs.patch (1.2.2.8 -> 1.2.2.9) ---- Diffs: ================================================================ Index: packages/kernel-desktop/kernel-desktop-unionfs.patch diff -u packages/kernel-desktop/kernel-desktop-unionfs.patch:1.2.2.8 packages/kernel-desktop/kernel-desktop-unionfs.patch:1.2.2.9 --- packages/kernel-desktop/kernel-desktop-unionfs.patch:1.2.2.8 Tue Aug 10 11:19:59 2010 +++ packages/kernel-desktop/kernel-desktop-unionfs.patch Thu Oct 21 13:58:46 2010 @@ -1,55 +1,7 @@ - -This is a rebase to 2.6.35 of the upstream unionfs-2.5.4_for_2.6.34-rc0.diff.gz - -Signed-off-by: Thomas Backlund <[email protected]> - - Documentation/filesystems/00-INDEX | 2 - Documentation/filesystems/unionfs/00-INDEX | 10 - Documentation/filesystems/unionfs/concepts.txt | 287 ++++++ - Documentation/filesystems/unionfs/issues.txt | 28 - Documentation/filesystems/unionfs/rename.txt | 31 - Documentation/filesystems/unionfs/usage.txt | 134 +++ - MAINTAINERS | 8 - fs/Kconfig | 1 - fs/Makefile | 1 - fs/namei.c | 1 - fs/splice.c | 20 - fs/stack.c | 14 - fs/unionfs/Kconfig | 24 - fs/unionfs/Makefile | 17 - fs/unionfs/commonfops.c | 896 +++++++++++++++++++++ - fs/unionfs/copyup.c | 897 +++++++++++++++++++++ - fs/unionfs/debug.c | 533 ++++++++++++ - fs/unionfs/dentry.c | 397 +++++++++ - fs/unionfs/dirfops.c | 302 +++++++ - fs/unionfs/dirhelper.c | 158 +++ - fs/unionfs/fanout.h | 407 +++++++++ - fs/unionfs/file.c | 380 +++++++++ - fs/unionfs/inode.c | 1055 +++++++++++++++++++++++++ - fs/unionfs/lookup.c | 569 +++++++++++++ - fs/unionfs/main.c | 758 +++++++++++++++++ - fs/unionfs/mmap.c | 89 ++ - fs/unionfs/rdstate.c | 285 ++++++ - fs/unionfs/rename.c | 517 ++++++++++++ - fs/unionfs/sioq.c | 101 ++ - fs/unionfs/sioq.h | 91 ++ - fs/unionfs/subr.c | 95 ++ - fs/unionfs/super.c | 1047 ++++++++++++++++++++++++ - fs/unionfs/union.h | 670 +++++++++++++++ - fs/unionfs/unlink.c | 278 ++++++ - fs/unionfs/whiteout.c | 584 +++++++++++++ - fs/unionfs/xattr.c | 173 ++++ - include/linux/fs_stack.h | 14 - include/linux/magic.h | 2 - include/linux/namei.h | 1 - include/linux/splice.h | 5 - include/linux/union_fs.h | 22 - security/security.c | 1 - 42 files changed, 10894 insertions(+), 11 deletions(-) - -diff -Nurp linux-2.6.35-rc6-git//Documentation/filesystems/00-INDEX linux-2.6.35-rc6-git-unionfs//Documentation/filesystems/00-INDEX ---- linux-2.6.35-rc6-git//Documentation/filesystems/00-INDEX 2010-05-17 00:17:36.000000000 +0300 -+++ linux-2.6.35-rc6-git-unionfs//Documentation/filesystems/00-INDEX 2010-07-30 15:50:42.994235028 +0300 +diff --git a/Documentation/filesystems/00-INDEX b/Documentation/filesystems/00-INDEX +index 4303614..5ade4a8 100644 +--- a/Documentation/filesystems/00-INDEX ++++ b/Documentation/filesystems/00-INDEX @@ -112,6 +112,8 @@ udf.txt - info and mount options for the UDF filesystem. ufs.txt @@ -59,9 +11,11 @@ vfat.txt - info on using the VFAT filesystem used in Windows NT and Windows 95 vfs.txt -diff -Nurp linux-2.6.35-rc6-git//Documentation/filesystems/unionfs/00-INDEX linux-2.6.35-rc6-git-unionfs//Documentation/filesystems/unionfs/00-INDEX ---- linux-2.6.35-rc6-git//Documentation/filesystems/unionfs/00-INDEX 1970-01-01 02:00:00.000000000 +0200 -+++ linux-2.6.35-rc6-git-unionfs//Documentation/filesystems/unionfs/00-INDEX 2010-07-30 15:50:42.994235028 +0300 +diff --git a/Documentation/filesystems/unionfs/00-INDEX b/Documentation/filesystems/unionfs/00-INDEX +new file mode 100644 +index 0000000..96fdf67 +--- /dev/null ++++ b/Documentation/filesystems/unionfs/00-INDEX @@ -0,0 +1,10 @@ +00-INDEX + - this file. @@ -73,9 +27,11 @@ + - Information regarding rename operations. +usage.txt + - Usage information and examples. -diff -Nurp linux-2.6.35-rc6-git//Documentation/filesystems/unionfs/concepts.txt linux-2.6.35-rc6-git-unionfs//Documentation/filesystems/unionfs/concepts.txt ---- linux-2.6.35-rc6-git//Documentation/filesystems/unionfs/concepts.txt 1970-01-01 02:00:00.000000000 +0200 -+++ linux-2.6.35-rc6-git-unionfs//Documentation/filesystems/unionfs/concepts.txt 2010-07-30 15:50:42.994947708 +0300 +diff --git a/Documentation/filesystems/unionfs/concepts.txt b/Documentation/filesystems/unionfs/concepts.txt +new file mode 100644 +index 0000000..b853788 +--- /dev/null ++++ b/Documentation/filesystems/unionfs/concepts.txt @@ -0,0 +1,287 @@ +Unionfs 2.x CONCEPTS: +===================== @@ -364,9 +320,11 @@ +branch is marked read-only by unionfs, then a copyup will take place.) + +For more information, see <http://unionfs.filesystems.org/>. -diff -Nurp linux-2.6.35-rc6-git//Documentation/filesystems/unionfs/issues.txt linux-2.6.35-rc6-git-unionfs//Documentation/filesystems/unionfs/issues.txt ---- linux-2.6.35-rc6-git//Documentation/filesystems/unionfs/issues.txt 1970-01-01 02:00:00.000000000 +0200 -+++ linux-2.6.35-rc6-git-unionfs//Documentation/filesystems/unionfs/issues.txt 2010-07-30 15:50:42.994947708 +0300 +diff --git a/Documentation/filesystems/unionfs/issues.txt b/Documentation/filesystems/unionfs/issues.txt +new file mode 100644 +index 0000000..f4b7e7e +--- /dev/null ++++ b/Documentation/filesystems/unionfs/issues.txt @@ -0,0 +1,28 @@ +KNOWN Unionfs 2.x ISSUES: +========================= @@ -396,9 +354,11 @@ + from Lockdep, please report them to the Unionfs maintainers. + +For more information, see <http://unionfs.filesystems.org/>. -diff -Nurp linux-2.6.35-rc6-git//Documentation/filesystems/unionfs/rename.txt linux-2.6.35-rc6-git-unionfs//Documentation/filesystems/unionfs/rename.txt ---- linux-2.6.35-rc6-git//Documentation/filesystems/unionfs/rename.txt 1970-01-01 02:00:00.000000000 +0200 -+++ linux-2.6.35-rc6-git-unionfs//Documentation/filesystems/unionfs/rename.txt 2010-07-30 15:50:42.994947708 +0300 +diff --git a/Documentation/filesystems/unionfs/rename.txt b/Documentation/filesystems/unionfs/rename.txt +new file mode 100644 +index 0000000..e20bb82 +--- /dev/null ++++ b/Documentation/filesystems/unionfs/rename.txt @@ -0,0 +1,31 @@ +Rename is a complex beast. The following table shows which rename(2) operations +should succeed and which should fail. @@ -431,9 +391,11 @@ +2) Rename source to destination +3) Make destination opaque to prevent anything under it from showing up + -diff -Nurp linux-2.6.35-rc6-git//Documentation/filesystems/unionfs/usage.txt linux-2.6.35-rc6-git-unionfs//Documentation/filesystems/unionfs/usage.txt ---- linux-2.6.35-rc6-git//Documentation/filesystems/unionfs/usage.txt 1970-01-01 02:00:00.000000000 +0200 -+++ linux-2.6.35-rc6-git-unionfs//Documentation/filesystems/unionfs/usage.txt 2010-07-30 15:50:42.994947708 +0300 +diff --git a/Documentation/filesystems/unionfs/usage.txt b/Documentation/filesystems/unionfs/usage.txt +new file mode 100644 +index 0000000..1adde69 +--- /dev/null ++++ b/Documentation/filesystems/unionfs/usage.txt @@ -0,0 +1,134 @@ +Unionfs is a stackable unification file system, which can appear to merge +the contents of several directories (branches), while keeping their physical @@ -569,9 +531,29 @@ + + +For more information, see <http://unionfs.filesystems.org/>. -diff -Nurp linux-2.6.35-rc6-git//fs/Kconfig linux-2.6.35-rc6-git-unionfs//fs/Kconfig ---- linux-2.6.35-rc6-git//fs/Kconfig 2010-05-17 00:17:36.000000000 +0300 -+++ linux-2.6.35-rc6-git-unionfs//fs/Kconfig 2010-07-30 15:50:42.995947739 +0300 +diff --git a/MAINTAINERS b/MAINTAINERS +index df34283..559779b 100644 +--- a/MAINTAINERS ++++ b/MAINTAINERS +@@ -5877,6 +5877,14 @@ F: Documentation/cdrom/ + F: drivers/cdrom/cdrom.c + F: include/linux/cdrom.h + ++UNIONFS ++P: Erez Zadok ++M: [email protected] ++L: [email protected] ++W: http://unionfs.filesystems.org/ ++T: git git.kernel.org/pub/scm/linux/kernel/git/ezk/unionfs.git ++S: Maintained ++ + UNSORTED BLOCK IMAGES (UBI) + M: Artem Bityutskiy <[email protected]> + W: http://www.linux-mtd.infradead.org/ +diff --git a/fs/Kconfig b/fs/Kconfig +index 3d18530..65b6aa1 100644 +--- a/fs/Kconfig ++++ b/fs/Kconfig @@ -169,6 +169,7 @@ if MISC_FILESYSTEMS source "fs/adfs/Kconfig" source "fs/affs/Kconfig" @@ -580,9 +562,10 @@ source "fs/hfs/Kconfig" source "fs/hfsplus/Kconfig" source "fs/befs/Kconfig" -diff -Nurp linux-2.6.35-rc6-git//fs/Makefile linux-2.6.35-rc6-git-unionfs//fs/Makefile ---- linux-2.6.35-rc6-git//fs/Makefile 2010-07-30 14:05:39.182947749 +0300 -+++ linux-2.6.35-rc6-git-unionfs//fs/Makefile 2010-07-30 15:50:42.995947739 +0300 +diff --git a/fs/Makefile b/fs/Makefile +index e6ec1d3..787332e 100644 +--- a/fs/Makefile ++++ b/fs/Makefile @@ -84,6 +84,7 @@ obj-$(CONFIG_ISO9660_FS) += isofs/ obj-$(CONFIG_HFSPLUS_FS) += hfsplus/ # Before hfs to find wrapped HFS+ obj-$(CONFIG_HFS_FS) += hfs/ @@ -591,10 +574,11 @@ obj-$(CONFIG_VXFS_FS) += freevxfs/ obj-$(CONFIG_NFS_FS) += nfs/ obj-$(CONFIG_EXPORTFS) += exportfs/ -diff -Nurp linux-2.6.35-rc6-git//fs/namei.c linux-2.6.35-rc6-git-unionfs//fs/namei.c ---- linux-2.6.35-rc6-git//fs/namei.c 2010-07-30 14:05:39.270978942 +0300 -+++ linux-2.6.35-rc6-git-unionfs//fs/namei.c 2010-07-30 15:50:42.995947739 +0300 -@@ -386,6 +386,7 @@ void release_open_intent(struct nameidat +diff --git a/fs/namei.c b/fs/namei.c +index 24896e8..db22420 100644 +--- a/fs/namei.c ++++ b/fs/namei.c +@@ -385,6 +385,7 @@ void release_open_intent(struct nameidata *nd) else fput(nd->intent.open.file); } @@ -602,10 +586,11 @@ static inline struct dentry * do_revalidate(struct dentry *dentry, struct nameidata *nd) -diff -Nurp linux-2.6.35-rc6-git//fs/splice.c linux-2.6.35-rc6-git-unionfs//fs/splice.c ---- linux-2.6.35-rc6-git//fs/splice.c 2010-07-30 14:05:39.323970675 +0300 -+++ linux-2.6.35-rc6-git-unionfs//fs/splice.c 2010-07-30 16:16:25.730042698 +0300 -@@ -1104,8 +1104,8 @@ EXPORT_SYMBOL(generic_splice_sendpage); +diff --git a/fs/splice.c b/fs/splice.c +index 8f1dfae..7a57fab 100644 +--- a/fs/splice.c ++++ b/fs/splice.c +@@ -1092,8 +1092,8 @@ EXPORT_SYMBOL(generic_splice_sendpage); /* * Attempt to initiate a splice from pipe to file. */ @@ -616,7 +601,7 @@ { ssize_t (*splice_write)(struct pipe_inode_info *, struct file *, loff_t *, size_t, unsigned int); -@@ -1128,13 +1128,14 @@ static long do_splice_from(struct pipe_i +@@ -1116,13 +1116,14 @@ static long do_splice_from(struct pipe_inode_info *pipe, struct file *out, return splice_write(pipe, out, ppos, len, flags); } @@ -634,7 +619,7 @@ { ssize_t (*splice_read)(struct file *, loff_t *, struct pipe_inode_info *, size_t, unsigned int); -@@ -1154,6 +1155,7 @@ static long do_splice_to(struct file *in +@@ -1142,6 +1143,7 @@ static long do_splice_to(struct file *in, loff_t *ppos, return splice_read(in, ppos, pipe, len, flags); } @@ -642,7 +627,7 @@ /** * splice_direct_to_actor - splices data directly between two non-pipes -@@ -1223,7 +1225,7 @@ ssize_t splice_direct_to_actor(struct fi +@@ -1211,7 +1213,7 @@ ssize_t splice_direct_to_actor(struct file *in, struct splice_desc *sd, size_t read_len; loff_t pos = sd->pos, prev_pos = pos; @@ -651,16 +636,18 @@ if (unlikely(ret <= 0)) goto out_release; -@@ -1282,7 +1284,7 @@ static int direct_splice_actor(struct pi +@@ -1270,8 +1272,8 @@ static int direct_splice_actor(struct pipe_inode_info *pipe, { struct file *file = sd->u.file; - return do_splice_from(pipe, file, &file->f_pos, sd->total_len, +- sd->flags); + return vfs_splice_from(pipe, file, &file->f_pos, sd->total_len, - sd->flags); ++ sd->flags); } -@@ -1380,7 +1382,7 @@ static long do_splice(struct file *in, l + /** +@@ -1368,7 +1370,7 @@ static long do_splice(struct file *in, loff_t __user *off_in, } else off = &out->f_pos; @@ -669,7 +656,7 @@ if (off_out && copy_to_user(off_out, off, sizeof(loff_t))) ret = -EFAULT; -@@ -1400,7 +1402,7 @@ static long do_splice(struct file *in, l +@@ -1388,7 +1390,7 @@ static long do_splice(struct file *in, loff_t __user *off_in, } else off = &in->f_pos; @@ -678,9 +665,10 @@ if (off_in && copy_to_user(off_in, off, sizeof(loff_t))) ret = -EFAULT; -diff -Nurp linux-2.6.35-rc6-git//fs/stack.c linux-2.6.35-rc6-git-unionfs//fs/stack.c ---- linux-2.6.35-rc6-git//fs/stack.c 2010-05-17 00:17:36.000000000 +0300 -+++ linux-2.6.35-rc6-git-unionfs//fs/stack.c 2010-07-30 15:50:42.996947572 +0300 +diff --git a/fs/stack.c b/fs/stack.c +index 4a6f7f4..7eeef12 100644 +--- a/fs/stack.c ++++ b/fs/stack.c @@ -1,8 +1,20 @@ +/* + * Copyright (c) 2006-2009 Erez Zadok @@ -703,9 +691,64 @@ * * This function cannot be inlined since i_size_{read,write} is rather * heavy-weight on 32-bit systems -diff -Nurp linux-2.6.35-rc6-git//fs/unionfs/commonfops.c linux-2.6.35-rc6-git-unionfs//fs/unionfs/commonfops.c ---- linux-2.6.35-rc6-git//fs/unionfs/commonfops.c 1970-01-01 02:00:00.000000000 +0200 -+++ linux-2.6.35-rc6-git-unionfs//fs/unionfs/commonfops.c 2010-07-30 15:50:50.557108046 +0300 +diff --git a/fs/unionfs/Kconfig b/fs/unionfs/Kconfig +new file mode 100644 +index 0000000..f3c1ac4 +--- /dev/null ++++ b/fs/unionfs/Kconfig +@@ -0,0 +1,24 @@ ++config UNION_FS ++ tristate "Union file system (EXPERIMENTAL)" ++ depends on EXPERIMENTAL ++ help ++ Unionfs is a stackable unification file system, which appears to ++ merge the contents of several directories (branches), while keeping ++ their physical content separate. ++ ++ See <http://unionfs.filesystems.org> for details ++ ++config UNION_FS_XATTR ++ bool "Unionfs extended attributes" ++ depends on UNION_FS ++ help ++ Extended attributes are name:value pairs associated with inodes by ++ the kernel or by users (see the attr(5) manual page). ++ ++ If unsure, say N. ++ ++config UNION_FS_DEBUG ++ bool "Debug Unionfs" ++ depends on UNION_FS ++ help ++ If you say Y here, you can turn on debugging output from Unionfs. +diff --git a/fs/unionfs/Makefile b/fs/unionfs/Makefile +new file mode 100644 +index 0000000..08f4fd4 +--- /dev/null ++++ b/fs/unionfs/Makefile +@@ -0,0 +1,17 @@ ++UNIONFS_VERSION="2.5.6 (for 2.6.36-rc5)" ++ ++EXTRA_CFLAGS += -DUNIONFS_VERSION=\"$(UNIONFS_VERSION)\" ++ ++obj-$(CONFIG_UNION_FS) += unionfs.o ++ ++unionfs-y := subr.o dentry.o file.o inode.o main.o super.o \ ++ rdstate.o copyup.o dirhelper.o rename.o unlink.o \ ++ lookup.o commonfops.o dirfops.o sioq.o mmap.o whiteout.o ++ ++unionfs-$(CONFIG_UNION_FS_XATTR) += xattr.o ++ ++unionfs-$(CONFIG_UNION_FS_DEBUG) += debug.o ++ ++ifeq ($(CONFIG_UNION_FS_DEBUG),y) ++EXTRA_CFLAGS += -DDEBUG ++endif +diff --git a/fs/unionfs/commonfops.c b/fs/unionfs/commonfops.c +new file mode 100644 +index 0000000..51ea65e +--- /dev/null ++++ b/fs/unionfs/commonfops.c @@ -0,0 +1,896 @@ +/* + * Copyright (c) 2003-2010 Erez Zadok @@ -1448,12 +1491,12 @@ + goto out; + if (lower_file->f_op->unlocked_ioctl) { + err = lower_file->f_op->unlocked_ioctl(lower_file, cmd, arg); ++#ifdef CONFIG_COMPAT + } else if (lower_file->f_op->ioctl) { -+ lock_kernel(); -+ err = lower_file->f_op->ioctl( ++ err = lower_file->f_op->compat_ioctl( + lower_file->f_path.dentry->d_inode, + lower_file, cmd, arg); -+ unlock_kernel(); ++#endif + } + +out: @@ -1603,10 +1646,12 @@ + unionfs_read_unlock(dentry->d_sb); + return err; +} -diff -Nurp linux-2.6.35-rc6-git//fs/unionfs/copyup.c linux-2.6.35-rc6-git-unionfs//fs/unionfs/copyup.c ---- linux-2.6.35-rc6-git//fs/unionfs/copyup.c 1970-01-01 02:00:00.000000000 +0200 -+++ linux-2.6.35-rc6-git-unionfs//fs/unionfs/copyup.c 2010-07-30 15:50:50.558010270 +0300 -@@ -0,0 +1,897 @@ +diff --git a/fs/unionfs/copyup.c b/fs/unionfs/copyup.c +new file mode 100644 +index 0000000..bba3a75 +--- /dev/null ++++ b/fs/unionfs/copyup.c +@@ -0,0 +1,896 @@ +/* + * Copyright (c) 2003-2010 Erez Zadok + * Copyright (c) 2003-2006 Charles P. Wright @@ -1935,8 +1980,7 @@ + kfree(buf); + + if (!err) -+ err = output_file->f_op->fsync(output_file, -+ new_lower_dentry, 0); ++ err = output_file->f_op->fsync(output_file, 0); + + if (err) + goto out_close_out; @@ -2504,10 +2548,12 @@ + dbend(dentry) = bstart; + ibend(dentry->d_inode) = ibstart(dentry->d_inode) = bstart; +} -diff -Nurp linux-2.6.35-rc6-git//fs/unionfs/debug.c linux-2.6.35-rc6-git-unionfs//fs/unionfs/debug.c ---- linux-2.6.35-rc6-git//fs/unionfs/debug.c 1970-01-01 02:00:00.000000000 +0200 -+++ linux-2.6.35-rc6-git-unionfs//fs/unionfs/debug.c 2010-07-30 15:50:50.558010270 +0300 -@@ -0,0 +1,533 @@ +diff --git a/fs/unionfs/debug.c b/fs/unionfs/debug.c +new file mode 100644 +index 0000000..100d2c6 +--- /dev/null ++++ b/fs/unionfs/debug.c +@@ -0,0 +1,532 @@ +/* + * Copyright (c) 2003-2010 Erez Zadok + * Copyright (c) 2005-2007 Josef 'Jeff' Sipek @@ -2948,7 +2994,6 @@ + PRINT_CALLER(fname, fxn, line); + pr_debug(" CND1: lower_file of type %s\n", + file->f_path.dentry->d_sb->s_type->name); -+ BUG(); + } + } +} @@ -3041,9 +3086,11 @@ + file, fxn, line); + } +} -diff -Nurp linux-2.6.35-rc6-git//fs/unionfs/dentry.c linux-2.6.35-rc6-git-unionfs//fs/unionfs/dentry.c ---- linux-2.6.35-rc6-git//fs/unionfs/dentry.c 1970-01-01 02:00:00.000000000 +0200 -+++ linux-2.6.35-rc6-git-unionfs//fs/unionfs/dentry.c 2010-07-30 15:50:50.558010270 +0300 +diff --git a/fs/unionfs/dentry.c b/fs/unionfs/dentry.c +new file mode 100644 +index 0000000..a0c3bba +--- /dev/null ++++ b/fs/unionfs/dentry.c @@ -0,0 +1,397 @@ +/* + * Copyright (c) 2003-2010 Erez Zadok @@ -3442,9 +3489,11 @@ + .d_release = unionfs_d_release, + .d_iput = unionfs_d_iput, +}; -diff -Nurp linux-2.6.35-rc6-git//fs/unionfs/dirfops.c linux-2.6.35-rc6-git-unionfs//fs/unionfs/dirfops.c ---- linux-2.6.35-rc6-git//fs/unionfs/dirfops.c 1970-01-01 02:00:00.000000000 +0200 -+++ linux-2.6.35-rc6-git-unionfs//fs/unionfs/dirfops.c 2010-07-30 15:50:50.559010056 +0300 +diff --git a/fs/unionfs/dirfops.c b/fs/unionfs/dirfops.c +new file mode 100644 +index 0000000..7da0ff0 +--- /dev/null ++++ b/fs/unionfs/dirfops.c @@ -0,0 +1,302 @@ +/* + * Copyright (c) 2003-2010 Erez Zadok @@ -3748,9 +3797,11 @@ + .fsync = unionfs_fsync, + .fasync = unionfs_fasync, +}; -diff -Nurp linux-2.6.35-rc6-git//fs/unionfs/dirhelper.c linux-2.6.35-rc6-git-unionfs//fs/unionfs/dirhelper.c ---- linux-2.6.35-rc6-git//fs/unionfs/dirhelper.c 1970-01-01 02:00:00.000000000 +0200 -+++ linux-2.6.35-rc6-git-unionfs//fs/unionfs/dirhelper.c 2010-07-30 15:50:50.559010056 +0300 +diff --git a/fs/unionfs/dirhelper.c b/fs/unionfs/dirhelper.c +new file mode 100644 +index 0000000..033343b +--- /dev/null ++++ b/fs/unionfs/dirhelper.c @@ -0,0 +1,158 @@ +/* + * Copyright (c) 2003-2010 Erez Zadok @@ -3910,9 +3961,11 @@ + + return err; +} -diff -Nurp linux-2.6.35-rc6-git//fs/unionfs/fanout.h linux-2.6.35-rc6-git-unionfs//fs/unionfs/fanout.h ---- linux-2.6.35-rc6-git//fs/unionfs/fanout.h 1970-01-01 02:00:00.000000000 +0200 -+++ linux-2.6.35-rc6-git-unionfs//fs/unionfs/fanout.h 2010-07-30 15:50:50.559010056 +0300 +diff --git a/fs/unionfs/fanout.h b/fs/unionfs/fanout.h +new file mode 100644 +index 0000000..5b77eac +--- /dev/null ++++ b/fs/unionfs/fanout.h @@ -0,0 +1,407 @@ +/* + * Copyright (c) 2003-2010 Erez Zadok @@ -4321,10 +4374,12 @@ +} + +#endif /* not _FANOUT_H */ -diff -Nurp linux-2.6.35-rc6-git//fs/unionfs/file.c linux-2.6.35-rc6-git-unionfs//fs/unionfs/file.c ---- linux-2.6.35-rc6-git//fs/unionfs/file.c 1970-01-01 02:00:00.000000000 +0200 -+++ linux-2.6.35-rc6-git-unionfs//fs/unionfs/file.c 2010-07-30 15:50:50.559010056 +0300 -@@ -0,0 +1,380 @@ +diff --git a/fs/unionfs/file.c b/fs/unionfs/file.c +new file mode 100644 +index 0000000..1c694c3 +--- /dev/null ++++ b/fs/unionfs/file.c +@@ -0,0 +1,382 @@ +/* + * Copyright (c) 2003-2010 Erez Zadok + * Copyright (c) 2003-2006 Charles P. Wright @@ -4515,10 +4570,11 @@ + return err; +} + -+int unionfs_fsync(struct file *file, struct dentry *dentry, int datasync) ++int unionfs_fsync(struct file *file, int datasync) +{ + int bindex, bstart, bend; + struct file *lower_file; ++ struct dentry *dentry = file->f_path.dentry; + struct dentry *lower_dentry; + struct dentry *parent; + struct inode *lower_inode, *inode; @@ -4551,9 +4607,7 @@ + lower_file = unionfs_lower_file_idx(file, bindex); + lower_dentry = unionfs_lower_dentry_idx(dentry, bindex); + mutex_lock(&lower_inode->i_mutex); -+ err = lower_inode->i_fop->fsync(lower_file, -+ lower_dentry, -+ datasync); ++ err = lower_inode->i_fop->fsync(lower_file, datasync); + if (!err && bindex == bstart) + fsstack_copy_attr_times(inode, lower_inode); + mutex_unlock(&lower_inode->i_mutex); @@ -4696,6 +4750,9 @@ + .write = unionfs_write, + .readdir = unionfs_file_readdir, + .unlocked_ioctl = unionfs_ioctl, ++#ifdef CONFIG_COMPAT ++ .compat_ioctl = unionfs_ioctl, ++#endif + .mmap = unionfs_mmap, + .open = unionfs_open, + .flush = unionfs_flush, @@ -4705,10 +4762,12 @@ + .splice_read = unionfs_splice_read, + .splice_write = unionfs_splice_write, +}; -diff -Nurp linux-2.6.35-rc6-git//fs/unionfs/inode.c linux-2.6.35-rc6-git-unionfs//fs/unionfs/inode.c ---- linux-2.6.35-rc6-git//fs/unionfs/inode.c 1970-01-01 02:00:00.000000000 +0200 -+++ linux-2.6.35-rc6-git-unionfs//fs/unionfs/inode.c 2010-07-30 15:50:50.560010144 +0300 -@@ -0,0 +1,1055 @@ +diff --git a/fs/unionfs/inode.c b/fs/unionfs/inode.c +new file mode 100644 +index 0000000..4c36f16 +--- /dev/null ++++ b/fs/unionfs/inode.c +@@ -0,0 +1,1061 @@ +/* + * Copyright (c) 2003-2010 Erez Zadok + * Copyright (c) 2003-2006 Charles P. Wright @@ -5427,6 +5486,7 @@ + void *cookie) +{ + struct dentry *parent; ++ char *buf; + + unionfs_read_lock(dentry->d_sb, UNIONFS_SMUTEX_CHILD); + parent = unionfs_lock_parent(dentry, UNIONFS_DMUTEX_PARENT); @@ -5437,8 +5497,13 @@ + "unionfs: put_link failed to revalidate dentry\n"); + + unionfs_check_dentry(dentry); ++#if 0 ++ /* XXX: can't run this check b/c this fxn can receive a poisoned 'nd' PTR */ + unionfs_check_nd(nd); -+ kfree(nd_get_link(nd)); ++#endif ++ buf = nd_get_link(nd); ++ if (!IS_ERR(buf)) ++ kfree(buf); + unionfs_unlock_dentry(dentry); + unionfs_unlock_parent(dentry, parent); + unionfs_read_unlock(dentry->d_sb); @@ -5764,37 +5829,11 @@ + .listxattr = unionfs_listxattr, +#endif /* CONFIG_UNION_FS_XATTR */ +}; -diff -Nurp linux-2.6.35-rc6-git//fs/unionfs/Kconfig linux-2.6.35-rc6-git-unionfs//fs/unionfs/Kconfig ---- linux-2.6.35-rc6-git//fs/unionfs/Kconfig 1970-01-01 02:00:00.000000000 +0200 -+++ linux-2.6.35-rc6-git-unionfs//fs/unionfs/Kconfig 2010-07-30 15:50:50.557108046 +0300 -@@ -0,0 +1,24 @@ -+config UNION_FS -+ tristate "Union file system (EXPERIMENTAL)" -+ depends on EXPERIMENTAL -+ help -+ Unionfs is a stackable unification file system, which appears to -+ merge the contents of several directories (branches), while keeping -+ their physical content separate. -+ -+ See <http://unionfs.filesystems.org> for details -+ -+config UNION_FS_XATTR <<Diff was trimmed, longer than 597 lines>> ---- CVS-web: http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/kernel-desktop/kernel-desktop-unionfs.patch?r1=1.2.2.8&r2=1.2.2.9&f=u _______________________________________________ pld-cvs-commit mailing list [email protected] http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit
