|
@@ -1,240 +0,0 @@
|
|
|
-diff -Nur linux-2.6.36.orig/include/linux/Kbuild linux-2.6.36/include/linux/Kbuild
|
|
|
|
|
|
-+++ 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.h
|
|
|
-diff -Nur linux-2.6.36.orig/include/linux/aufs_type.h linux-2.6.36/include/linux/aufs_type.h
|
|
|
|
|
|
-+++ 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/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/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
|
|
|
-
|