packages: kernel/kernel.spec, kernel/kernel-aufs2.patch - updated aufs2
arekm
arekm at pld-linux.org
Sat Aug 21 21:08:44 CEST 2010
Author: arekm Date: Sat Aug 21 19:08:44 2010 GMT
Module: packages Tag: HEAD
---- Log message:
- updated aufs2
---- Files affected:
packages/kernel:
kernel.spec (1.804 -> 1.805) , kernel-aufs2.patch (1.7 -> 1.8)
---- Diffs:
================================================================
Index: packages/kernel/kernel.spec
diff -u packages/kernel/kernel.spec:1.804 packages/kernel/kernel.spec:1.805
--- packages/kernel/kernel.spec:1.804 Sat Aug 21 02:10:42 2010
+++ packages/kernel/kernel.spec Sat Aug 21 21:08:37 2010
@@ -289,6 +289,15 @@
Patch146: kernel-aufs-support.patch
# http://git.c3sl.ufpr.br/pub/scm/aufs/aufs2-standalone.git, read README
+# Patch creation:
+# git clone http://git.c3sl.ufpr.br/pub/scm/aufs/aufs2-standalone.git
+# cd aufs2-standalone.git
+# git checkout -b aufs2-35 origin/aufs2-35
+# cat aufs2-kbuild.patch aufs2-base.patch aufs2-standalone.patch > ~/rpm/packages/kernel/kernel-aufs2.patch
+# mkdir linux
+# cp -a Documentation fs include linux
+# diff -urN /usr/share/empty linux >> ~/rpm/packages/kernel/kernel-aufs2.patch
+
Patch148: kernel-aufs2.patch
Patch150: kernel-ppc-crtsavres.patch
@@ -1592,6 +1601,9 @@
All persons listed below can be reached at <cvs_login>@pld-linux.org
$Log$
+Revision 1.805 2010/08/21 19:08:37 arekm
+- updated aufs2
+
Revision 1.804 2010/08/21 00:10:42 baggins
- 2.6.35.3
================================================================
Index: packages/kernel/kernel-aufs2.patch
diff -u packages/kernel/kernel-aufs2.patch:1.7 packages/kernel/kernel-aufs2.patch:1.8
--- packages/kernel/kernel-aufs2.patch:1.7 Mon May 31 22:26:55 2010
+++ packages/kernel/kernel-aufs2.patch Sat Aug 21 21:08:38 2010
@@ -1,6 +1,394 @@
-diff -urN --exclude '*.orig' linux-2.6.34.org/Documentation/ABI/testing/debugfs-aufs linux-2.6.34/Documentation/ABI/testing/debugfs-aufs
---- linux-2.6.34.org/Documentation/ABI/testing/debugfs-aufs 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.34/Documentation/ABI/testing/debugfs-aufs 2010-05-31 22:15:32.000000000 +0200
+aufs2 kbuild patch for linux-2.6.35
+
+diff --git a/fs/Kconfig b/fs/Kconfig
+index 5f85b59..6ee7cf8 100644
+--- a/fs/Kconfig
++++ b/fs/Kconfig
+@@ -189,6 +189,7 @@ source "fs/romfs/Kconfig"
+ source "fs/sysv/Kconfig"
+ source "fs/ufs/Kconfig"
+ source "fs/exofs/Kconfig"
++source "fs/aufs/Kconfig"
+
+ endif # MISC_FILESYSTEMS
+
+diff --git a/fs/Makefile b/fs/Makefile
+index e6ec1d3..b0d795a 100644
+--- a/fs/Makefile
++++ b/fs/Makefile
+@@ -126,3 +126,4 @@ obj-$(CONFIG_BTRFS_FS) += btrfs/
+ obj-$(CONFIG_GFS2_FS) += gfs2/
+ obj-$(CONFIG_EXOFS_FS) += exofs/
+ obj-$(CONFIG_CEPH_FS) += ceph/
++obj-$(CONFIG_AUFS_FS) += aufs/
+diff --git a/include/linux/Kbuild b/include/linux/Kbuild
+index 2fc8e14..3b766a7 100644
+--- a/include/linux/Kbuild
++++ b/include/linux/Kbuild
+@@ -34,6 +34,7 @@ header-y += atmppp.h
+ header-y += atmsap.h
+ header-y += atmsvc.h
+ header-y += atm_zatm.h
++header-y += aufs_type.h
+ header-y += auto_fs4.h
+ header-y += ax25.h
+ header-y += b1lli.h
+aufs2 base patch for linux-2.6.35
+
+diff --git a/fs/namei.c b/fs/namei.c
+index 868d0cb..6e92c81 100644
+--- a/fs/namei.c
++++ b/fs/namei.c
+@@ -1178,7 +1178,7 @@ out:
+ * needs parent already locked. Doesn't follow mounts.
+ * SMP-safe.
+ */
+-static struct dentry *lookup_hash(struct nameidata *nd)
++struct dentry *lookup_hash(struct nameidata *nd)
+ {
+ int err;
+
+@@ -1188,7 +1188,7 @@ static struct dentry *lookup_hash(struct nameidata *nd)
+ return __lookup_hash(&nd->last, nd->path.dentry, nd);
+ }
+
+-static int __lookup_one_len(const char *name, struct qstr *this,
++int __lookup_one_len(const char *name, struct qstr *this,
+ struct dentry *base, int len)
+ {
+ unsigned long hash;
+diff --git a/fs/splice.c b/fs/splice.c
+index efdbfec..e01a51e 100644
+--- a/fs/splice.c
++++ b/fs/splice.c
+@@ -1104,8 +1104,8 @@ EXPORT_SYMBOL(generic_splice_sendpage);
+ /*
+ * Attempt to initiate a splice from pipe to file.
+ */
+-static long do_splice_from(struct pipe_inode_info *pipe, struct file *out,
+- loff_t *ppos, size_t len, unsigned int flags)
++long do_splice_from(struct pipe_inode_info *pipe, struct file *out,
++ loff_t *ppos, size_t len, unsigned int flags)
+ {
+ ssize_t (*splice_write)(struct pipe_inode_info *, struct file *,
+ loff_t *, size_t, unsigned int);
+@@ -1132,9 +1132,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.
+ */
+-static long do_splice_to(struct file *in, loff_t *ppos,
+- struct pipe_inode_info *pipe, size_t len,
+- unsigned int flags)
++long do_splice_to(struct file *in, loff_t *ppos,
++ struct pipe_inode_info *pipe, size_t len,
++ unsigned int flags)
+ {
+ 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 05b441d..91bc74e 100644
+--- a/include/linux/namei.h
++++ b/include/linux/namei.h
+@@ -73,6 +73,9 @@ extern int vfs_path_lookup(struct dentry *, struct vfsmount *,
+ 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 --git a/include/linux/splice.h b/include/linux/splice.h
+index 997c3b4..be9a153 100644
+--- a/include/linux/splice.h
++++ b/include/linux/splice.h
+@@ -89,4 +89,10 @@ extern int splice_grow_spd(struct pipe_inode_info *, struct splice_pipe_desc *);
+ 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
+aufs2 standalone patch for linux-2.6.35
+
+diff --git a/fs/namei.c b/fs/namei.c
+index 6e92c81..334130e 100644
+--- a/fs/namei.c
++++ b/fs/namei.c
+@@ -348,6 +348,7 @@ int deny_write_access(struct file * file)
+
+ return 0;
+ }
++EXPORT_SYMBOL(deny_write_access);
+
+ /**
+ * path_get - get a reference to a path
+@@ -1187,6 +1188,7 @@ struct dentry *lookup_hash(struct nameidata *nd)
+ return ERR_PTR(err);
+ return __lookup_hash(&nd->last, nd->path.dentry, nd);
+ }
++EXPORT_SYMBOL(lookup_hash);
+
+ int __lookup_one_len(const char *name, struct qstr *this,
+ struct dentry *base, int len)
+@@ -1209,6 +1211,7 @@ int __lookup_one_len(const char *name, struct qstr *this,
+ this->hash = end_name_hash(hash);
+ return 0;
+ }
++EXPORT_SYMBOL(__lookup_one_len);
+
+ /**
+ * lookup_one_len - filesystem helper to lookup single pathname component
+diff --git a/fs/namespace.c b/fs/namespace.c
+index 88058de..397afcc 100644
+--- a/fs/namespace.c
++++ b/fs/namespace.c
+@@ -1279,6 +1279,7 @@ int iterate_mounts(int (*f)(struct vfsmount *, void *), void *arg,
+ }
+ return 0;
+ }
++EXPORT_SYMBOL(iterate_mounts);
+
+ static void cleanup_group_ids(struct vfsmount *mnt, struct vfsmount *end)
+ {
+diff --git a/fs/notify/group.c b/fs/notify/group.c
+index 0e16771..3fab10a 100644
+--- a/fs/notify/group.c
++++ b/fs/notify/group.c
+@@ -22,6 +22,7 @@
+ #include <linux/srcu.h>
+ #include <linux/rculist.h>
+ #include <linux/wait.h>
++#include <linux/module.h>
+
+ #include <linux/fsnotify_backend.h>
+ #include "fsnotify.h"
+@@ -169,6 +170,7 @@ void fsnotify_put_group(struct fsnotify_group *group)
+ fsnotify_recalc_global_mask();
+ fsnotify_destroy_group(group);
+ }
++EXPORT_SYMBOL(fsnotify_put_group);
+
+ /*
+ * Simply run the fsnotify_groups list and find a group which matches
+@@ -252,3 +254,4 @@ struct fsnotify_group *fsnotify_obtain_group(unsigned int group_num, __u32 mask,
+
+ return group;
+ }
++EXPORT_SYMBOL(fsnotify_obtain_group);
+diff --git a/fs/notify/inode_mark.c b/fs/notify/inode_mark.c
+index 0399bcb..74cdc13 100644
+--- a/fs/notify/inode_mark.c
++++ b/fs/notify/inode_mark.c
+@@ -105,6 +105,7 @@ void fsnotify_put_mark(struct fsnotify_mark_entry *entry)
+ if (atomic_dec_and_test(&entry->refcnt))
+ entry->free_mark(entry);
+ }
++EXPORT_SYMBOL(fsnotify_put_mark);
+
+ /*
+ * Recalculate the mask of events relevant to a given inode locked.
+@@ -215,6 +216,7 @@ void fsnotify_destroy_mark_by_entry(struct fsnotify_mark_entry *entry)
+ if (unlikely(atomic_dec_and_test(&group->num_marks)))
+ fsnotify_final_destroy_group(group);
+ }
++EXPORT_SYMBOL(fsnotify_destroy_mark_by_entry);
+
+ /*
+ * Given a group, destroy all of the marks associated with that group.
+@@ -281,6 +283,7 @@ struct fsnotify_mark_entry *fsnotify_find_mark_entry(struct fsnotify_group *grou
+ }
+ return NULL;
+ }
++EXPORT_SYMBOL(fsnotify_find_mark_entry);
+
+ /*
+ * Nothing fancy, just initialize lists and locks and counters.
+@@ -297,6 +300,7 @@ void fsnotify_init_mark(struct fsnotify_mark_entry *entry,
+ entry->inode = NULL;
+ entry->free_mark = free_mark;
+ }
++EXPORT_SYMBOL(fsnotify_init_mark);
+
+ /*
+ * Attach an initialized mark entry to a given group and inode.
+@@ -352,6 +356,7 @@ int fsnotify_add_mark(struct fsnotify_mark_entry *entry,
+
+ return ret;
+ }
++EXPORT_SYMBOL(fsnotify_add_mark);
+
+ /**
+ * fsnotify_unmount_inodes - an sb is unmounting. handle any watched inodes.
+diff --git a/fs/open.c b/fs/open.c
+index 5463266..d248ead 100644
+--- a/fs/open.c
++++ b/fs/open.c
+@@ -59,6 +59,7 @@ int do_truncate(struct dentry *dentry, loff_t length, unsigned int time_attrs,
+ mutex_unlock(&dentry->d_inode->i_mutex);
+ return ret;
+ }
++EXPORT_SYMBOL(do_truncate);
+
+ static long do_sys_truncate(const char __user *pathname, loff_t length)
+ {
+diff --git a/fs/splice.c b/fs/splice.c
+index e01a51e..4806358 100644
+--- a/fs/splice.c
++++ b/fs/splice.c
+@@ -1128,6 +1128,7 @@ long do_splice_from(struct pipe_inode_info *pipe, struct file *out,
+
+ return splice_write(pipe, out, ppos, len, flags);
+ }
++EXPORT_SYMBOL(do_splice_from);
+
+ /*
+ * Attempt to initiate a splice from a file to a pipe.
+@@ -1154,6 +1155,7 @@ long do_splice_to(struct file *in, loff_t *ppos,
+
+ return splice_read(in, ppos, pipe, len, flags);
+ }
++EXPORT_SYMBOL(do_splice_to);
+
+ /**
+ * splice_direct_to_actor - splices data directly between two non-pipes
+diff --git a/security/commoncap.c b/security/commoncap.c
+index 4e01599..3611e1b 100644
+--- a/security/commoncap.c
++++ b/security/commoncap.c
+@@ -951,3 +951,4 @@ int cap_file_mmap(struct file *file, unsigned long reqprot,
+ }
+ return ret;
+ }
++EXPORT_SYMBOL(cap_file_mmap);
+diff --git a/security/device_cgroup.c b/security/device_cgroup.c
+index 8d9c48f..29108aa 100644
+--- a/security/device_cgroup.c
++++ b/security/device_cgroup.c
+@@ -515,6 +515,7 @@ found:
+
+ return -EPERM;
+ }
++EXPORT_SYMBOL(devcgroup_inode_permission);
+
+ int devcgroup_inode_mknod(int mode, dev_t dev)
+ {
+diff --git a/security/security.c b/security/security.c
+index 351942a..6ba84a8 100644
+--- a/security/security.c
++++ b/security/security.c
+@@ -376,6 +376,7 @@ int security_path_mkdir(struct path *dir, struct dentry *dentry, int mode)
+ return 0;
+ return security_ops->path_mkdir(dir, dentry, mode);
+ }
++EXPORT_SYMBOL(security_path_mkdir);
+
+ int security_path_rmdir(struct path *dir, struct dentry *dentry)
+ {
+@@ -383,6 +384,7 @@ int security_path_rmdir(struct path *dir, struct dentry *dentry)
+ return 0;
+ return security_ops->path_rmdir(dir, dentry);
+ }
++EXPORT_SYMBOL(security_path_rmdir);
+
+ int security_path_unlink(struct path *dir, struct dentry *dentry)
+ {
+@@ -390,6 +392,7 @@ int security_path_unlink(struct path *dir, struct dentry *dentry)
+ return 0;
+ return security_ops->path_unlink(dir, dentry);
+ }
++EXPORT_SYMBOL(security_path_unlink);
+
+ int security_path_symlink(struct path *dir, struct dentry *dentry,
+ const char *old_name)
+@@ -398,6 +401,7 @@ int security_path_symlink(struct path *dir, struct dentry *dentry,
+ return 0;
+ return security_ops->path_symlink(dir, dentry, old_name);
+ }
++EXPORT_SYMBOL(security_path_symlink);
+
+ int security_path_link(struct dentry *old_dentry, struct path *new_dir,
+ struct dentry *new_dentry)
+@@ -406,6 +410,7 @@ int security_path_link(struct dentry *old_dentry, struct path *new_dir,
+ return 0;
+ return security_ops->path_link(old_dentry, new_dir, new_dentry);
+ }
++EXPORT_SYMBOL(security_path_link);
+
+ int security_path_rename(struct path *old_dir, struct dentry *old_dentry,
+ struct path *new_dir, struct dentry *new_dentry)
+@@ -416,6 +421,7 @@ int security_path_rename(struct path *old_dir, struct dentry *old_dentry,
+ return security_ops->path_rename(old_dir, old_dentry, new_dir,
+ new_dentry);
+ }
++EXPORT_SYMBOL(security_path_rename);
+
+ int security_path_truncate(struct path *path, loff_t length,
+ unsigned int time_attrs)
+@@ -424,6 +430,7 @@ int security_path_truncate(struct path *path, loff_t length,
+ return 0;
+ return security_ops->path_truncate(path, length, time_attrs);
+ }
++EXPORT_SYMBOL(security_path_truncate);
+
+ int security_path_chmod(struct dentry *dentry, struct vfsmount *mnt,
+ mode_t mode)
+@@ -432,6 +439,7 @@ int security_path_chmod(struct dentry *dentry, struct vfsmount *mnt,
+ return 0;
+ return security_ops->path_chmod(dentry, mnt, mode);
+ }
++EXPORT_SYMBOL(security_path_chmod);
+
+ int security_path_chown(struct path *path, uid_t uid, gid_t gid)
+ {
+@@ -439,6 +447,7 @@ int security_path_chown(struct path *path, uid_t uid, gid_t gid)
+ return 0;
+ return security_ops->path_chown(path, uid, gid);
+ }
++EXPORT_SYMBOL(security_path_chown);
+
+ int security_path_chroot(struct path *path)
+ {
+@@ -515,6 +524,7 @@ int security_inode_readlink(struct dentry *dentry)
+ return 0;
+ return security_ops->inode_readlink(dentry);
+ }
++EXPORT_SYMBOL(security_inode_readlink);
+
+ int security_inode_follow_link(struct dentry *dentry, struct nameidata *nd)
+ {
+@@ -529,6 +539,7 @@ int security_inode_permission(struct inode *inode, int mask)
+ return 0;
+ return security_ops->inode_permission(inode, mask);
+ }
++EXPORT_SYMBOL(security_inode_permission);
+
+ int security_inode_setattr(struct dentry *dentry, struct iattr *attr)
+ {
+@@ -622,6 +633,7 @@ int security_file_permission(struct file *file, int mask)
+ {
+ return security_ops->file_permission(file, mask);
+ }
++EXPORT_SYMBOL(security_file_permission);
+
+ int security_file_alloc(struct file *file)
+ {
+@@ -649,6 +661,7 @@ int security_file_mmap(struct file *file, unsigned long reqprot,
+ return ret;
+ return ima_file_mmap(file, prot);
+ }
++EXPORT_SYMBOL(security_file_mmap);
+
+ int security_file_mprotect(struct vm_area_struct *vma, unsigned long reqprot,
+ unsigned long prot)
+diff -urN /usr/share/empty/Documentation/ABI/testing/debugfs-aufs linux/Documentation/ABI/testing/debugfs-aufs
+--- /usr/share/empty/Documentation/ABI/testing/debugfs-aufs 1970-01-01 01:00:00.000000000 +0100
++++ linux/Documentation/ABI/testing/debugfs-aufs 2010-08-21 21:00:02.956499131 +0200
@@ -0,0 +1,37 @@
+What: /debug/aufs/si_<id>/
+Date: March 2009
@@ -39,9 +427,9 @@
+ be created.
+ When the aufs mount option 'noxino' is specified, it
+ will be empty. About XINO files, see the aufs manual.
-diff -urN --exclude '*.orig' linux-2.6.34.org/Documentation/ABI/testing/sysfs-aufs linux-2.6.34/Documentation/ABI/testing/sysfs-aufs
---- linux-2.6.34.org/Documentation/ABI/testing/sysfs-aufs 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.34/Documentation/ABI/testing/sysfs-aufs 2010-05-31 22:15:32.000000000 +0200
+diff -urN /usr/share/empty/Documentation/ABI/testing/sysfs-aufs linux/Documentation/ABI/testing/sysfs-aufs
+--- /usr/share/empty/Documentation/ABI/testing/sysfs-aufs 1970-01-01 01:00:00.000000000 +0100
++++ linux/Documentation/ABI/testing/sysfs-aufs 2010-08-21 21:00:02.956499131 +0200
@@ -0,0 +1,24 @@
+What: /sys/fs/aufs/si_<id>/
+Date: March 2009
@@ -67,9 +455,9 @@
+ even if it is the default path.
+ When the aufs mount option 'noxino' is specified, it
+ will be empty. About XINO files, see the aufs manual.
-diff -urN --exclude '*.orig' linux-2.6.34.org/fs/aufs/aufs.h linux-2.6.34/fs/aufs/aufs.h
---- linux-2.6.34.org/fs/aufs/aufs.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.34/fs/aufs/aufs.h 2010-05-31 22:15:32.000000000 +0200
+diff -urN /usr/share/empty/fs/aufs/aufs.h linux/fs/aufs/aufs.h
+--- /usr/share/empty/fs/aufs/aufs.h 1970-01-01 01:00:00.000000000 +0100
++++ linux/fs/aufs/aufs.h 2010-08-21 21:00:02.972333781 +0200
@@ -0,0 +1,61 @@
+/*
+ * Copyright (C) 2005-2010 Junjiro R. Okajima
@@ -132,10 +520,10 @@
+
+#endif /* __KERNEL__ */
+#endif /* __AUFS_H__ */
-diff -urN --exclude '*.orig' linux-2.6.34.org/fs/aufs/branch.c linux-2.6.34/fs/aufs/branch.c
---- linux-2.6.34.org/fs/aufs/branch.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.34/fs/aufs/branch.c 2010-05-31 22:15:32.000000000 +0200
-@@ -0,0 +1,1007 @@
+diff -urN /usr/share/empty/fs/aufs/branch.c linux/fs/aufs/branch.c
+--- /usr/share/empty/fs/aufs/branch.c 1970-01-01 01:00:00.000000000 +0100
++++ linux/fs/aufs/branch.c 2010-08-21 21:00:02.972333781 +0200
+@@ -0,0 +1,1005 @@
+/*
+ * Copyright (C) 2005-2010 Junjiro R. Okajima
+ *
@@ -192,11 +580,7 @@
+ else
+ break;
+
-+ /* some filesystems acquire extra lock */
-+ /* lockdep_off(); */
+ mntput(br->br_mnt);
-+ /* lockdep_on(); */
-+
+ kfree(wbr);
+ kfree(br);
+}
@@ -237,15 +621,16 @@
+ * add a branch
+ */
+
-+static int test_overlap(struct super_block *sb, struct dentry *h_d1,
-+ struct dentry *h_d2)
++static int test_overlap(struct super_block *sb, struct dentry *h_adding,
++ struct dentry *h_root)
+{
-+ if (unlikely(h_d1 == h_d2))
++ if (unlikely(h_adding == h_root
++ || au_test_loopback_overlap(sb, h_adding)))
+ return 1;
-+ return au_test_subdir(h_d1, h_d2)
-+ || au_test_subdir(h_d2, h_d1)
-+ || au_test_loopback_overlap(sb, h_d1, h_d2)
-+ || au_test_loopback_overlap(sb, h_d2, h_d1);
++ if (h_adding->d_sb != h_root->d_sb)
++ return 0;
++ return au_test_subdir(h_adding, h_root)
++ || au_test_subdir(h_root, h_adding);
+}
+
+/*
@@ -499,7 +884,7 @@
+ if (au_br_writable(add->perm)) {
+ err = au_wbr_init(br, sb, add->perm, &add->path);
+ if (unlikely(err))
-+ goto out;
++ goto out_err;
+ }
+
+ if (au_opt_test(au_mntflags(sb), XINO)) {
@@ -507,13 +892,16 @@
+ au_sbr(sb, 0)->br_xino.xi_file, /*do_test*/1);
+ if (unlikely(err)) {
+ AuDebugOn(br->br_xino.xi_file);
-+ goto out;
++ goto out_err;
+ }
+ }
+
+ sysaufs_br_init(br);
+ mntget(add->path.mnt);
++ goto out; /* success */
+
++ out_err:
++ br->br_mnt = NULL;
+ out:
+ return err;
+}
@@ -664,11 +1052,10 @@
+ * test if the branch is deletable or not.
+ */
+static int test_dentry_busy(struct dentry *root, aufs_bindex_t bindex,
-+ unsigned int sigen)
++ unsigned int sigen, const unsigned int verbose)
+{
+ int err, i, j, ndentry;
+ aufs_bindex_t bstart, bend;
-+ unsigned char verbose;
+ struct au_dcsub_pages dpages;
+ struct au_dpage *dpage;
+ struct dentry *d;
@@ -681,7 +1068,6 @@
+ if (unlikely(err))
+ goto out_dpages;
+
-+ verbose = !!au_opt_test(au_mntflags(root->d_sb), VERBOSE);
+ for (i = 0; !err && i < dpages.ndpage; i++) {
+ dpage = dpages.dpages + i;
+ ndentry = dpage->ndentry;
@@ -722,15 +1108,13 @@
+}
+
+static int test_inode_busy(struct super_block *sb, aufs_bindex_t bindex,
-+ unsigned int sigen)
++ unsigned int sigen, const unsigned int verbose)
+{
+ int err;
+ struct inode *i;
+ aufs_bindex_t bstart, bend;
-+ unsigned char verbose;
+
+ err = 0;
-+ verbose = !!au_opt_test(au_mntflags(sb), VERBOSE);
+ list_for_each_entry(i, &sb->s_inodes, i_sb_list) {
+ AuDebugOn(!atomic_read(&i->i_count));
+ if (!list_empty(&i->i_dentry))
@@ -766,7 +1150,8 @@
+ return err;
+}
+
-+static int test_children_busy(struct dentry *root, aufs_bindex_t bindex)
++static int test_children_busy(struct dentry *root, aufs_bindex_t bindex,
++ const unsigned int verbose)
+{
+ int err;
+ unsigned int sigen;
@@ -775,9 +1160,9 @@
+ DiMustNoWaiters(root);
+ IiMustNoWaiters(root->d_inode);
+ di_write_unlock(root);
-+ err = test_dentry_busy(root, bindex, sigen);
++ err = test_dentry_busy(root, bindex, sigen, verbose);
+ if (!err)
-+ err = test_inode_busy(root->d_sb, bindex, sigen);
++ err = test_inode_busy(root->d_sb, bindex, sigen, verbose);
+ di_write_lock_child(root); /* aufs_write_lock() calls ..._child() */
+
<<Diff was trimmed, longer than 597 lines>>
---- CVS-web:
http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/kernel/kernel.spec?r1=1.804&r2=1.805&f=u
http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/kernel/kernel-aufs2.patch?r1=1.7&r2=1.8&f=u
More information about the pld-cvs-commit
mailing list