| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240 | diff -Nur linux-2.6.36.orig/include/linux/Kbuild linux-2.6.36/include/linux/Kbuild--- linux-2.6.36.orig/include/linux/Kbuild	2010-10-20 22:30:22.000000000 +0200+++ linux-2.6.36/include/linux/Kbuild	2011-01-10 19:52:38.000000000 +0100@@ -60,6 +60,7 @@ header-y += atmsap.h header-y += atmsvc.h header-y += audit.h+header-y += aufs_type.h header-y += auto_fs.h header-y += auto_fs4.h header-y += auxvec.hdiff -Nur linux-2.6.36.orig/include/linux/aufs_type.h linux-2.6.36/include/linux/aufs_type.h--- linux-2.6.36.orig/include/linux/aufs_type.h	1970-01-01 01:00:00.000000000 +0100+++ linux-2.6.36/include/linux/aufs_type.h	2011-01-10 19:54:22.000000000 +0100@@ -0,0 +1,197 @@+/*+ * Copyright (C) 2005-2011 Junjiro R. Okajima+ *+ * This program, aufs is free software; you can redistribute it and/or modify+ * it under the terms of the GNU General Public License as published by+ * the Free Software Foundation; either version 2 of the License, or+ * (at your option) any later version.+ *+ * This program is distributed in the hope that it will be useful,+ * but WITHOUT ANY WARRANTY; without even the implied warranty of+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the+ * GNU General Public License for more details.+ *+ * You should have received a copy of the GNU General Public License+ * along with this program; if not, write to the Free Software+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA+ */++#ifndef __AUFS_TYPE_H__+#define __AUFS_TYPE_H__++#include <linux/ioctl.h>+#include <linux/kernel.h>+#include <linux/limits.h>+#include <linux/types.h>++#define AUFS_VERSION	"2.1-standalone.tree-36-20110110"++/* todo? move this to linux-2.6.19/include/magic.h */+#define AUFS_SUPER_MAGIC	('a' << 24 | 'u' << 16 | 'f' << 8 | 's')++/* ---------------------------------------------------------------------- */++#ifdef CONFIG_AUFS_BRANCH_MAX_127+typedef __s8 aufs_bindex_t;+#define AUFS_BRANCH_MAX 127+#else+typedef __s16 aufs_bindex_t;+#ifdef CONFIG_AUFS_BRANCH_MAX_511+#define AUFS_BRANCH_MAX 511+#elif defined(CONFIG_AUFS_BRANCH_MAX_1023)+#define AUFS_BRANCH_MAX 1023+#elif defined(CONFIG_AUFS_BRANCH_MAX_32767)+#define AUFS_BRANCH_MAX 32767+#endif+#endif++#ifdef __KERNEL__+#ifndef AUFS_BRANCH_MAX+#error unknown CONFIG_AUFS_BRANCH_MAX value+#endif+#endif /* __KERNEL__ */++/* ---------------------------------------------------------------------- */++#define AUFS_NAME		"aufs"+#define AUFS_FSTYPE		AUFS_NAME++#define AUFS_ROOT_INO		2+#define AUFS_FIRST_INO		11++#define AUFS_WH_PFX		".wh."+#define AUFS_WH_PFX_LEN		((int)sizeof(AUFS_WH_PFX) - 1)+#define AUFS_WH_TMP_LEN		4+/* a limit for rmdir/rename a dir */+#define AUFS_MAX_NAMELEN	(NAME_MAX \+				- AUFS_WH_PFX_LEN * 2	/* doubly whiteouted */\+				- 1			/* dot */\+				- AUFS_WH_TMP_LEN)	/* hex */+#define AUFS_XINO_FNAME		"." AUFS_NAME ".xino"+#define AUFS_XINO_DEFPATH	"/tmp/" AUFS_XINO_FNAME+#define AUFS_XINO_TRUNC_INIT	64 /* blocks */+#define AUFS_XINO_TRUNC_STEP	4  /* blocks */+#define AUFS_DIRWH_DEF		3+#define AUFS_RDCACHE_DEF	10 /* seconds */+#define AUFS_RDCACHE_MAX	3600 /* seconds */+#define AUFS_RDBLK_DEF		512 /* bytes */+#define AUFS_RDHASH_DEF		32+#define AUFS_WKQ_NAME		AUFS_NAME "d"+#define AUFS_WKQ_PRE_NAME	AUFS_WKQ_NAME "_pre"+#define AUFS_MFS_DEF_SEC	30 /* seconds */+#define AUFS_MFS_MAX_SEC	3600 /* seconds */+#define AUFS_PLINK_WARN		100 /* number of plinks */++/* pseudo-link maintenace under /proc */+#define AUFS_PLINK_MAINT_NAME	"plink_maint"+#define AUFS_PLINK_MAINT_DIR	"fs/" AUFS_NAME+#define AUFS_PLINK_MAINT_PATH	AUFS_PLINK_MAINT_DIR "/" AUFS_PLINK_MAINT_NAME++#define AUFS_DIROPQ_NAME	AUFS_WH_PFX ".opq" /* whiteouted doubly */+#define AUFS_WH_DIROPQ		AUFS_WH_PFX AUFS_DIROPQ_NAME++#define AUFS_BASE_NAME		AUFS_WH_PFX AUFS_NAME+#define AUFS_PLINKDIR_NAME	AUFS_WH_PFX "plnk"+#define AUFS_ORPHDIR_NAME	AUFS_WH_PFX "orph"++/* doubly whiteouted */+#define AUFS_WH_BASE		AUFS_WH_PFX AUFS_BASE_NAME+#define AUFS_WH_PLINKDIR	AUFS_WH_PFX AUFS_PLINKDIR_NAME+#define AUFS_WH_ORPHDIR		AUFS_WH_PFX AUFS_ORPHDIR_NAME++/* branch permission */+#define AUFS_BRPERM_RW		"rw"+#define AUFS_BRPERM_RO		"ro"+#define AUFS_BRPERM_RR		"rr"+#define AUFS_BRPERM_WH		"wh"+#define AUFS_BRPERM_NLWH	"nolwh"+#define AUFS_BRPERM_ROWH	AUFS_BRPERM_RO "+" AUFS_BRPERM_WH+#define AUFS_BRPERM_RRWH	AUFS_BRPERM_RR "+" AUFS_BRPERM_WH+#define AUFS_BRPERM_RWNLWH	AUFS_BRPERM_RW "+" AUFS_BRPERM_NLWH++/* ---------------------------------------------------------------------- */++/* ioctl */+enum {+	/* readdir in userspace */+	AuCtl_RDU,+	AuCtl_RDU_INO,++	/* pathconf wrapper */+	AuCtl_WBR_FD+};++/* borrowed from linux/include/linux/kernel.h */+#ifndef ALIGN+#define ALIGN(x, a)		__ALIGN_MASK(x, (typeof(x))(a)-1)+#define __ALIGN_MASK(x, mask)	(((x)+(mask))&~(mask))+#endif++/* borrowed from linux/include/linux/compiler-gcc3.h */+#ifndef __aligned+#define __aligned(x)			__attribute__((aligned(x)))+#define __packed			__attribute__((packed))+#endif++struct au_rdu_cookie {+	__u64		h_pos;+	__s16		bindex;+	__u8		flags;+	__u8		pad;+	__u32		generation;+} __aligned(8);++struct au_rdu_ent {+	__u64		ino;+	__s16		bindex;+	__u8		type;+	__u8		nlen;+	__u8		wh;+	char		name[0];+} __aligned(8);++static inline int au_rdu_len(int nlen)+{+	/* include the terminating NULL */+	return ALIGN(sizeof(struct au_rdu_ent) + nlen + 1,+		     sizeof(__u64));+}++union au_rdu_ent_ul {+	struct au_rdu_ent __user	*e;+	__u64				ul;+};++enum {+	AufsCtlRduV_SZ,+	AufsCtlRduV_End+};++struct aufs_rdu {+	/* input */+	union {+		__u64		sz;	/* AuCtl_RDU */+		__u64		nent;	/* AuCtl_RDU_INO */+	};+	union au_rdu_ent_ul	ent;+	__u16			verify[AufsCtlRduV_End];++	/* input/output */+	__u32			blk;++	/* output */+	union au_rdu_ent_ul	tail;+	/* number of entries which were added in a single call */+	__u64			rent;+	__u8			full;+	__u8			shwh;++	struct au_rdu_cookie	cookie;+} __aligned(8);++#define AuCtlType		'A'+#define AUFS_CTL_RDU		_IOWR(AuCtlType, AuCtl_RDU, struct aufs_rdu)+#define AUFS_CTL_RDU_INO	_IOWR(AuCtlType, AuCtl_RDU_INO, struct aufs_rdu)+#define AUFS_CTL_WBR_FD		_IO(AuCtlType, AuCtl_WBR_FD)++#endif /* __AUFS_TYPE_H__ */diff -Nur linux-2.6.36.orig/include/linux/namei.h linux-2.6.36/include/linux/namei.h--- linux-2.6.36.orig/include/linux/namei.h	2010-10-20 22:30:22.000000000 +0200+++ linux-2.6.36/include/linux/namei.h	2011-01-10 19:52:38.000000000 +0100@@ -73,6 +73,9 @@ extern struct file *lookup_instantiate_filp(struct nameidata *nd, struct dentry *dentry, 		int (*open)(struct inode *, struct file *)); +extern struct dentry *lookup_hash(struct nameidata *nd);+extern int __lookup_one_len(const char *name, struct qstr *this,+			    struct dentry *base, int len); extern struct dentry *lookup_one_len(const char *, struct dentry *, int);  extern int follow_down(struct path *);diff -Nur linux-2.6.36.orig/include/linux/splice.h linux-2.6.36/include/linux/splice.h--- linux-2.6.36.orig/include/linux/splice.h	2010-10-20 22:30:22.000000000 +0200+++ linux-2.6.36/include/linux/splice.h	2011-01-10 19:52:38.000000000 +0100@@ -89,4 +89,10 @@ extern void splice_shrink_spd(struct pipe_inode_info *, 				struct splice_pipe_desc *); +extern long do_splice_from(struct pipe_inode_info *pipe, struct file *out,+			   loff_t *ppos, size_t len, unsigned int flags);+extern long do_splice_to(struct file *in, loff_t *ppos,+			 struct pipe_inode_info *pipe, size_t len,+			 unsigned int flags);+ #endif
 |