aufs2: Update to snapshot from 2009-11-29
svn path=/dists/trunk/linux-2.6/; revision=14739
This commit is contained in:
parent
0b341dcbb3
commit
bd182f9598
|
@ -41,6 +41,7 @@ linux-2.6 (2.6.32-1) UNRELEASED; urgency=low
|
|||
case they are also buggy
|
||||
* usbnet: Set link down initially for drivers that update link state
|
||||
(Closes: #444043)
|
||||
* aufs2: Update to snapshot from 2009-11-29
|
||||
|
||||
[ dann frazier ]
|
||||
* mac80211 (CVE-2009-4026, CVE-2009-4027):
|
||||
|
|
|
@ -1,15 +0,0 @@
|
|||
From: Ben Hutchings <ben@decadent.org.uk>
|
||||
Subject: [PATCH] aufs2: Remove incorrect static assertion
|
||||
|
||||
This should allow aufs2 to build on alpha.
|
||||
|
||||
--- a/fs/aufs/vdir.c
|
||||
+++ b/fs/aufs/vdir.c
|
||||
@@ -25,7 +25,6 @@
|
||||
|
||||
static unsigned int calc_size(int nlen)
|
||||
{
|
||||
- BUILD_BUG_ON(sizeof(ino_t) != sizeof(long));
|
||||
return ALIGN(sizeof(struct au_vdir_de) + nlen, sizeof(ino_t));
|
||||
}
|
||||
|
|
@ -242,10 +242,10 @@ index 0000000..96307bb
|
|||
+#endif /* __AUFS_H__ */
|
||||
diff --git a/fs/aufs/branch.c b/fs/aufs/branch.c
|
||||
new file mode 100644
|
||||
index 0000000..102786d
|
||||
index 0000000..bb7ad86
|
||||
--- /dev/null
|
||||
+++ b/fs/aufs/branch.c
|
||||
@@ -0,0 +1,970 @@
|
||||
@@ -0,0 +1,988 @@
|
||||
+/*
|
||||
+ * Copyright (C) 2005-2009 Junjiro R. Okajima
|
||||
+ *
|
||||
|
@ -269,6 +269,7 @@ index 0000000..102786d
|
|||
+ */
|
||||
+
|
||||
+#include <linux/file.h>
|
||||
+#include <linux/statfs.h>
|
||||
+#include "aufs.h"
|
||||
+
|
||||
+/*
|
||||
|
@ -544,7 +545,9 @@ index 0000000..102786d
|
|||
+ int perm, struct path *path)
|
||||
+{
|
||||
+ int err;
|
||||
+ struct kstatfs kst;
|
||||
+ struct au_wbr *wbr;
|
||||
+ struct dentry *h_dentry;
|
||||
+
|
||||
+ wbr = br->br_wbr;
|
||||
+ au_rw_init(&wbr->wbr_wh_rwsem);
|
||||
|
@ -552,8 +555,23 @@ index 0000000..102786d
|
|||
+ atomic_set(&wbr->wbr_wh_running, 0);
|
||||
+ wbr->wbr_bytes = 0;
|
||||
+
|
||||
+ err = au_br_init_wh(sb, br, perm, path->dentry);
|
||||
+ /*
|
||||
+ * a limit for rmdir/rename a dir
|
||||
+ * cf. AUFS_MAX_NAMELEN in include/linux/aufs_type.h
|
||||
+ */
|
||||
+ h_dentry = path->dentry;
|
||||
+ err = vfs_statfs(h_dentry, &kst);
|
||||
+ if (unlikely(err))
|
||||
+ goto out;
|
||||
+ err = -EINVAL;
|
||||
+ if (kst.f_namelen >= NAME_MAX)
|
||||
+ err = au_br_init_wh(sb, br, perm, h_dentry);
|
||||
+ else
|
||||
+ pr_err("%.*s(%s), unsupported namelen %ld\n",
|
||||
+ AuDLNPair(h_dentry), au_sbtype(h_dentry->d_sb),
|
||||
+ kst.f_namelen);
|
||||
+
|
||||
+ out:
|
||||
+ return err;
|
||||
+}
|
||||
+
|
||||
|
@ -4032,10 +4050,10 @@ index 0000000..312e1af
|
|||
+#endif /* __AUFS_DEBUG_H__ */
|
||||
diff --git a/fs/aufs/dentry.c b/fs/aufs/dentry.c
|
||||
new file mode 100644
|
||||
index 0000000..8bf218b
|
||||
index 0000000..28525d4
|
||||
--- /dev/null
|
||||
+++ b/fs/aufs/dentry.c
|
||||
@@ -0,0 +1,879 @@
|
||||
@@ -0,0 +1,880 @@
|
||||
+/*
|
||||
+ * Copyright (C) 2005-2009 Junjiro R. Okajima
|
||||
+ *
|
||||
|
@ -4108,6 +4126,7 @@ index 0000000..8bf218b
|
|||
+ path_put(&h_nd.path);
|
||||
+ }
|
||||
+
|
||||
+ AuTraceErrPtr(h_dentry);
|
||||
+ return h_dentry;
|
||||
+}
|
||||
+
|
||||
|
@ -7011,10 +7030,10 @@ index 0000000..5b5c2c4
|
|||
+}
|
||||
diff --git a/fs/aufs/f_op.c b/fs/aufs/f_op.c
|
||||
new file mode 100644
|
||||
index 0000000..1065559
|
||||
index 0000000..7601012
|
||||
--- /dev/null
|
||||
+++ b/fs/aufs/f_op.c
|
||||
@@ -0,0 +1,826 @@
|
||||
@@ -0,0 +1,827 @@
|
||||
+/*
|
||||
+ * Copyright (C) 2005-2009 Junjiro R. Okajima
|
||||
+ *
|
||||
|
@ -7515,7 +7534,8 @@ index 0000000..1065559
|
|||
+ if (unlikely(err))
|
||||
+ goto out;
|
||||
+
|
||||
+ vm_ops = vma->vm_ops;
|
||||
+ /* oops, it became 'const' */
|
||||
+ vm_ops = (struct vm_operations_struct *)vma->vm_ops;
|
||||
+ err = do_munmap(current->mm, vma->vm_start,
|
||||
+ vma->vm_end - vma->vm_start);
|
||||
+ if (unlikely(err)) {
|
||||
|
@ -7843,10 +7863,10 @@ index 0000000..1065559
|
|||
+};
|
||||
diff --git a/fs/aufs/file.c b/fs/aufs/file.c
|
||||
new file mode 100644
|
||||
index 0000000..5821834
|
||||
index 0000000..a4f33aa
|
||||
--- /dev/null
|
||||
+++ b/fs/aufs/file.c
|
||||
@@ -0,0 +1,587 @@
|
||||
@@ -0,0 +1,591 @@
|
||||
+/*
|
||||
+ * Copyright (C) 2005-2009 Junjiro R. Okajima
|
||||
+ *
|
||||
|
@ -8412,6 +8432,9 @@ index 0000000..5821834
|
|||
+ read_descriptor_t *desc,
|
||||
+ unsigned long from)
|
||||
+{ AuUnsupport(); return 0; }
|
||||
+static int aufs_error_remove_page(struct address_space *mapping,
|
||||
+ struct page *page)
|
||||
+{ AuUnsupport(); return 0; }
|
||||
+#endif /* CONFIG_AUFS_DEBUG */
|
||||
+
|
||||
+struct address_space_operations aufs_aop = {
|
||||
|
@ -8431,7 +8454,8 @@ index 0000000..5821834
|
|||
+ .get_xip_mem = aufs_get_xip_mem, /* todo */
|
||||
+ .migratepage = aufs_migratepage,
|
||||
+ .launder_page = aufs_launder_page,
|
||||
+ .is_partially_uptodate = aufs_is_partially_uptodate
|
||||
+ .is_partially_uptodate = aufs_is_partially_uptodate,
|
||||
+ .error_remove_page = aufs_error_remove_page
|
||||
+#endif /* CONFIG_AUFS_DEBUG */
|
||||
+};
|
||||
diff --git a/fs/aufs/file.h b/fs/aufs/file.h
|
||||
|
@ -10891,10 +10915,10 @@ index 0000000..a7f3bc7
|
|||
+};
|
||||
diff --git a/fs/aufs/i_op_add.c b/fs/aufs/i_op_add.c
|
||||
new file mode 100644
|
||||
index 0000000..39b7a48
|
||||
index 0000000..813890f
|
||||
--- /dev/null
|
||||
+++ b/fs/aufs/i_op_add.c
|
||||
@@ -0,0 +1,649 @@
|
||||
@@ -0,0 +1,658 @@
|
||||
+/*
|
||||
+ * Copyright (C) 2005-2009 Junjiro R. Okajima
|
||||
+ *
|
||||
|
@ -10990,6 +11014,10 @@ index 0000000..39b7a48
|
|||
+ struct dentry *h_dentry;
|
||||
+ struct inode *h_inode;
|
||||
+
|
||||
+ err = -ENAMETOOLONG;
|
||||
+ if (unlikely(dentry->d_name.len > AUFS_MAX_NAMELEN))
|
||||
+ goto out;
|
||||
+
|
||||
+ h_dentry = au_h_dptr(dentry, bindex);
|
||||
+ h_inode = h_dentry->d_inode;
|
||||
+ if (!dentry->d_inode) {
|
||||
|
@ -11020,6 +11048,7 @@ index 0000000..39b7a48
|
|||
+ err = 0;
|
||||
+
|
||||
+ out:
|
||||
+ AuTraceErr(err);
|
||||
+ return err;
|
||||
+}
|
||||
+
|
||||
|
@ -11040,6 +11069,8 @@ index 0000000..39b7a48
|
|||
+ unsigned int udba;
|
||||
+ aufs_bindex_t bcpup;
|
||||
+
|
||||
+ AuDbg("%.*s\n", AuDLNPair(dentry));
|
||||
+
|
||||
+ err = au_wr_dir(dentry, src_dentry, wr_dir_args);
|
||||
+ bcpup = err;
|
||||
+ wh_dentry = ERR_PTR(err);
|
||||
|
@ -11056,13 +11087,14 @@ index 0000000..39b7a48
|
|||
+
|
||||
+ h_parent = au_pinned_h_parent(pin);
|
||||
+ if (udba != AuOpt_UDBA_NONE
|
||||
+ && au_dbstart(dentry) == bcpup) {
|
||||
+ && au_dbstart(dentry) == bcpup)
|
||||
+ err = au_may_add(dentry, bcpup, h_parent,
|
||||
+ au_ftest_wrdir(wr_dir_args->flags, ISDIR));
|
||||
+ wh_dentry = ERR_PTR(err);
|
||||
+ if (unlikely(err))
|
||||
+ goto out_unpin;
|
||||
+ }
|
||||
+ else if (unlikely(dentry->d_name.len > AUFS_MAX_NAMELEN))
|
||||
+ err = -ENAMETOOLONG;
|
||||
+ wh_dentry = ERR_PTR(err);
|
||||
+ if (unlikely(err))
|
||||
+ goto out_unpin;
|
||||
+
|
||||
+ br = au_sbr(sb, bcpup);
|
||||
+ if (dt) {
|
||||
|
@ -11122,6 +11154,7 @@ index 0000000..39b7a48
|
|||
+ .flags = AuWrDir_ADD_ENTRY
|
||||
+ };
|
||||
+
|
||||
+ AuDbg("%.*s\n", AuDLNPair(dentry));
|
||||
+ IMustLock(dir);
|
||||
+
|
||||
+ parent = dentry->d_parent; /* dir inode is locked */
|
||||
|
@ -11546,10 +11579,10 @@ index 0000000..39b7a48
|
|||
+}
|
||||
diff --git a/fs/aufs/i_op_del.c b/fs/aufs/i_op_del.c
|
||||
new file mode 100644
|
||||
index 0000000..c0ee77d
|
||||
index 0000000..d47ddfb
|
||||
--- /dev/null
|
||||
+++ b/fs/aufs/i_op_del.c
|
||||
@@ -0,0 +1,468 @@
|
||||
@@ -0,0 +1,470 @@
|
||||
+/*
|
||||
+ * Copyright (C) 2005-2009 Junjiro R. Okajima
|
||||
+ *
|
||||
|
@ -11801,6 +11834,7 @@ index 0000000..c0ee77d
|
|||
+ }
|
||||
+
|
||||
+ out:
|
||||
+ AuTraceErr(err);
|
||||
+ return err;
|
||||
+}
|
||||
+
|
||||
|
@ -12016,14 +12050,15 @@ index 0000000..c0ee77d
|
|||
+ out_unlock:
|
||||
+ aufs_read_unlock(dentry, AuLock_DW);
|
||||
+ out:
|
||||
+ AuTraceErr(err);
|
||||
+ return err;
|
||||
+}
|
||||
diff --git a/fs/aufs/i_op_ren.c b/fs/aufs/i_op_ren.c
|
||||
new file mode 100644
|
||||
index 0000000..9a81ffb
|
||||
index 0000000..b107f93
|
||||
--- /dev/null
|
||||
+++ b/fs/aufs/i_op_ren.c
|
||||
@@ -0,0 +1,957 @@
|
||||
@@ -0,0 +1,961 @@
|
||||
+/*
|
||||
+ * Copyright (C) 2005-2009 Junjiro R. Okajima
|
||||
+ *
|
||||
|
@ -12601,6 +12636,7 @@ index 0000000..9a81ffb
|
|||
+ out:
|
||||
+ if (unlikely(err == -ENOENT || err == -EEXIST))
|
||||
+ err = -EIO;
|
||||
+ AuTraceErr(err);
|
||||
+ return err;
|
||||
+}
|
||||
+
|
||||
|
@ -12849,6 +12885,7 @@ index 0000000..9a81ffb
|
|||
+ /* reduce stack space */
|
||||
+ struct au_ren_args *a;
|
||||
+
|
||||
+ AuDbg("%.*s, %.*s\n", AuDLNPair(_src_dentry), AuDLNPair(_dst_dentry));
|
||||
+ IMustLock(_src_dir);
|
||||
+ IMustLock(_dst_dir);
|
||||
+
|
||||
|
@ -12933,11 +12970,12 @@ index 0000000..9a81ffb
|
|||
+ if (unlikely(err))
|
||||
+ goto out_children;
|
||||
+
|
||||
+ if (!au_opt_test(au_mntflags(a->dst_dir->i_sb), UDBA_NONE)) {
|
||||
+ if (!au_opt_test(au_mntflags(a->dst_dir->i_sb), UDBA_NONE))
|
||||
+ err = au_may_ren(a);
|
||||
+ if (unlikely(err))
|
||||
+ goto out_hdir;
|
||||
+ }
|
||||
+ else if (unlikely(a->dst_dentry->d_name.len > AUFS_MAX_NAMELEN))
|
||||
+ err = -ENAMETOOLONG;
|
||||
+ if (unlikely(err))
|
||||
+ goto out_hdir;
|
||||
+
|
||||
+ /* store timestamps to be revertible */
|
||||
+ au_ren_dt(a);
|
||||
|
@ -12979,6 +13017,7 @@ index 0000000..9a81ffb
|
|||
+ au_whtmp_rmdir_free(a->thargs);
|
||||
+ kfree(a);
|
||||
+ out:
|
||||
+ AuTraceErr(err);
|
||||
+ return err;
|
||||
+}
|
||||
diff --git a/fs/aufs/iinfo.c b/fs/aufs/iinfo.c
|
||||
|
@ -14366,10 +14405,10 @@ index 0000000..5a0fd87
|
|||
+#endif /* __AUFS_LOOP_H__ */
|
||||
diff --git a/fs/aufs/magic.mk b/fs/aufs/magic.mk
|
||||
new file mode 100644
|
||||
index 0000000..83d613c
|
||||
index 0000000..1e55221
|
||||
--- /dev/null
|
||||
+++ b/fs/aufs/magic.mk
|
||||
@@ -0,0 +1,52 @@
|
||||
@@ -0,0 +1,48 @@
|
||||
+
|
||||
+# defined in ${srctree}/fs/fuse/inode.c
|
||||
+# tristate
|
||||
|
@ -14389,10 +14428,6 @@ index 0000000..83d613c
|
|||
+ccflags-y += -DDLMFS_MAGIC=0x76a9f425
|
||||
+endif
|
||||
+
|
||||
+# defined in ${srctree}/fs/ramfs/inode.c
|
||||
+# always true
|
||||
+ccflags-y += -DRAMFS_MAGIC=0x858458f6
|
||||
+
|
||||
+# defined in ${srctree}/fs/cifs/cifsfs.c
|
||||
+# tristate
|
||||
+ifdef CONFIG_CIFS_FS
|
||||
|
@ -14688,10 +14723,10 @@ index 0000000..cea7bc7
|
|||
+#endif /* __AUFS_MODULE_H__ */
|
||||
diff --git a/fs/aufs/opts.c b/fs/aufs/opts.c
|
||||
new file mode 100644
|
||||
index 0000000..7e936b8
|
||||
index 0000000..4d9b60f
|
||||
--- /dev/null
|
||||
+++ b/fs/aufs/opts.c
|
||||
@@ -0,0 +1,1546 @@
|
||||
@@ -0,0 +1,1549 @@
|
||||
+/*
|
||||
+ * Copyright (C) 2005-2009 Junjiro R. Okajima
|
||||
+ *
|
||||
|
@ -14877,7 +14912,7 @@ index 0000000..7e936b8
|
|||
+ {AuBrPerm_RO, NULL}
|
||||
+};
|
||||
+
|
||||
+static int br_perm_val(char *perm)
|
||||
+static int noinline_for_stack br_perm_val(char *perm)
|
||||
+{
|
||||
+ int val;
|
||||
+ substring_t args[MAX_OPT_ARGS];
|
||||
|
@ -14902,7 +14937,7 @@ index 0000000..7e936b8
|
|||
+ {-1, NULL}
|
||||
+};
|
||||
+
|
||||
+static int udba_val(char *str)
|
||||
+static int noinline_for_stack udba_val(char *str)
|
||||
+{
|
||||
+ substring_t args[MAX_OPT_ARGS];
|
||||
+
|
||||
|
@ -14939,7 +14974,8 @@ index 0000000..7e936b8
|
|||
+ * gave up calling memparse() since it uses simple_strtoull() instead of
|
||||
+ * strict_...().
|
||||
+ */
|
||||
+static int au_match_ull(substring_t *s, unsigned long long *result)
|
||||
+static int noinline_for_stack
|
||||
+au_match_ull(substring_t *s, unsigned long long *result)
|
||||
+{
|
||||
+ int err;
|
||||
+ unsigned int len;
|
||||
|
@ -14988,7 +15024,8 @@ index 0000000..7e936b8
|
|||
+ return err;
|
||||
+}
|
||||
+
|
||||
+static int au_wbr_create_val(char *str, struct au_opt_wbr_create *create)
|
||||
+static int noinline_for_stack
|
||||
+au_wbr_create_val(char *str, struct au_opt_wbr_create *create)
|
||||
+{
|
||||
+ int err, e;
|
||||
+ substring_t args[MAX_OPT_ARGS];
|
||||
|
@ -15040,7 +15077,7 @@ index 0000000..7e936b8
|
|||
+ {-1, NULL}
|
||||
+};
|
||||
+
|
||||
+static int au_wbr_copyup_val(char *str)
|
||||
+static int noinline_for_stack au_wbr_copyup_val(char *str)
|
||||
+{
|
||||
+ substring_t args[MAX_OPT_ARGS];
|
||||
+
|
||||
|
@ -15335,7 +15372,8 @@ index 0000000..7e936b8
|
|||
+}
|
||||
+#endif
|
||||
+
|
||||
+static int au_opts_parse_mod(struct au_opt_mod *mod, substring_t args[])
|
||||
+static int noinline_for_stack
|
||||
+au_opts_parse_mod(struct au_opt_mod *mod, substring_t args[])
|
||||
+{
|
||||
+ int err;
|
||||
+ struct path path;
|
||||
|
@ -15418,10 +15456,10 @@ index 0000000..7e936b8
|
|||
+ return err;
|
||||
+}
|
||||
+
|
||||
+static
|
||||
+int au_opts_parse_xino_itrunc_path(struct super_block *sb,
|
||||
+ struct au_opt_xino_itrunc *xino_itrunc,
|
||||
+ substring_t args[])
|
||||
+static int noinline_for_stack
|
||||
+au_opts_parse_xino_itrunc_path(struct super_block *sb,
|
||||
+ struct au_opt_xino_itrunc *xino_itrunc,
|
||||
+ substring_t args[])
|
||||
+{
|
||||
+ int err;
|
||||
+ aufs_bindex_t bend, bindex;
|
||||
|
@ -17712,7 +17750,7 @@ index 0000000..bcbbd9a
|
|||
+#endif /* __AUFS_SPL_H__ */
|
||||
diff --git a/fs/aufs/super.c b/fs/aufs/super.c
|
||||
new file mode 100644
|
||||
index 0000000..6124d17
|
||||
index 0000000..10d30f2
|
||||
--- /dev/null
|
||||
+++ b/fs/aufs/super.c
|
||||
@@ -0,0 +1,876 @@
|
||||
|
@ -18069,7 +18107,7 @@ index 0000000..6124d17
|
|||
+
|
||||
+ if (!err) {
|
||||
+ buf->f_type = AUFS_SUPER_MAGIC;
|
||||
+ buf->f_namelen -= AUFS_WH_PFX_LEN;
|
||||
+ buf->f_namelen = AUFS_MAX_NAMELEN;
|
||||
+ memset(&buf->f_fsid, 0, sizeof(buf->f_fsid));
|
||||
+ }
|
||||
+ /* buf->f_bsize = buf->f_blocks = buf->f_bfree = buf->f_bavail = -1; */
|
||||
|
@ -19596,10 +19634,10 @@ index 0000000..3db9d84
|
|||
+}
|
||||
diff --git a/fs/aufs/vdir.c b/fs/aufs/vdir.c
|
||||
new file mode 100644
|
||||
index 0000000..99fd839
|
||||
index 0000000..50a3caf
|
||||
--- /dev/null
|
||||
+++ b/fs/aufs/vdir.c
|
||||
@@ -0,0 +1,879 @@
|
||||
@@ -0,0 +1,878 @@
|
||||
+/*
|
||||
+ * Copyright (C) 2005-2009 Junjiro R. Okajima
|
||||
+ *
|
||||
|
@ -19627,7 +19665,6 @@ index 0000000..99fd839
|
|||
+
|
||||
+static unsigned int calc_size(int nlen)
|
||||
+{
|
||||
+ BUILD_BUG_ON(sizeof(ino_t) != sizeof(long));
|
||||
+ return ALIGN(sizeof(struct au_vdir_de) + nlen, sizeof(ino_t));
|
||||
+}
|
||||
+
|
||||
|
@ -20481,10 +20518,10 @@ index 0000000..99fd839
|
|||
+}
|
||||
diff --git a/fs/aufs/vfsub.c b/fs/aufs/vfsub.c
|
||||
new file mode 100644
|
||||
index 0000000..ab0a419
|
||||
index 0000000..34c0d95
|
||||
--- /dev/null
|
||||
+++ b/fs/aufs/vfsub.c
|
||||
@@ -0,0 +1,751 @@
|
||||
@@ -0,0 +1,753 @@
|
||||
+/*
|
||||
+ * Copyright (C) 2005-2009 Junjiro R. Okajima
|
||||
+ *
|
||||
|
@ -20593,6 +20630,7 @@ index 0000000..ab0a419
|
|||
+ vfsub_update_h_iattr(&path, /*did*/NULL); /*ignore*/
|
||||
+
|
||||
+ out:
|
||||
+ AuTraceErrPtr(path.dentry);
|
||||
+ return path.dentry;
|
||||
+}
|
||||
+
|
||||
|
@ -20608,6 +20646,7 @@ index 0000000..ab0a419
|
|||
+ if (!IS_ERR(path.dentry) && path.dentry->d_inode)
|
||||
+ vfsub_update_h_iattr(&path, /*did*/NULL); /*ignore*/
|
||||
+
|
||||
+ AuTraceErrPtr(path.dentry);
|
||||
+ return path.dentry;
|
||||
+}
|
||||
+
|
||||
|
@ -22063,10 +22102,10 @@ index 0000000..05a8c1e
|
|||
+};
|
||||
diff --git a/fs/aufs/whout.c b/fs/aufs/whout.c
|
||||
new file mode 100644
|
||||
index 0000000..177e1dd
|
||||
index 0000000..b0ee925
|
||||
--- /dev/null
|
||||
+++ b/fs/aufs/whout.c
|
||||
@@ -0,0 +1,1053 @@
|
||||
@@ -0,0 +1,1056 @@
|
||||
+/*
|
||||
+ * Copyright (C) 2005-2009 Junjiro R. Okajima
|
||||
+ *
|
||||
|
@ -22190,19 +22229,21 @@ index 0000000..177e1dd
|
|||
+struct dentry *au_whtmp_lkup(struct dentry *h_parent, struct au_branch *br,
|
||||
+ struct qstr *prefix)
|
||||
+{
|
||||
+#define HEX_LEN 4
|
||||
+ struct dentry *dentry;
|
||||
+ int i;
|
||||
+ /* cf. AUFS_MAX_NAMELEN in include/linux/aufs_type.h */
|
||||
+ char defname[AUFS_WH_PFX_LEN * 2 + DNAME_INLINE_LEN_MIN + 1
|
||||
+ + HEX_LEN + 1], *name, *p;
|
||||
+ + AUFS_WH_TMP_LEN + 1], *name, *p;
|
||||
+ static unsigned short cnt;
|
||||
+ struct qstr qs;
|
||||
+
|
||||
+ BUILD_BUG_ON(sizeof(cnt) * 2 > AUFS_WH_TMP_LEN);
|
||||
+
|
||||
+ name = defname;
|
||||
+ qs.len = sizeof(defname) - DNAME_INLINE_LEN_MIN + prefix->len - 1;
|
||||
+ if (unlikely(prefix->len > DNAME_INLINE_LEN_MIN)) {
|
||||
+ dentry = ERR_PTR(-ENAMETOOLONG);
|
||||
+ if (unlikely(qs.len >= PATH_MAX))
|
||||
+ if (unlikely(qs.len > NAME_MAX))
|
||||
+ goto out;
|
||||
+ dentry = ERR_PTR(-ENOMEM);
|
||||
+ name = kmalloc(qs.len + 1, GFP_NOFS);
|
||||
|
@ -22216,11 +22257,11 @@ index 0000000..177e1dd
|
|||
+ memcpy(p, prefix->name, prefix->len);
|
||||
+ p += prefix->len;
|
||||
+ *p++ = '.';
|
||||
+ AuDebugOn(name + qs.len + 1 - p <= HEX_LEN);
|
||||
+ AuDebugOn(name + qs.len + 1 - p <= AUFS_WH_TMP_LEN);
|
||||
+
|
||||
+ qs.name = name;
|
||||
+ for (i = 0; i < 3; i++) {
|
||||
+ sprintf(p, "%.*d", HEX_LEN, cnt++);
|
||||
+ sprintf(p, "%.*d", AUFS_WH_TMP_LEN, cnt++);
|
||||
+ dentry = au_sio_lkup_one(&qs, h_parent, br);
|
||||
+ if (IS_ERR(dentry) || !dentry->d_inode)
|
||||
+ goto out_name;
|
||||
|
@ -22235,8 +22276,8 @@ index 0000000..177e1dd
|
|||
+ if (name != defname)
|
||||
+ kfree(name);
|
||||
+ out:
|
||||
+ AuTraceErrPtr(dentry);
|
||||
+ return dentry;
|
||||
+#undef HEX_LEN
|
||||
+}
|
||||
+
|
||||
+/*
|
||||
|
@ -22266,6 +22307,7 @@ index 0000000..177e1dd
|
|||
+ dput(h_path.dentry);
|
||||
+
|
||||
+ out:
|
||||
+ AuTraceErr(err);
|
||||
+ return err;
|
||||
+}
|
||||
+
|
||||
|
@ -24778,10 +24820,10 @@ index 0000000..b401aa9
|
|||
+}
|
||||
diff --git a/include/linux/aufs_type.h b/include/linux/aufs_type.h
|
||||
new file mode 100644
|
||||
index 0000000..f34d9ed
|
||||
index 0000000..b4fee85
|
||||
--- /dev/null
|
||||
+++ b/include/linux/aufs_type.h
|
||||
@@ -0,0 +1,184 @@
|
||||
@@ -0,0 +1,191 @@
|
||||
+/*
|
||||
+ * Copyright (C) 2005-2009 Junjiro R. Okajima
|
||||
+ *
|
||||
|
@ -24804,9 +24846,10 @@ index 0000000..f34d9ed
|
|||
+#define __AUFS_TYPE_H__
|
||||
+
|
||||
+#include <linux/ioctl.h>
|
||||
+#include <linux/limits.h>
|
||||
+#include <linux/types.h>
|
||||
+
|
||||
+#define AUFS_VERSION "2-standalone.tree-31-20091012"
|
||||
+#define AUFS_VERSION "2-standalone.tree-20091130"
|
||||
+
|
||||
+/* todo? move this to linux-2.6.19/include/magic.h */
|
||||
+#define AUFS_SUPER_MAGIC ('a' << 24 | 'u' << 16 | 'f' << 8 | 's')
|
||||
|
@ -24843,6 +24886,12 @@ index 0000000..f34d9ed
|
|||
+
|
||||
+#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 */
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
aufs2 base patch for linux-2.6.31
|
||||
aufs2 base patch for linux-2.6.
|
||||
|
||||
diff --git a/fs/namei.c b/fs/namei.c
|
||||
index 1f13751..b49c2af 100644
|
||||
index d11f404..7d28f56 100644
|
||||
--- a/fs/namei.c
|
||||
+++ b/fs/namei.c
|
||||
@@ -1219,7 +1219,7 @@ out:
|
||||
|
@ -23,10 +23,10 @@ index 1f13751..b49c2af 100644
|
|||
{
|
||||
unsigned long hash;
|
||||
diff --git a/fs/splice.c b/fs/splice.c
|
||||
index 73766d2..0cb8873 100644
|
||||
index 7394e9e..77184f0 100644
|
||||
--- a/fs/splice.c
|
||||
+++ b/fs/splice.c
|
||||
@@ -1057,8 +1057,8 @@ EXPORT_SYMBOL(generic_splice_sendpage);
|
||||
@@ -1051,8 +1051,8 @@ EXPORT_SYMBOL_GPL(generic_splice_sendpage);
|
||||
/*
|
||||
* Attempt to initiate a splice from pipe to file.
|
||||
*/
|
||||
|
@ -37,7 +37,7 @@ index 73766d2..0cb8873 100644
|
|||
{
|
||||
ssize_t (*splice_write)(struct pipe_inode_info *, struct file *,
|
||||
loff_t *, size_t, unsigned int);
|
||||
@@ -1084,9 +1084,9 @@ static long do_splice_from(struct pipe_inode_info *pipe, struct file *out,
|
||||
@@ -1078,9 +1078,9 @@ static long do_splice_from(struct pipe_inode_info *pipe, struct file *out,
|
||||
/*
|
||||
* Attempt to initiate a splice from a file to a pipe.
|
||||
*/
|
||||
|
@ -51,7 +51,7 @@ index 73766d2..0cb8873 100644
|
|||
ssize_t (*splice_read)(struct file *, loff_t *,
|
||||
struct pipe_inode_info *, size_t, unsigned int);
|
||||
diff --git a/include/linux/namei.h b/include/linux/namei.h
|
||||
index d870ae2..a49900e 100644
|
||||
index ec0f607..1438153 100644
|
||||
--- a/include/linux/namei.h
|
||||
+++ b/include/linux/namei.h
|
||||
@@ -75,6 +75,9 @@ extern struct file *lookup_instantiate_filp(struct nameidata *nd, struct dentry
|
||||
|
|
|
@ -1,12 +1,10 @@
|
|||
aufs2 kbuild patch for linux-2.6.31
|
||||
|
||||
Trivial update for 2.6.32 by Ben Hutchings <ben@decadent.org.uk>
|
||||
aufs2 kbuild patch for linux-2.6.
|
||||
|
||||
diff --git a/fs/Kconfig b/fs/Kconfig
|
||||
index 0e7da7b..a4194da 100644
|
||||
index 64d44ef..3e1f2f0 100644
|
||||
--- a/fs/Kconfig
|
||||
+++ b/fs/Kconfig
|
||||
@@ -187,6 +187,7 @@ source "fs/sysv/Kconfig"
|
||||
@@ -188,6 +188,7 @@ source "fs/romfs/Kconfig"
|
||||
source "fs/sysv/Kconfig"
|
||||
source "fs/ufs/Kconfig"
|
||||
source "fs/exofs/Kconfig"
|
||||
|
@ -24,7 +22,7 @@ index af6d047..dba1ce1 100644
|
|||
obj-$(CONFIG_EXOFS_FS) += exofs/
|
||||
+obj-$(CONFIG_AUFS_FS) += aufs/
|
||||
diff --git a/include/linux/Kbuild b/include/linux/Kbuild
|
||||
index 334a359..2a88f69 100644
|
||||
index 1feed71..4ceebc7 100644
|
||||
--- a/include/linux/Kbuild
|
||||
+++ b/include/linux/Kbuild
|
||||
@@ -34,6 +34,7 @@ header-y += atmppp.h
|
||||
|
|
|
@ -1,12 +1,10 @@
|
|||
aufs2 standalone patch for linux-2.6.31
|
||||
|
||||
Trivial update for 2.6.32 by Ben Hutchings <ben@decadent.org.uk>
|
||||
aufs2 standalone patch for linux-2.6.
|
||||
|
||||
diff --git a/fs/namei.c b/fs/namei.c
|
||||
index b49c2af..4521c70 100644
|
||||
index 7d28f56..0f6117c 100644
|
||||
--- a/fs/namei.c
|
||||
+++ b/fs/namei.c
|
||||
@@ -337,6 +337,7 @@ int deny_write_access(struct file * file)
|
||||
@@ -350,6 +350,7 @@ int deny_write_access(struct file * file)
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -31,7 +29,7 @@ index b49c2af..4521c70 100644
|
|||
/**
|
||||
* lookup_one_len - filesystem helper to lookup single pathname component
|
||||
diff --git a/fs/namespace.c b/fs/namespace.c
|
||||
index 7230787..8269b66 100644
|
||||
index bdc3cb4..a2cadcf 100644
|
||||
--- a/fs/namespace.c
|
||||
+++ b/fs/namespace.c
|
||||
@@ -39,6 +39,7 @@
|
||||
|
@ -43,10 +41,10 @@ index 7230787..8269b66 100644
|
|||
static int event;
|
||||
static DEFINE_IDA(mnt_id_ida);
|
||||
diff --git a/fs/open.c b/fs/open.c
|
||||
index dd98e80..04b9aad 100644
|
||||
index 4f01e06..ef09031 100644
|
||||
--- a/fs/open.c
|
||||
+++ b/fs/open.c
|
||||
@@ -221,6 +221,7 @@ int do_truncate(struct dentry *dentry, loff_t length, unsigned int time_attrs,
|
||||
@@ -223,6 +223,7 @@ int do_truncate(struct dentry *dentry, loff_t length, unsigned int time_attrs,
|
||||
mutex_unlock(&dentry->d_inode->i_mutex);
|
||||
return ret;
|
||||
}
|
||||
|
@ -55,10 +53,10 @@ index dd98e80..04b9aad 100644
|
|||
static long do_sys_truncate(const char __user *pathname, loff_t length)
|
||||
{
|
||||
diff --git a/fs/splice.c b/fs/splice.c
|
||||
index 0cb8873..0e7b0b9 100644
|
||||
index 77184f0..8479d95 100644
|
||||
--- a/fs/splice.c
|
||||
+++ b/fs/splice.c
|
||||
@@ -1080,6 +1080,7 @@ long do_splice_from(struct pipe_inode_info *pipe, struct file *out,
|
||||
@@ -1074,6 +1074,7 @@ long do_splice_from(struct pipe_inode_info *pipe, struct file *out,
|
||||
|
||||
return splice_write(pipe, out, ppos, len, flags);
|
||||
}
|
||||
|
@ -66,7 +64,7 @@ index 0cb8873..0e7b0b9 100644
|
|||
|
||||
/*
|
||||
* Attempt to initiate a splice from a file to a pipe.
|
||||
@@ -1105,6 +1106,7 @@ long do_splice_to(struct file *in, loff_t *ppos,
|
||||
@@ -1099,6 +1100,7 @@ long do_splice_to(struct file *in, loff_t *ppos,
|
||||
|
||||
return splice_read(in, ppos, pipe, len, flags);
|
||||
}
|
||||
|
@ -75,10 +73,10 @@ index 0cb8873..0e7b0b9 100644
|
|||
/**
|
||||
* splice_direct_to_actor - splices data directly between two non-pipes
|
||||
diff --git a/security/device_cgroup.c b/security/device_cgroup.c
|
||||
index b8186ba..42208d8 100644
|
||||
index 6cf8fd2..008e0d8 100644
|
||||
--- a/security/device_cgroup.c
|
||||
+++ b/security/device_cgroup.c
|
||||
@@ -513,6 +513,7 @@ found:
|
||||
@@ -514,6 +514,7 @@ found:
|
||||
|
||||
return -EPERM;
|
||||
}
|
||||
|
@ -99,7 +97,7 @@ index b85e61b..a23fad4 100644
|
|||
/**
|
||||
* ima_bprm_check - based on policy, collect/store measurement.
|
||||
diff --git a/security/security.c b/security/security.c
|
||||
index dc7674f..b309f88 100644
|
||||
index c4c6732..854d15c 100644
|
||||
--- a/security/security.c
|
||||
+++ b/security/security.c
|
||||
@@ -386,6 +386,7 @@ int security_path_mkdir(struct path *path, struct dentry *dentry, int mode)
|
||||
|
|
|
@ -24,7 +24,6 @@
|
|||
+ features/all/aufs2/aufs2-add.patch
|
||||
# mark as staging/crap
|
||||
+ features/all/aufs2/mark-as-staging.patch
|
||||
+ bugfix/all/aufs2-remove-incorrect-static-assertion.patch
|
||||
|
||||
# content of src/ from speakup package; generated with:
|
||||
# diff -ur --unidirectional-new-file nonexistent src | filterdiff --strip=1 --addoldprefix=a/drivers/staging/speakup/ --addnewprefix=b/drivers/staging/speakup/
|
||||
|
|
Loading…
Reference in New Issue