packages (Titanium): kernel-desktop/kernel-desktop-unionfs.patch - updated ...

shadzik shadzik at pld-linux.org
Thu Oct 21 13:58:51 CEST 2010


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 <tmb at mandriva.org>
-
- 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:	ezk at cs.sunysb.edu
++L:	unionfs at filesystems.org
++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 <dedekind1 at gmail.com>
+ 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



More information about the pld-cvs-commit mailing list