[kernel] r19817 - in dists/sid/linux/debian: . patches/features/all/aufs3
Ben Hutchings
benh at alioth.debian.org
Fri Feb 15 01:21:50 UTC 2013
Author: benh
Date: Fri Feb 15 01:21:50 2013
New Revision: 19817
Log:
aufs: Update to aufs3.2-20130204
Modified:
dists/sid/linux/debian/changelog
dists/sid/linux/debian/patches/features/all/aufs3/aufs3-add.patch
Modified: dists/sid/linux/debian/changelog
==============================================================================
--- dists/sid/linux/debian/changelog Fri Feb 15 01:17:27 2013 (r19816)
+++ dists/sid/linux/debian/changelog Fri Feb 15 01:21:50 2013 (r19817)
@@ -135,6 +135,11 @@
- Apply upstream changes up to Linux 3.8-rc1
* [armhf/mx5] Update description to mention i.MX53
* mm: Try harder to allocate vmemmap blocks (Closes: #699913)
+ * aufs: Update to aufs3.2-20130204:
+ - support for syncfs(2)
+ - possible bugfix, race in lookup
+ - bugfix, half refreshed iinfo
+ - possible bugfix, au_lkup_by_ino() returns ESTALE
[ Aurelien Jarno ]
* [armhf/vexpress] Add kernel udebs.
Modified: dists/sid/linux/debian/patches/features/all/aufs3/aufs3-add.patch
==============================================================================
--- dists/sid/linux/debian/patches/features/all/aufs3/aufs3-add.patch Fri Feb 15 01:17:27 2013 (r19816)
+++ dists/sid/linux/debian/patches/features/all/aufs3/aufs3-add.patch Fri Feb 15 01:21:50 2013 (r19817)
@@ -1,5 +1,5 @@
--- a/fs/aufs/Kconfig 1970-01-01 01:00:00.000000000 +0100
-+++ b/fs/aufs/Kconfig 2012-01-10 02:15:56.545455955 +0000
++++ b/fs/aufs/Kconfig 2012-01-10 02:15:56.000000000 +0000
@@ -0,0 +1,203 @@
+config AUFS_FS
+ tristate "Aufs (Advanced multi layered unification filesystem) support"
@@ -205,7 +205,7 @@
+ When aufs supports Magic SysRq, enabled automatically.
+endif
--- a/fs/aufs/Makefile 1970-01-01 01:00:00.000000000 +0100
-+++ b/fs/aufs/Makefile 2012-08-01 03:41:52.619414717 +0100
++++ b/fs/aufs/Makefile 2012-08-01 03:41:52.000000000 +0100
@@ -0,0 +1,42 @@
+
+include ${src}/magic.mk
@@ -250,10 +250,10 @@
+aufs-$(CONFIG_AUFS_DEBUG) += debug.o
+aufs-$(CONFIG_AUFS_MAGIC_SYSRQ) += sysrq.o
--- a/fs/aufs/aufs.h 1970-01-01 01:00:00.000000000 +0100
-+++ b/fs/aufs/aufs.h 2012-01-10 02:15:56.545455955 +0000
++++ b/fs/aufs/aufs.h 2013-02-13 14:16:11.494511808 +0000
@@ -0,0 +1,60 @@
+/*
-+ * Copyright (C) 2005-2012 Junjiro R. Okajima
++ * Copyright (C) 2005-2013 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
@@ -313,10 +313,10 @@
+#endif /* __KERNEL__ */
+#endif /* __AUFS_H__ */
--- a/fs/aufs/branch.c 1970-01-01 01:00:00.000000000 +0100
-+++ b/fs/aufs/branch.c 2012-10-10 06:26:21.201348727 +0100
-@@ -0,0 +1,1169 @@
++++ b/fs/aufs/branch.c 2013-02-13 14:16:11.494511808 +0000
+@@ -0,0 +1,1172 @@
+/*
-+ * Copyright (C) 2005-2012 Junjiro R. Okajima
++ * Copyright (C) 2005-2013 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
@@ -373,7 +373,10 @@
+ else
+ break;
+
++ /* recursive lock, s_umount of branch's */
++ lockdep_off();
+ mntput(br->br_mnt);
++ lockdep_on();
+ kfree(wbr);
+ kfree(br);
+}
@@ -949,7 +952,7 @@
+ continue;
+
+ /* AuDbgInode(i); */
-+ if (au_iigen(i) == sigen)
++ if (au_iigen(i, NULL) == sigen)
+ ii_read_lock_child(i);
+ else {
+ ii_write_lock_child(i);
@@ -1485,10 +1488,10 @@
+ return err;
+}
--- a/fs/aufs/branch.h 1970-01-01 01:00:00.000000000 +0100
-+++ b/fs/aufs/branch.h 2012-01-10 02:15:56.545455955 +0000
++++ b/fs/aufs/branch.h 2013-02-13 14:16:11.494511808 +0000
@@ -0,0 +1,230 @@
+/*
-+ * Copyright (C) 2005-2012 Junjiro R. Okajima
++ * Copyright (C) 2005-2013 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
@@ -1718,7 +1721,7 @@
+#endif /* __KERNEL__ */
+#endif /* __AUFS_BRANCH_H__ */
--- a/fs/aufs/conf.mk 1970-01-01 01:00:00.000000000 +0100
-+++ b/fs/aufs/conf.mk 2012-01-10 02:15:56.545455955 +0000
++++ b/fs/aufs/conf.mk 2012-01-10 02:15:56.000000000 +0000
@@ -0,0 +1,38 @@
+
+AuConfStr = CONFIG_AUFS_FS=${CONFIG_AUFS_FS}
@@ -1759,10 +1762,10 @@
+
+-include ${srctree}/${src}/conf_priv.mk
--- a/fs/aufs/cpup.c 1970-01-01 01:00:00.000000000 +0100
-+++ b/fs/aufs/cpup.c 2012-10-10 06:26:21.205348749 +0100
++++ b/fs/aufs/cpup.c 2013-02-13 14:16:11.494511808 +0000
@@ -0,0 +1,1079 @@
+/*
-+ * Copyright (C) 2005-2012 Junjiro R. Okajima
++ * Copyright (C) 2005-2013 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
@@ -2841,10 +2844,10 @@
+ return err;
+}
--- a/fs/aufs/cpup.h 1970-01-01 01:00:00.000000000 +0100
-+++ b/fs/aufs/cpup.h 2012-01-10 02:15:56.545455955 +0000
++++ b/fs/aufs/cpup.h 2013-02-13 14:16:11.494511808 +0000
@@ -0,0 +1,81 @@
+/*
-+ * Copyright (C) 2005-2012 Junjiro R. Okajima
++ * Copyright (C) 2005-2013 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
@@ -2925,10 +2928,10 @@
+#endif /* __KERNEL__ */
+#endif /* __AUFS_CPUP_H__ */
--- a/fs/aufs/dbgaufs.c 1970-01-01 01:00:00.000000000 +0100
-+++ b/fs/aufs/dbgaufs.c 2012-01-10 02:15:56.545455955 +0000
++++ b/fs/aufs/dbgaufs.c 2013-02-13 14:16:11.498511808 +0000
@@ -0,0 +1,334 @@
+/*
-+ * Copyright (C) 2005-2012 Junjiro R. Okajima
++ * Copyright (C) 2005-2013 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
@@ -3262,10 +3265,10 @@
+ return err;
+}
--- a/fs/aufs/dbgaufs.h 1970-01-01 01:00:00.000000000 +0100
-+++ b/fs/aufs/dbgaufs.h 2012-01-10 02:15:56.545455955 +0000
++++ b/fs/aufs/dbgaufs.h 2013-02-13 14:16:11.498511808 +0000
@@ -0,0 +1,49 @@
+/*
-+ * Copyright (C) 2005-2012 Junjiro R. Okajima
++ * Copyright (C) 2005-2013 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
@@ -3314,10 +3317,10 @@
+#endif /* __KERNEL__ */
+#endif /* __DBGAUFS_H__ */
--- a/fs/aufs/dcsub.c 1970-01-01 01:00:00.000000000 +0100
-+++ b/fs/aufs/dcsub.c 2012-01-10 02:15:56.545455955 +0000
++++ b/fs/aufs/dcsub.c 2013-02-13 14:16:11.498511808 +0000
@@ -0,0 +1,243 @@
+/*
-+ * Copyright (C) 2005-2012 Junjiro R. Okajima
++ * Copyright (C) 2005-2013 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
@@ -3560,10 +3563,10 @@
+ return path_is_under(path + 0, path + 1);
+}
--- a/fs/aufs/dcsub.h 1970-01-01 01:00:00.000000000 +0100
-+++ b/fs/aufs/dcsub.h 2012-01-10 02:15:56.545455955 +0000
++++ b/fs/aufs/dcsub.h 2013-02-13 14:16:11.498511808 +0000
@@ -0,0 +1,94 @@
+/*
-+ * Copyright (C) 2005-2012 Junjiro R. Okajima
++ * Copyright (C) 2005-2013 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
@@ -3657,10 +3660,10 @@
+#endif /* __KERNEL__ */
+#endif /* __AUFS_DCSUB_H__ */
--- a/fs/aufs/debug.c 1970-01-01 01:00:00.000000000 +0100
-+++ b/fs/aufs/debug.c 2012-10-10 06:26:21.205348749 +0100
++++ b/fs/aufs/debug.c 2013-02-13 14:16:11.498511808 +0000
@@ -0,0 +1,489 @@
+/*
-+ * Copyright (C) 2005-2012 Junjiro R. Okajima
++ * Copyright (C) 2005-2013 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
@@ -3785,7 +3788,7 @@
+ if (!iinfo)
+ return;
+ dpri("i-1: bstart %d, bend %d, gen %d\n",
-+ iinfo->ii_bstart, iinfo->ii_bend, au_iigen(inode));
++ iinfo->ii_bstart, iinfo->ii_bend, au_iigen(inode, NULL));
+ if (iinfo->ii_bstart < 0)
+ return;
+ hn = 0;
@@ -4149,10 +4152,10 @@
+ return 0;
+}
--- a/fs/aufs/debug.h 1970-01-01 01:00:00.000000000 +0100
-+++ b/fs/aufs/debug.h 2012-10-10 06:26:21.225348843 +0100
++++ b/fs/aufs/debug.h 2013-02-13 14:16:11.498511808 +0000
@@ -0,0 +1,243 @@
+/*
-+ * Copyright (C) 2005-2012 Junjiro R. Okajima
++ * Copyright (C) 2005-2013 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
@@ -4395,10 +4398,10 @@
+#endif /* __KERNEL__ */
+#endif /* __AUFS_DEBUG_H__ */
--- a/fs/aufs/dentry.c 1970-01-01 01:00:00.000000000 +0100
-+++ b/fs/aufs/dentry.c 2012-10-10 06:26:21.225348843 +0100
++++ b/fs/aufs/dentry.c 2013-02-13 14:16:11.498511808 +0000
@@ -0,0 +1,1140 @@
+/*
-+ * Copyright (C) 2005-2012 Junjiro R. Okajima
++ * Copyright (C) 2005-2013 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
@@ -5538,10 +5541,10 @@
+ .d_release = aufs_d_release
+};
--- a/fs/aufs/dentry.h 1970-01-01 01:00:00.000000000 +0100
-+++ b/fs/aufs/dentry.h 2012-10-10 06:26:21.225348843 +0100
++++ b/fs/aufs/dentry.h 2013-02-13 14:16:11.498511808 +0000
@@ -0,0 +1,237 @@
+/*
-+ * Copyright (C) 2005-2012 Junjiro R. Okajima
++ * Copyright (C) 2005-2013 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
@@ -5778,10 +5781,10 @@
+#endif /* __KERNEL__ */
+#endif /* __AUFS_DENTRY_H__ */
--- a/fs/aufs/dinfo.c 1970-01-01 01:00:00.000000000 +0100
-+++ b/fs/aufs/dinfo.c 2012-01-10 02:15:56.549455982 +0000
++++ b/fs/aufs/dinfo.c 2013-02-13 14:16:11.498511808 +0000
@@ -0,0 +1,543 @@
+/*
-+ * Copyright (C) 2005-2012 Junjiro R. Okajima
++ * Copyright (C) 2005-2013 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
@@ -6324,10 +6327,10 @@
+ return -1;
+}
--- a/fs/aufs/dir.c 1970-01-01 01:00:00.000000000 +0100
-+++ b/fs/aufs/dir.c 2012-10-10 06:26:21.225348843 +0100
++++ b/fs/aufs/dir.c 2013-02-13 14:16:11.498511808 +0000
@@ -0,0 +1,634 @@
+/*
-+ * Copyright (C) 2005-2012 Junjiro R. Okajima
++ * Copyright (C) 2005-2013 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
@@ -6961,10 +6964,10 @@
+ .fsync = aufs_fsync_dir
+};
--- a/fs/aufs/dir.h 1970-01-01 01:00:00.000000000 +0100
-+++ b/fs/aufs/dir.h 2012-01-10 02:15:56.549455982 +0000
++++ b/fs/aufs/dir.h 2013-02-13 14:16:11.498511808 +0000
@@ -0,0 +1,137 @@
+/*
-+ * Copyright (C) 2005-2012 Junjiro R. Okajima
++ * Copyright (C) 2005-2013 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
@@ -7101,10 +7104,10 @@
+#endif /* __KERNEL__ */
+#endif /* __AUFS_DIR_H__ */
--- a/fs/aufs/dynop.c 1970-01-01 01:00:00.000000000 +0100
-+++ b/fs/aufs/dynop.c 2012-10-10 06:26:21.225348843 +0100
++++ b/fs/aufs/dynop.c 2013-02-13 14:16:11.498511808 +0000
@@ -0,0 +1,377 @@
+/*
-+ * Copyright (C) 2010-2012 Junjiro R. Okajima
++ * Copyright (C) 2010-2013 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
@@ -7481,10 +7484,10 @@
+ WARN_ON(!list_empty(&dynop[i].head));
+}
--- a/fs/aufs/dynop.h 1970-01-01 01:00:00.000000000 +0100
-+++ b/fs/aufs/dynop.h 2012-01-10 02:15:56.549455982 +0000
++++ b/fs/aufs/dynop.h 2013-02-13 14:16:11.498511808 +0000
@@ -0,0 +1,76 @@
+/*
-+ * Copyright (C) 2010-2012 Junjiro R. Okajima
++ * Copyright (C) 2010-2013 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
@@ -7560,10 +7563,10 @@
+#endif /* __KERNEL__ */
+#endif /* __AUFS_DYNOP_H__ */
--- a/fs/aufs/export.c 1970-01-01 01:00:00.000000000 +0100
-+++ b/fs/aufs/export.c 2012-10-10 06:26:21.241348914 +0100
-@@ -0,0 +1,804 @@
++++ b/fs/aufs/export.c 2013-02-13 14:16:11.498511808 +0000
+@@ -0,0 +1,805 @@
+/*
-+ * Copyright (C) 2005-2012 Junjiro R. Okajima
++ * Copyright (C) 2005-2013 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
@@ -7784,7 +7787,7 @@
+ sigen = au_sigen(sb);
+ if (unlikely(is_bad_inode(inode)
+ || IS_DEADDIR(inode)
-+ || sigen != au_iigen(inode)))
++ || sigen != au_iigen(inode, NULL)))
+ goto out_iput;
+
+ dentry = NULL;
@@ -7944,7 +7947,8 @@
+ dentry = ERR_PTR(err);
+ if (unlikely(err))
+ goto out_name;
-+ dentry = ERR_PTR(-ENOENT);
++ /* instead of ENOENT */
++ dentry = ERR_PTR(-ESTALE);
+ if (!arg.found)
+ goto out_name;
+
@@ -8367,10 +8371,10 @@
+ atomic_set(&sbinfo->si_xigen_next, u);
+}
--- a/fs/aufs/f_op.c 1970-01-01 01:00:00.000000000 +0100
-+++ b/fs/aufs/f_op.c 2012-10-10 06:26:21.241348914 +0100
++++ b/fs/aufs/f_op.c 2013-02-13 14:16:11.498511808 +0000
@@ -0,0 +1,729 @@
+/*
-+ * Copyright (C) 2005-2012 Junjiro R. Okajima
++ * Copyright (C) 2005-2013 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
@@ -9099,10 +9103,10 @@
+#endif
+};
--- a/fs/aufs/f_op_sp.c 1970-01-01 01:00:00.000000000 +0100
-+++ b/fs/aufs/f_op_sp.c 2012-10-10 06:26:21.241348914 +0100
++++ b/fs/aufs/f_op_sp.c 2013-02-13 14:16:11.498511808 +0000
@@ -0,0 +1,298 @@
+/*
-+ * Copyright (C) 2005-2012 Junjiro R. Okajima
++ * Copyright (C) 2005-2013 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
@@ -9400,10 +9404,10 @@
+ return ret;
+}
--- a/fs/aufs/file.c 1970-01-01 01:00:00.000000000 +0100
-+++ b/fs/aufs/file.c 2012-10-10 06:26:21.241348914 +0100
++++ b/fs/aufs/file.c 2013-02-13 14:16:11.498511808 +0000
@@ -0,0 +1,673 @@
+/*
-+ * Copyright (C) 2005-2012 Junjiro R. Okajima
++ * Copyright (C) 2005-2013 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
@@ -10076,10 +10080,10 @@
+#endif /* CONFIG_AUFS_DEBUG */
+};
--- a/fs/aufs/file.h 1970-01-01 01:00:00.000000000 +0100
-+++ b/fs/aufs/file.h 2012-08-01 03:41:52.619414717 +0100
++++ b/fs/aufs/file.h 2013-02-13 14:16:11.498511808 +0000
@@ -0,0 +1,298 @@
+/*
-+ * Copyright (C) 2005-2012 Junjiro R. Okajima
++ * Copyright (C) 2005-2013 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
@@ -10377,10 +10381,10 @@
+#endif /* __KERNEL__ */
+#endif /* __AUFS_FILE_H__ */
--- a/fs/aufs/finfo.c 1970-01-01 01:00:00.000000000 +0100
-+++ b/fs/aufs/finfo.c 2012-01-10 02:15:56.549455982 +0000
-@@ -0,0 +1,156 @@
++++ b/fs/aufs/finfo.c 2013-02-13 14:16:11.498511808 +0000
+@@ -0,0 +1,157 @@
+/*
-+ * Copyright (C) 2005-2012 Junjiro R. Okajima
++ * Copyright (C) 2005-2013 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
@@ -10508,7 +10512,7 @@
+
+int au_finfo_init(struct file *file, struct au_fidir *fidir)
+{
-+ int err, lc_idx;
++ int err;
+ struct au_finfo *finfo;
+ struct dentry *dentry;
+
@@ -10520,10 +10524,11 @@
+
+ err = 0;
+ au_nfiles_inc(dentry->d_sb);
-+ lc_idx = AuLcNonDir_FIINFO;
-+ if (fidir)
-+ lc_idx = AuLcDir_FIINFO;
-+ au_rw_class(&finfo->fi_rwsem, au_lc_key + lc_idx);
++ /* verbose coding for lock class name */
++ if (!fidir)
++ au_rw_class(&finfo->fi_rwsem, au_lc_key + AuLcNonDir_FIINFO);
++ else
++ au_rw_class(&finfo->fi_rwsem, au_lc_key + AuLcDir_FIINFO);
+ au_rw_write_lock(&finfo->fi_rwsem);
+ finfo->fi_btop = -1;
+ finfo->fi_hdir = fidir;
@@ -10536,10 +10541,10 @@
+ return err;
+}
--- a/fs/aufs/fstype.h 1970-01-01 01:00:00.000000000 +0100
-+++ b/fs/aufs/fstype.h 2012-10-10 06:26:21.241348914 +0100
++++ b/fs/aufs/fstype.h 2013-02-13 14:16:11.498511808 +0000
@@ -0,0 +1,496 @@
+/*
-+ * Copyright (C) 2005-2012 Junjiro R. Okajima
++ * Copyright (C) 2005-2013 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
@@ -11035,10 +11040,10 @@
+#endif /* __KERNEL__ */
+#endif /* __AUFS_FSTYPE_H__ */
--- a/fs/aufs/hfsnotify.c 1970-01-01 01:00:00.000000000 +0100
-+++ b/fs/aufs/hfsnotify.c 2012-10-10 06:26:21.241348914 +0100
++++ b/fs/aufs/hfsnotify.c 2013-02-13 14:16:11.498511808 +0000
@@ -0,0 +1,260 @@
+/*
-+ * Copyright (C) 2005-2012 Junjiro R. Okajima
++ * Copyright (C) 2005-2013 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
@@ -11298,10 +11303,10 @@
+ .init_br = au_hfsn_init_br
+};
--- a/fs/aufs/hfsplus.c 1970-01-01 01:00:00.000000000 +0100
-+++ b/fs/aufs/hfsplus.c 2012-01-10 02:15:56.553455997 +0000
++++ b/fs/aufs/hfsplus.c 2013-02-13 14:16:11.498511808 +0000
@@ -0,0 +1,57 @@
+/*
-+ * Copyright (C) 2010-2012 Junjiro R. Okajima
++ * Copyright (C) 2010-2013 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
@@ -11358,10 +11363,10 @@
+ }
+}
--- a/fs/aufs/hnotify.c 1970-01-01 01:00:00.000000000 +0100
-+++ b/fs/aufs/hnotify.c 2012-10-10 06:26:21.241348914 +0100
++++ b/fs/aufs/hnotify.c 2013-02-13 14:16:11.498511808 +0000
@@ -0,0 +1,712 @@
+/*
-+ * Copyright (C) 2005-2012 Junjiro R. Okajima
++ * Copyright (C) 2005-2013 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
@@ -12073,10 +12078,10 @@
+ au_hn_destroy_cache();
+}
--- a/fs/aufs/i_op.c 1970-01-01 01:00:00.000000000 +0100
-+++ b/fs/aufs/i_op.c 2012-10-10 06:26:21.241348914 +0100
-@@ -0,0 +1,987 @@
++++ b/fs/aufs/i_op.c 2013-02-13 14:16:11.498511808 +0000
+@@ -0,0 +1,1004 @@
+/*
-+ * Copyright (C) 2005-2012 Junjiro R. Okajima
++ * Copyright (C) 2005-2013 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
@@ -12235,19 +12240,25 @@
+ struct dentry *ret, *parent;
+ struct inode *inode;
+ struct super_block *sb;
-+ int err, npositive, lc_idx;
++ int err, npositive;
+
+ IMustLock(dir);
+
++ /* todo: support rcu-walk? */
++ ret = ERR_PTR(-ECHILD);
++ if (nd && (nd->flags & LOOKUP_RCU))
++ goto out;
++
++ ret = ERR_PTR(-ENAMETOOLONG);
++ if (unlikely(dentry->d_name.len > AUFS_MAX_NAMELEN))
++ goto out;
++
+ sb = dir->i_sb;
+ err = si_read_lock(sb, AuLock_FLUSH | AuLock_NOPLM);
+ ret = ERR_PTR(err);
+ if (unlikely(err))
+ goto out;
+
-+ ret = ERR_PTR(-ENAMETOOLONG);
-+ if (unlikely(dentry->d_name.len > AUFS_MAX_NAMELEN))
-+ goto out_si;
+ err = au_di_init(dentry);
+ ret = ERR_PTR(err);
+ if (unlikely(err))
@@ -12280,6 +12291,13 @@
+ }
+
+ ret = d_splice_alias(inode, dentry);
++#if 0
++ if (unlikely(d_need_lookup(dentry))) {
++ spin_lock(&dentry->d_lock);
++ dentry->d_flags &= ~DCACHE_NEED_LOOKUP;
++ spin_unlock(&dentry->d_lock);
++ } else
++#endif
+ if (unlikely(IS_ERR(ret) && inode)) {
+ ii_write_unlock(inode);
+ iput(inode);
@@ -12289,12 +12307,16 @@
+out_unlock:
+ di_write_unlock(dentry);
+ if (inode) {
-+ lc_idx = AuLcNonDir_DIINFO;
-+ if (S_ISLNK(inode->i_mode))
-+ lc_idx = AuLcSymlink_DIINFO;
-+ else if (S_ISDIR(inode->i_mode))
-+ lc_idx = AuLcDir_DIINFO;
-+ au_rw_class(&au_di(dentry)->di_rwsem, au_lc_key + lc_idx);
++ /* verbose coding for lock class name */
++ if (unlikely(S_ISLNK(inode->i_mode)))
++ au_rw_class(&au_di(dentry)->di_rwsem,
++ au_lc_key + AuLcSymlink_DIINFO);
++ else if (unlikely(S_ISDIR(inode->i_mode)))
++ au_rw_class(&au_di(dentry)->di_rwsem,
++ au_lc_key + AuLcDir_DIINFO);
++ else /* likely */
++ au_rw_class(&au_di(dentry)->di_rwsem,
++ au_lc_key + AuLcNonDir_DIINFO);
+ }
+out_si:
+ si_read_unlock(sb);
@@ -13063,10 +13085,10 @@
+ .truncate_range = aufs_truncate_range
+};
--- a/fs/aufs/i_op_add.c 1970-01-01 01:00:00.000000000 +0100
-+++ b/fs/aufs/i_op_add.c 2012-10-10 06:26:21.261349000 +0100
++++ b/fs/aufs/i_op_add.c 2013-02-13 14:16:11.502511808 +0000
@@ -0,0 +1,711 @@
+/*
-+ * Copyright (C) 2005-2012 Junjiro R. Okajima
++ * Copyright (C) 2005-2013 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
@@ -13777,10 +13799,10 @@
+ return err;
+}
--- a/fs/aufs/i_op_del.c 1970-01-01 01:00:00.000000000 +0100
-+++ b/fs/aufs/i_op_del.c 2012-10-10 06:26:21.261349000 +0100
++++ b/fs/aufs/i_op_del.c 2013-02-13 14:16:11.502511808 +0000
@@ -0,0 +1,478 @@
+/*
-+ * Copyright (C) 2005-2012 Junjiro R. Okajima
++ * Copyright (C) 2005-2013 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
@@ -14258,10 +14280,10 @@
+ return err;
+}
--- a/fs/aufs/i_op_ren.c 1970-01-01 01:00:00.000000000 +0100
-+++ b/fs/aufs/i_op_ren.c 2012-10-10 06:26:21.261349000 +0100
++++ b/fs/aufs/i_op_ren.c 2013-02-13 14:16:11.502511808 +0000
@@ -0,0 +1,1026 @@
+/*
-+ * Copyright (C) 2005-2012 Junjiro R. Okajima
++ * Copyright (C) 2005-2013 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
@@ -15287,10 +15309,10 @@
+ return err;
+}
--- a/fs/aufs/iinfo.c 1970-01-01 01:00:00.000000000 +0100
-+++ b/fs/aufs/iinfo.c 2012-01-10 02:15:56.557456016 +0000
-@@ -0,0 +1,264 @@
++++ b/fs/aufs/iinfo.c 2013-02-13 14:16:11.502511808 +0000
+@@ -0,0 +1,276 @@
+/*
-+ * Copyright (C) 2005-2012 Junjiro R. Okajima
++ * Copyright (C) 2005-2013 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
@@ -15401,10 +15423,22 @@
+ hinode->hi_whdentry = h_wh;
+}
+
-+void au_update_iigen(struct inode *inode)
++void au_update_iigen(struct inode *inode, int half)
+{
-+ atomic_set(&au_ii(inode)->ii_generation, au_sigen(inode->i_sb));
-+ /* smp_mb(); */ /* atomic_set */
++ struct au_iinfo *iinfo;
++ struct au_iigen *iigen;
++ unsigned int sigen;
++
++ sigen = au_sigen(inode->i_sb);
++ iinfo = au_ii(inode);
++ iigen = &iinfo->ii_generation;
++ spin_lock(&iinfo->ii_genspin);
++ iigen->ig_generation = sigen;
++ if (half)
++ au_ig_fset(iigen->ig_flags, HALF_REFRESHED);
++ else
++ au_ig_fclr(iigen->ig_flags, HALF_REFRESHED);
++ spin_unlock(&iinfo->ii_genspin);
+}
+
+/* it may be called at remount time, too */
@@ -15455,6 +15489,7 @@
+ struct au_iinfo *iinfo = &c->iinfo;
+ static struct lock_class_key aufs_ii;
+
++ spin_lock_init(&iinfo->ii_genspin);
+ au_rw_init(&iinfo->ii_rwsem);
+ au_rw_class(&iinfo->ii_rwsem, &aufs_ii);
+ inode_init_once(&c->vfs_inode);
@@ -15477,8 +15512,7 @@
+ for (i = 0; i < nbr; i++)
+ iinfo->ii_hinode[i].hi_id = -1;
+
-+ atomic_set(&iinfo->ii_generation, au_sigen(sb));
-+ /* smp_mb(); */ /* atomic_set */
++ iinfo->ii_generation.ig_generation = au_sigen(sb);
+ iinfo->ii_bstart = -1;
+ iinfo->ii_bend = -1;
+ iinfo->ii_vdir = NULL;
@@ -15554,10 +15588,10 @@
+ AuRwDestroy(&iinfo->ii_rwsem);
+}
--- a/fs/aufs/inode.c 1970-01-01 01:00:00.000000000 +0100
-+++ b/fs/aufs/inode.c 2012-10-10 06:26:21.261349000 +0100
-@@ -0,0 +1,478 @@
++++ b/fs/aufs/inode.c 2013-02-13 14:16:11.502511808 +0000
+@@ -0,0 +1,492 @@
+/*
-+ * Copyright (C) 2005-2012 Junjiro R. Okajima
++ * Copyright (C) 2005-2013 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
@@ -15592,7 +15626,7 @@
+static void au_refresh_hinode_attr(struct inode *inode, int do_version)
+{
+ au_cpup_attr_all(inode, /*force*/0);
-+ au_update_iigen(inode);
++ au_update_iigen(inode, /*half*/1);
+ if (do_version)
+ inode->i_version++;
+}
@@ -15811,6 +15845,8 @@
+static int reval_inode(struct inode *inode, struct dentry *dentry)
+{
+ int err;
++ unsigned int gen;
++ struct au_iigen iigen;
+ aufs_bindex_t bindex, bend;
+ struct inode *h_inode, *h_dinode;
+
@@ -15829,12 +15865,20 @@
+ bend = au_ibend(inode);
+ for (bindex = au_ibstart(inode); bindex <= bend; bindex++) {
+ h_inode = au_h_iptr(inode, bindex);
-+ if (h_inode && h_inode == h_dinode) {
-+ err = 0;
-+ if (au_iigen_test(inode, au_digen(dentry)))
-+ err = au_refresh_hinode(inode, dentry);
++ if (!h_inode || h_inode != h_dinode)
++ continue;
++
++ err = 0;
++ gen = au_iigen(inode, &iigen);
++ if (gen == au_digen(dentry)
++ && !au_ig_ftest(iigen.ig_flags, HALF_REFRESHED))
+ break;
-+ }
++
++ /* fully refresh inode using dentry */
++ err = au_refresh_hinode(inode, dentry);
++ if (!err)
++ au_update_iigen(inode, /*half*/0);
++ break;
+ }
+
+ if (unlikely(err))
@@ -15884,7 +15928,7 @@
+ struct super_block *sb;
+ struct mutex *mtx;
+ ino_t h_ino, ino;
-+ int err, lc_idx;
++ int err;
+ aufs_bindex_t bstart;
+
+ sb = dentry->d_sb;
@@ -15925,12 +15969,16 @@
+
+ AuDbg("%lx, new %d\n", inode->i_state, !!(inode->i_state & I_NEW));
+ if (inode->i_state & I_NEW) {
-+ lc_idx = AuLcNonDir_IIINFO;
-+ if (S_ISLNK(h_inode->i_mode))
-+ lc_idx = AuLcSymlink_IIINFO;
-+ else if (S_ISDIR(h_inode->i_mode))
-+ lc_idx = AuLcDir_IIINFO;
-+ au_rw_class(&au_ii(inode)->ii_rwsem, au_lc_key + lc_idx);
++ /* verbose coding for lock class name */
++ if (unlikely(S_ISLNK(h_inode->i_mode)))
++ au_rw_class(&au_ii(inode)->ii_rwsem,
++ au_lc_key + AuLcSymlink_IIINFO);
++ else if (unlikely(S_ISDIR(h_inode->i_mode)))
++ au_rw_class(&au_ii(inode)->ii_rwsem,
++ au_lc_key + AuLcDir_IIINFO);
++ else /* likely */
++ au_rw_class(&au_ii(inode)->ii_rwsem,
++ au_lc_key + AuLcNonDir_IIINFO);
+
+ ii_write_lock_new_child(inode);
+ err = set_inode(inode, dentry);
@@ -16035,10 +16083,10 @@
+ return au_test_h_perm(h_inode, mask);
+}
--- a/fs/aufs/inode.h 1970-01-01 01:00:00.000000000 +0100
-+++ b/fs/aufs/inode.h 2012-10-10 06:26:21.261349000 +0100
-@@ -0,0 +1,559 @@
++++ b/fs/aufs/inode.h 2013-02-13 14:16:11.502511808 +0000
+@@ -0,0 +1,587 @@
+/*
-+ * Copyright (C) 2005-2012 Junjiro R. Okajima
++ * Copyright (C) 2005-2013 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
@@ -16090,9 +16138,22 @@
+ struct dentry *hi_whdentry;
+};
+
++/* ig_flags */
++#define AuIG_HALF_REFRESHED 1
++#define au_ig_ftest(flags, name) ((flags) & AuIG_##name)
++#define au_ig_fset(flags, name) \
++ do { (flags) |= AuIG_##name; } while (0)
++#define au_ig_fclr(flags, name) \
++ do { (flags) &= ~AuIG_##name; } while (0)
++
++struct au_iigen {
++ __u32 ig_generation, ig_flags;
++};
++
+struct au_vdir;
+struct au_iinfo {
-+ atomic_t ii_generation;
++ spinlock_t ii_genspin;
++ struct au_iigen ii_generation;
+ struct super_block *ii_hsb1; /* no get/put */
+
+ struct au_rwsem ii_rwsem;
@@ -16240,7 +16301,7 @@
+void au_set_h_iptr(struct inode *inode, aufs_bindex_t bindex,
+ struct inode *h_inode, unsigned int flags);
+
-+void au_update_iigen(struct inode *inode);
++void au_update_iigen(struct inode *inode, int half);
+void au_update_ibrange(struct inode *inode, int do_put_zero);
+
+void au_icntnr_init_once(void *_c);
@@ -16348,9 +16409,19 @@
+#endif
+}
+
-+static inline unsigned int au_iigen(struct inode *inode)
++static inline unsigned int au_iigen(struct inode *inode, struct au_iigen *iigen)
+{
-+ return atomic_read(&au_ii(inode)->ii_generation);
++ unsigned int gen;
++ struct au_iinfo *iinfo;
++
++ iinfo = au_ii(inode);
++ spin_lock(&iinfo->ii_genspin);
++ if (iigen)
++ *iigen = iinfo->ii_generation;
++ gen = iinfo->ii_generation.ig_generation;
++ spin_unlock(&iinfo->ii_genspin);
++
++ return gen;
+}
+
+/* tiny test for inode number */
@@ -16367,7 +16438,12 @@
+
+static inline void au_iigen_dec(struct inode *inode)
+{
-+ atomic_dec(&au_ii(inode)->ii_generation);
++ struct au_iinfo *iinfo;
++
++ iinfo = au_ii(inode);
++ spin_lock(&iinfo->ii_genspin);
++ iinfo->ii_generation.ig_generation--;
++ spin_unlock(&iinfo->ii_genspin);
+}
+
+static inline int au_iigen_test(struct inode *inode, unsigned int sigen)
@@ -16375,7 +16451,7 @@
+ int err;
+
+ err = 0;
-+ if (unlikely(inode && au_iigen(inode) != sigen))
++ if (unlikely(inode && au_iigen(inode, NULL) != sigen))
+ err = -EIO;
+
+ return err;
@@ -16597,10 +16673,10 @@
+#endif /* __KERNEL__ */
+#endif /* __AUFS_INODE_H__ */
--- a/fs/aufs/ioctl.c 1970-01-01 01:00:00.000000000 +0100
-+++ b/fs/aufs/ioctl.c 2012-01-10 02:15:56.557456016 +0000
++++ b/fs/aufs/ioctl.c 2013-02-13 14:16:11.502511808 +0000
@@ -0,0 +1,196 @@
+/*
-+ * Copyright (C) 2005-2012 Junjiro R. Okajima
++ * Copyright (C) 2005-2013 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
@@ -16796,10 +16872,10 @@
+#endif
+#endif
--- a/fs/aufs/loop.c 1970-01-01 01:00:00.000000000 +0100
-+++ b/fs/aufs/loop.c 2012-07-22 01:31:00.162115458 +0100
++++ b/fs/aufs/loop.c 2013-02-13 14:16:11.502511808 +0000
@@ -0,0 +1,133 @@
+/*
-+ * Copyright (C) 2005-2012 Junjiro R. Okajima
++ * Copyright (C) 2005-2013 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
@@ -16932,10 +17008,10 @@
+ kfree(au_warn_loopback_array);
+}
--- a/fs/aufs/loop.h 1970-01-01 01:00:00.000000000 +0100
-+++ b/fs/aufs/loop.h 2012-01-10 02:15:56.557456016 +0000
++++ b/fs/aufs/loop.h 2013-02-13 14:16:11.502511808 +0000
@@ -0,0 +1,50 @@
+/*
-+ * Copyright (C) 2005-2012 Junjiro R. Okajima
++ * Copyright (C) 2005-2013 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
@@ -16985,7 +17061,7 @@
+#endif /* __KERNEL__ */
+#endif /* __AUFS_LOOP_H__ */
--- a/fs/aufs/magic.mk 1970-01-01 01:00:00.000000000 +0100
-+++ b/fs/aufs/magic.mk 2012-01-10 02:15:56.557456016 +0000
++++ b/fs/aufs/magic.mk 2012-01-10 02:15:56.000000000 +0000
@@ -0,0 +1,54 @@
+
+# defined in ${srctree}/fs/fuse/inode.c
@@ -17042,10 +17118,10 @@
+ccflags-y += -DHFSPLUS_SUPER_MAGIC=0x482b
+endif
--- a/fs/aufs/module.c 1970-01-01 01:00:00.000000000 +0100
-+++ b/fs/aufs/module.c 2012-03-11 05:01:22.570973560 +0000
++++ b/fs/aufs/module.c 2013-02-13 14:16:11.502511808 +0000
@@ -0,0 +1,196 @@
+/*
-+ * Copyright (C) 2005-2012 Junjiro R. Okajima
++ * Copyright (C) 2005-2013 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
@@ -17241,10 +17317,10 @@
+module_init(aufs_init);
+module_exit(aufs_exit);
--- a/fs/aufs/module.h 1970-01-01 01:00:00.000000000 +0100
-+++ b/fs/aufs/module.h 2012-03-11 05:01:22.570973560 +0000
++++ b/fs/aufs/module.h 2013-02-13 14:16:11.502511808 +0000
@@ -0,0 +1,105 @@
+/*
-+ * Copyright (C) 2005-2012 Junjiro R. Okajima
++ * Copyright (C) 2005-2013 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
@@ -17349,10 +17425,10 @@
+#endif /* __KERNEL__ */
+#endif /* __AUFS_MODULE_H__ */
--- a/fs/aufs/opts.c 1970-01-01 01:00:00.000000000 +0100
-+++ b/fs/aufs/opts.c 2012-07-22 01:31:00.166115467 +0100
++++ b/fs/aufs/opts.c 2013-02-13 14:16:11.502511808 +0000
@@ -0,0 +1,1677 @@
+/*
-+ * Copyright (C) 2005-2012 Junjiro R. Okajima
++ * Copyright (C) 2005-2013 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
@@ -19029,10 +19105,10 @@
+ return au_mntflags(sb) & AuOptMask_UDBA;
+}
--- a/fs/aufs/opts.h 1970-01-01 01:00:00.000000000 +0100
-+++ b/fs/aufs/opts.h 2012-01-10 02:15:56.561456041 +0000
++++ b/fs/aufs/opts.h 2013-02-13 14:16:11.502511808 +0000
@@ -0,0 +1,209 @@
+/*
-+ * Copyright (C) 2005-2012 Junjiro R. Okajima
++ * Copyright (C) 2005-2013 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
@@ -19241,10 +19317,10 @@
+#endif /* __KERNEL__ */
+#endif /* __AUFS_OPTS_H__ */
--- a/fs/aufs/plink.c 1970-01-01 01:00:00.000000000 +0100
-+++ b/fs/aufs/plink.c 2012-10-10 06:26:21.261349000 +0100
++++ b/fs/aufs/plink.c 2013-02-13 14:16:11.502511808 +0000
@@ -0,0 +1,515 @@
+/*
-+ * Copyright (C) 2005-2012 Junjiro R. Okajima
++ * Copyright (C) 2005-2013 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
@@ -19759,10 +19835,10 @@
+ }
+}
--- a/fs/aufs/poll.c 1970-01-01 01:00:00.000000000 +0100
-+++ b/fs/aufs/poll.c 2012-01-10 02:15:56.561456041 +0000
++++ b/fs/aufs/poll.c 2013-02-13 14:16:11.502511808 +0000
@@ -0,0 +1,56 @@
+/*
-+ * Copyright (C) 2005-2012 Junjiro R. Okajima
++ * Copyright (C) 2005-2013 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
@@ -19818,10 +19894,10 @@
+ return mask;
+}
--- a/fs/aufs/procfs.c 1970-01-01 01:00:00.000000000 +0100
-+++ b/fs/aufs/procfs.c 2012-01-10 02:15:56.561456041 +0000
++++ b/fs/aufs/procfs.c 2013-02-13 14:16:11.502511808 +0000
@@ -0,0 +1,170 @@
+/*
-+ * Copyright (C) 2010-2012 Junjiro R. Okajima
++ * Copyright (C) 2010-2013 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
@@ -19991,10 +20067,10 @@
+ return err;
+}
--- a/fs/aufs/rdu.c 1970-01-01 01:00:00.000000000 +0100
-+++ b/fs/aufs/rdu.c 2012-10-10 06:26:21.261349000 +0100
++++ b/fs/aufs/rdu.c 2013-02-13 14:16:11.502511808 +0000
@@ -0,0 +1,383 @@
+/*
-+ * Copyright (C) 2005-2012 Junjiro R. Okajima
++ * Copyright (C) 2005-2013 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
@@ -20377,10 +20453,10 @@
+}
+#endif
--- a/fs/aufs/rwsem.h 1970-01-01 01:00:00.000000000 +0100
-+++ b/fs/aufs/rwsem.h 2012-01-10 02:15:56.561456041 +0000
++++ b/fs/aufs/rwsem.h 2013-02-13 14:16:11.502511808 +0000
@@ -0,0 +1,188 @@
+/*
-+ * Copyright (C) 2005-2012 Junjiro R. Okajima
++ * Copyright (C) 2005-2013 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
@@ -20568,10 +20644,10 @@
+#endif /* __KERNEL__ */
+#endif /* __AUFS_RWSEM_H__ */
--- a/fs/aufs/sbinfo.c 1970-01-01 01:00:00.000000000 +0100
-+++ b/fs/aufs/sbinfo.c 2012-01-10 02:15:56.561456041 +0000
++++ b/fs/aufs/sbinfo.c 2013-02-13 14:16:11.502511808 +0000
@@ -0,0 +1,343 @@
+/*
-+ * Copyright (C) 2005-2012 Junjiro R. Okajima
++ * Copyright (C) 2005-2013 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
@@ -20729,7 +20805,7 @@
+
+ gen = ++au_sbi(sb)->si_generation;
+ au_update_digen(sb->s_root);
-+ au_update_iigen(sb->s_root->d_inode);
++ au_update_iigen(sb->s_root->d_inode, /*half*/0);
+ sb->s_root->d_inode->i_version++;
+ return gen;
+}
@@ -20914,10 +20990,10 @@
+ spin_unlock(&sbinfo->au_si_pid.tree_lock);
+}
--- a/fs/aufs/spl.h 1970-01-01 01:00:00.000000000 +0100
-+++ b/fs/aufs/spl.h 2012-01-10 02:15:56.561456041 +0000
++++ b/fs/aufs/spl.h 2013-02-13 14:16:11.502511808 +0000
@@ -0,0 +1,62 @@
+/*
-+ * Copyright (C) 2005-2012 Junjiro R. Okajima
++ * Copyright (C) 2005-2013 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
@@ -20979,10 +21055,10 @@
+#endif /* __KERNEL__ */
+#endif /* __AUFS_SPL_H__ */
--- a/fs/aufs/super.c 1970-01-01 01:00:00.000000000 +0100
-+++ b/fs/aufs/super.c 2012-10-10 06:26:21.261349000 +0100
-@@ -0,0 +1,968 @@
++++ b/fs/aufs/super.c 2013-02-13 14:16:11.502511808 +0000
+@@ -0,0 +1,999 @@
+/*
-+ * Copyright (C) 2005-2012 Junjiro R. Okajima
++ * Copyright (C) 2005-2013 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
@@ -21402,6 +21478,36 @@
+
+/* ---------------------------------------------------------------------- */
+
++static int aufs_sync_fs(struct super_block *sb, int wait)
++{
++ int err, e;
++ aufs_bindex_t bend, bindex;
++ struct au_branch *br;
++ struct super_block *h_sb;
++
++ err = 0;
++ si_noflush_read_lock(sb);
++ bend = au_sbend(sb);
++ for (bindex = 0; bindex <= bend; bindex++) {
++ br = au_sbr(sb, bindex);
++ if (!au_br_writable(br->br_perm))
++ continue;
++
++ h_sb = au_sbr_sb(sb, bindex);
++ if (h_sb->s_op->sync_fs) {
++ e = h_sb->s_op->sync_fs(h_sb, wait);
++ if (unlikely(e && !err))
++ err = e;
++ /* go on even if an error happens */
++ }
++ }
++ si_read_unlock(sb);
++
++ return err;
++}
++
++/* ---------------------------------------------------------------------- */
++
+/* final actions when unmounting a file system */
+static void aufs_put_super(struct super_block *sb)
+{
@@ -21612,7 +21718,7 @@
+ sigen = au_sigen(sb);
+ for (ull = 0; ull < max; ull++) {
+ inode = array[ull];
-+ if (au_iigen(inode) != sigen) {
++ if (au_iigen(inode, NULL) != sigen) {
+ ii_write_lock_child(inode);
+ e = au_refresh_hinode_self(inode);
+ ii_write_unlock(inode);
@@ -21765,6 +21871,7 @@
+ .show_options = aufs_show_options,
+ .statfs = aufs_statfs,
+ .put_super = aufs_put_super,
++ .sync_fs = aufs_sync_fs,
+ .remount_fs = aufs_remount_fs
+};
+
@@ -21950,10 +22057,10 @@
+ .owner = THIS_MODULE,
+};
--- a/fs/aufs/super.h 1970-01-01 01:00:00.000000000 +0100
-+++ b/fs/aufs/super.h 2012-01-10 02:15:56.569456073 +0000
++++ b/fs/aufs/super.h 2013-02-13 14:16:11.502511808 +0000
@@ -0,0 +1,546 @@
+/*
-+ * Copyright (C) 2005-2012 Junjiro R. Okajima
++ * Copyright (C) 2005-2013 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
@@ -22499,10 +22606,10 @@
+#endif /* __KERNEL__ */
+#endif /* __AUFS_SUPER_H__ */
--- a/fs/aufs/sysaufs.c 1970-01-01 01:00:00.000000000 +0100
-+++ b/fs/aufs/sysaufs.c 2012-01-10 02:15:56.569456073 +0000
++++ b/fs/aufs/sysaufs.c 2013-02-13 14:16:11.502511808 +0000
@@ -0,0 +1,105 @@
+/*
-+ * Copyright (C) 2005-2012 Junjiro R. Okajima
++ * Copyright (C) 2005-2013 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
@@ -22607,10 +22714,10 @@
+ return err;
+}
--- a/fs/aufs/sysaufs.h 1970-01-01 01:00:00.000000000 +0100
-+++ b/fs/aufs/sysaufs.h 2012-01-10 02:15:56.569456073 +0000
++++ b/fs/aufs/sysaufs.h 2013-02-13 14:16:11.502511808 +0000
@@ -0,0 +1,104 @@
+/*
-+ * Copyright (C) 2005-2012 Junjiro R. Okajima
++ * Copyright (C) 2005-2013 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
@@ -22714,10 +22821,10 @@
+#endif /* __KERNEL__ */
+#endif /* __SYSAUFS_H__ */
--- a/fs/aufs/sysfs.c 1970-01-01 01:00:00.000000000 +0100
-+++ b/fs/aufs/sysfs.c 2012-07-22 01:31:00.166115467 +0100
++++ b/fs/aufs/sysfs.c 2013-02-13 14:16:11.502511808 +0000
@@ -0,0 +1,257 @@
+/*
-+ * Copyright (C) 2005-2012 Junjiro R. Okajima
++ * Copyright (C) 2005-2013 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
@@ -22974,10 +23081,10 @@
+ }
+}
--- a/fs/aufs/sysrq.c 1970-01-01 01:00:00.000000000 +0100
-+++ b/fs/aufs/sysrq.c 2012-10-10 06:26:21.261349000 +0100
++++ b/fs/aufs/sysrq.c 2013-02-13 14:16:11.502511808 +0000
@@ -0,0 +1,148 @@
+/*
-+ * Copyright (C) 2005-2012 Junjiro R. Okajima
++ * Copyright (C) 2005-2013 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
@@ -23125,10 +23232,10 @@
+ pr_err("err %d (ignored)\n", err);
+}
--- a/fs/aufs/vdir.c 1970-01-01 01:00:00.000000000 +0100
-+++ b/fs/aufs/vdir.c 2012-01-10 02:15:56.569456073 +0000
++++ b/fs/aufs/vdir.c 2013-02-13 14:16:11.506511808 +0000
@@ -0,0 +1,885 @@
+/*
-+ * Copyright (C) 2005-2012 Junjiro R. Okajima
++ * Copyright (C) 2005-2013 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
@@ -24013,10 +24120,10 @@
+ return 0;
+}
--- a/fs/aufs/vfsub.c 1970-01-01 01:00:00.000000000 +0100
-+++ b/fs/aufs/vfsub.c 2012-10-10 06:26:21.265349041 +0100
++++ b/fs/aufs/vfsub.c 2013-02-13 14:16:11.506511808 +0000
@@ -0,0 +1,835 @@
+/*
-+ * Copyright (C) 2005-2012 Junjiro R. Okajima
++ * Copyright (C) 2005-2013 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
@@ -24851,10 +24958,10 @@
+ return err;
+}
--- a/fs/aufs/vfsub.h 1970-01-01 01:00:00.000000000 +0100
-+++ b/fs/aufs/vfsub.h 2012-10-10 06:26:21.265349041 +0100
++++ b/fs/aufs/vfsub.h 2013-02-13 14:16:11.506511808 +0000
@@ -0,0 +1,232 @@
+/*
-+ * Copyright (C) 2005-2012 Junjiro R. Okajima
++ * Copyright (C) 2005-2013 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
@@ -25086,10 +25193,10 @@
+#endif /* __KERNEL__ */
+#endif /* __AUFS_VFSUB_H__ */
--- a/fs/aufs/wbr_policy.c 1970-01-01 01:00:00.000000000 +0100
-+++ b/fs/aufs/wbr_policy.c 2012-01-10 02:15:56.569456073 +0000
++++ b/fs/aufs/wbr_policy.c 2013-02-13 14:16:11.506511808 +0000
@@ -0,0 +1,700 @@
+/*
-+ * Copyright (C) 2005-2012 Junjiro R. Okajima
++ * Copyright (C) 2005-2013 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
@@ -25789,10 +25896,10 @@
+ }
+};
--- a/fs/aufs/whout.c 1970-01-01 01:00:00.000000000 +0100
-+++ b/fs/aufs/whout.c 2012-10-10 06:26:21.265349041 +0100
++++ b/fs/aufs/whout.c 2013-02-13 14:16:11.506511808 +0000
@@ -0,0 +1,1049 @@
+/*
-+ * Copyright (C) 2005-2012 Junjiro R. Okajima
++ * Copyright (C) 2005-2013 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
@@ -26841,10 +26948,10 @@
+ }
+}
--- a/fs/aufs/whout.h 1970-01-01 01:00:00.000000000 +0100
-+++ b/fs/aufs/whout.h 2012-01-10 02:15:56.573456100 +0000
++++ b/fs/aufs/whout.h 2013-02-13 14:16:11.506511808 +0000
@@ -0,0 +1,88 @@
+/*
-+ * Copyright (C) 2005-2012 Junjiro R. Okajima
++ * Copyright (C) 2005-2013 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
@@ -26932,10 +27039,10 @@
+#endif /* __KERNEL__ */
+#endif /* __AUFS_WHOUT_H__ */
--- a/fs/aufs/wkq.c 1970-01-01 01:00:00.000000000 +0100
-+++ b/fs/aufs/wkq.c 2012-10-10 06:26:21.265349041 +0100
++++ b/fs/aufs/wkq.c 2013-02-13 14:16:11.506511808 +0000
@@ -0,0 +1,214 @@
+/*
-+ * Copyright (C) 2005-2012 Junjiro R. Okajima
++ * Copyright (C) 2005-2013 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
@@ -27149,10 +27256,10 @@
+ return err;
+}
--- a/fs/aufs/wkq.h 1970-01-01 01:00:00.000000000 +0100
-+++ b/fs/aufs/wkq.h 2012-01-10 02:15:56.573456100 +0000
++++ b/fs/aufs/wkq.h 2013-02-13 14:16:11.506511808 +0000
@@ -0,0 +1,92 @@
+/*
-+ * Copyright (C) 2005-2012 Junjiro R. Okajima
++ * Copyright (C) 2005-2013 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
@@ -27244,10 +27351,10 @@
+#endif /* __KERNEL__ */
+#endif /* __AUFS_WKQ_H__ */
--- a/fs/aufs/xino.c 1970-01-01 01:00:00.000000000 +0100
-+++ b/fs/aufs/xino.c 2012-07-22 01:31:00.166115467 +0100
-@@ -0,0 +1,1264 @@
++++ b/fs/aufs/xino.c 2013-02-13 14:16:11.506511808 +0000
+@@ -0,0 +1,1265 @@
+/*
-+ * Copyright (C) 2005-2012 Junjiro R. Okajima
++ * Copyright (C) 2005-2013 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
@@ -27564,7 +27671,8 @@
+
+ ii_read_unlock(dir);
+ if (unlikely(err))
-+ pr_warn("err b%d, (%d)\n", bindex, err);
++ pr_warn("err b%d, upper %llu, (%d)\n",
++ bindex, (unsigned long long)br->br_xino_upper, err);
+ atomic_dec(&br->br_xino_running);
+ atomic_dec(&br->br_count);
+ si_write_unlock(sb);
@@ -28511,10 +28619,10 @@
+ return err;
+}
--- a/include/linux/aufs_type.h 1970-01-01 01:00:00.000000000 +0100
-+++ b/include/linux/aufs_type.h 2012-10-10 06:26:21.265349041 +0100
++++ b/include/linux/aufs_type.h 2013-02-13 14:16:11.506511808 +0000
@@ -0,0 +1,233 @@
+/*
-+ * Copyright (C) 2005-2012 Junjiro R. Okajima
++ * Copyright (C) 2005-2013 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
@@ -28554,7 +28662,7 @@
+
+#include <linux/limits.h>
+
-+#define AUFS_VERSION "3.2-20120827"
++#define AUFS_VERSION "3.2-20130204"
+
+/* todo? move this to linux-2.6.19/include/magic.h */
+#define AUFS_SUPER_MAGIC ('a' << 24 | 'u' << 16 | 'f' << 8 | 's')
More information about the Kernel-svn-changes
mailing list