UBUNTU: ubuntu: AUFS -- update to b37c575759dc4535ccc03241c584ad5fe69e3b25
authorAndy Whitcroft <apw@canonical.com>
Thu, 15 Jul 2010 16:24:41 +0000 (17:24 +0100)
committerLeann Ogasawara <leann.ogasawara@canonical.com>
Mon, 28 Mar 2011 13:49:00 +0000 (06:49 -0700)
commit16310f5ac395ea047aa55eb34bb1e1c6efe728d6
tree702254edc3800c34ddd83f0b38822d87cf4e08f2
parent3c2b2aa2051e1ca7cb21e114c8127a9edf4b2d62
UBUNTU: ubuntu: AUFS -- update to b37c575759dc4535ccc03241c584ad5fe69e3b25

    commit b37c575759dc4535ccc03241c584ad5fe69e3b25
    Author: J. R. Okajima <hooanon05@yahoo.co.jp>
    Date:   Sun Jul 4 21:06:02 2010 +0900

        aufs: minor update abput the doubling donations

Signed-off-by: J. R. Okajima <hooanon05@yahoo.co.jp>

    commit 799db4b1d59ea0ffc999889bc6985397333e9a13
    Author: J. R. Okajima <hooanon05@yahoo.co.jp>
    Date:   Fri Jul 2 00:37:56 2010 +0900

        aufs: compat_ioctl, implement the operations

        (A commit in a series of supporting 32bit emulation under 64bit kernel.
        While every commit is git-bisect-able, you shoule read all commits in
        the series since a single commit may have less meaning.)

        Implement f_op->compat_ioctl().

Signed-off-by: J. R. Okajima <hooanon05@yahoo.co.jp>

    commit 765378b55abcabfe3344e5fcf2eabd6a1d52abc0
    Author: J. R. Okajima <hooanon05@yahoo.co.jp>
    Date:   Fri Jul 2 00:35:17 2010 +0900

        aufs: compat_ioctl, make a room for a pointer

        (A commit in a series of supporting 32bit emulation under 64bit kernel.
        While every commit is git-bisect-able, you shoule read all commits in
        the series since a single commit may have less meaning.)

        In order to make it compatible, make a room for a pointer and always
        handle it as 64bit size.

Signed-off-by: J. R. Okajima <hooanon05@yahoo.co.jp>

    commit abd339c757ea095f1affdd648d0e9e598213a790
    Author: J. R. Okajima <hooanon05@yahoo.co.jp>
    Date:   Fri Jul 2 00:29:00 2010 +0900

        aufs: compat_ioctl, remove verifying the size of ptr

        (A commit in a series of supporting 32bit emulation under 64bit kernel.
        While every commit is git-bisect-able, you shoule read all commits in
        the series since a single commit may have less meaning.)

        Remove verifying the size of ptr which is meaningless.

Signed-off-by: J. R. Okajima <hooanon05@yahoo.co.jp>

    commit 3c979528184058b184608e6e3086c4c59b0a6c86
    Author: J. R. Okajima <hooanon05@yahoo.co.jp>
    Date:   Fri Jul 2 00:04:33 2010 +0900

        aufs: follow 2.6.28, new flag LOOKUP_EXCL

        NFS replaces the internal test for LOOKUP_CREATE by a new flag
        LOOKUP_EXCL.
        Aufs has to prohibit this internal test in order to know whether the
        file exists or not.

        Reported-by: "Ian Stakenvicius, Aerobiology Research" <ian@aerobiology.ca>
Signed-off-by: J. R. Okajima <hooanon05@yahoo.co.jp>

    commit 396a2f097a6b278fc2a9e9da83b87255f60075fb
    Author: J. R. Okajima <hooanon05@yahoo.co.jp>
    Date:   Tue Jun 29 14:32:26 2010 +0900

        aufs: bugfix, separate the workqueue for preprocessing mmap

        variation of common AB-BA deadlock problem.

        ProcessA:
        - aufs_mmap
          + pre-process with using a workqueue
          + wait until return from the workqueue

        Workqueue task for ProcessA:
        - acquire aufs rwsem

        Processb
        - lookup or readdir in aufs
          + acquire aufs rwsem
          + assign a new inode number
          + write the value to the XINO file using a workqueue
          + wait until return from the workqueue

        Since the workqueue handles the request one by one, both of processA and
        B waits forever.

        This bug was introduced by the commit
        d986fa5 2010-03-08
         aufs: bugfix, another approach to keep the lock order of mmap_sem
        which is the last added workqueue task.
        And this is the only one task which acquires such lock in workqueue.
        To fix it, introduce another workqueue which is for preprocessing mmap only.
        This commit will make the approach more ugly, I don't have another option.

        Reported-by: Oliver Welter <mail@oliwel.de>
Signed-off-by: J. R. Okajima <hooanon05@yahoo.co.jp>

    commit 7c7f493d58745e45160ccebfbfb5e6244dbd0b52
    Author: J. R. Okajima <hooanon05@yahoo.co.jp>
    Date:   Fri Jun 25 10:52:59 2010 +0900

        aufs: tiny, debug print [if]_version

Signed-off-by: J. R. Okajima <hooanon05@yahoo.co.jp>

    commit ade8662cb1184703ebdd7c7d07cb42d2056a605b
    Author: J. R. Okajima <hooanon05@yahoo.co.jp>
    Date:   Sat Jun 19 16:38:15 2010 +0900

        aufs: follow the changes in 2.6.35, lockdep for sb->s_vfs_rename_mutex

        lockdep_set_class() is applied to sb->s_vfs_rename_mutex, and
        lockdep_off/on() in aufs become unnecessary.

Signed-off-by: J. R. Okajima <hooanon05@yahoo.co.jp>

    commit d405a78a328658600f1928309bfbd2ded6136c59
    Author: J. R. Okajima <hooanon05@yahoo.co.jp>
    Date:   Sat Jun 19 03:36:21 2010 +0900

        aufs: tiny, remove unused lockdep_off/on()

        In linux-2.6.31, lockdep_set_class() was applited to them.

Signed-off-by: J. R. Okajima <hooanon05@yahoo.co.jp>

    commit a4862273fc684dd24a9e0b4c29f89aaf53723afc
    Author: J. R. Okajima <hooanon05@yahoo.co.jp>
    Date:   Thu Jun 17 23:39:13 2010 +0900

        aufs: several GIT servers

Signed-off-by: J. R. Okajima <hooanon05@yahoo.co.jp>

    commit 135ac88ed89e4780dc71bef119b803d4c594ea07
    Author: J. R. Okajima <hooanon05@yahoo.co.jp>
    Date:   Wed Jun 16 18:11:40 2010 +0900

        aufs: possible bugfix, sbinfo lock in deleting inode, lockdep

        (A commit in a series of introducing pid map/tree and making sure to
        acquire sbinfo lock in deleting inode. While every commit is
        git-bisect-able, you shoule read all commits in the series since a
        single commit may have less meaning.)

        A debugging feature in linux kernel, lockdep, warns
        "inconsistent {RECLAIM_FS-ON-W} -> {IN-RECLAIM_FS-R} usage."
        about sb->s_umount and aufs sbinfo lock.
        This is bogus or "false positive" since {RECLAIM_FS-ON-W} state was
        registered at allcating the root inode at mounting. This is definitly no
        RECLAIM state. It may be a limitation of s_umount in lockdep.
        Let's simply make it quiet.

Signed-off-by: J. R. Okajima <hooanon05@yahoo.co.jp>

    commit 6ef8250091897e1cf7e8b77a7cfc61c7ffe58b58
    Author: J. R. Okajima <hooanon05@yahoo.co.jp>
    Date:   Wed Jun 16 18:03:48 2010 +0900

        aufs: possible bugfix, sbinfo lock in deleting inode, core

        (A commit in a series of introducing pid map/tree and making sure to
        acquire sbinfo lock in deleting inode. While every commit is
        git-bisect-able, you shoule read all commits in the series since a
        single commit may have less meaning.)

        s_umount rwsem in struct super_block prevents a race condition among
        umount, remount and kswapd. It is good.
        But if an inode is going to be deleted by other than kswapd, aufs may be
        doing another operation which requires a lock for sbinfo. In this case,
        si_noflush_read_trylock() in au_iinfo_fin() will not acquire the
        lock. Before au_iinfo_fin() completes or during its operations, another
        operation may release the lock and remount or a branch management
        process may start. Here if the branch management process changes the
        union members, then xino management in au_iinfo_fin() will not work
        correctly.

        In order to fix this potential problem, there another bad approch is
        introduced which uses a bitmap to mark the pid which acquired the sbinfo
        lock. In au_iinfo_fin(), if the bit is set, then the function will not
        try acquiring the lock.
        To support the pid larger than PID_MAX_DEFAULT, sbinfo prepares a radix
        tree too.

        With this commit, we can remove si_noflush_read_trylock(). But it will
        be necessary in aufs2-31 branch, so leave it now.

Signed-off-by: J. R. Okajima <hooanon05@yahoo.co.jp>

    commit eb6254f4b0080f01b3356a40bdd62d7130bf1951
    Author: J. R. Okajima <hooanon05@yahoo.co.jp>
    Date:   Wed Jun 16 17:51:00 2010 +0900

        aufs: possible bugfix, sbinfo lock in deleting inode, use si_pid

        (A commit in a series of introducing pid map/tree and making sure to
        acquire sbinfo lock in deleting inode. While every commit is
        git-bisect-able, you shoule read all commits in the series since a
        single commit may have less meaning.)

        Use si_pid which was declared and implmented by last commit.

Signed-off-by: J. R. Okajima <hooanon05@yahoo.co.jp>

    commit 89d59298f045a8a7e2c5a667dfc3ee3b3fe8745a
    Author: J. R. Okajima <hooanon05@yahoo.co.jp>
    Date:   Wed Jun 16 17:43:12 2010 +0900

        aufs: possible bugfix, sbinfo lock in deleting inode, si_pid functions

        (A commit in a series of introducing pid map/tree and making sure to
        acquire sbinfo lock in deleting inode. While every commit is
        git-bisect-able, you shoule read all commits in the series since a
        single commit may have less meaning.)

        Declare and implement si_pid functions which are not used yet.
        The pid from 1 to PID_MAX_DEFAULT are marked in a new bitmap in
        sbinfo. The larger pids will go to a new radix tree in sbinfo.
        These marks will be referenced by au_iinfo_fin() in succeeding commit.

Signed-off-by: J. R. Okajima <hooanon05@yahoo.co.jp>

    commit 40d554b0f6a6bc588fd88235f39b59f30ec27114
    Author: J. R. Okajima <hooanon05@yahoo.co.jp>
    Date:   Wed Jun 16 17:30:03 2010 +0900

        aufs: possible bugfix, sbinfo lock in deleting inode, __si_ lock

        (A commit in a series of introducing pid map/tree and making sure to
        acquire sbinfo lock in deleting inode. While every commit is
        git-bisect-able, you shoule read all commits in the series since a
        single commit may have less meaning.)

        Rename si_noflush_... lock macros to __si_..., and create new inlined
        functions si_noflush_....

Signed-off-by: J. R. Okajima <hooanon05@yahoo.co.jp>

    commit f2f51daf576fa90ad7209288ed8b19c8151ff92a
    Author: J. R. Okajima <hooanon05@yahoo.co.jp>
    Date:   Wed Jun 9 17:03:00 2010 +0900

        aufs: tiny, simplify the locks in au_do_flush()

        The read-lock for dinfo is unnecessary.
        Also the write-lock for iinfo should be a read-lock.

Signed-off-by: J. R. Okajima <hooanon05@yahoo.co.jp>

    commit bdc941c464fd4181f7ab76fbb992b6ab150ac188
    Author: J. R. Okajima <hooanon05@yahoo.co.jp>
    Date:   Tue Jun 8 23:28:03 2010 +0900

        aufs: minor optimization au_iinfo_fin()

        - extract a part of au_iinfo_fin(), create a new function
          au_xino_delete_inode(), and remove au_iinfo_write0().
        - simplify au_xino_write0() and rename to au_xib_clear_bit().
        - convert the type of au_xigen_inc() into void.
        - stop testing 'xino' option in au_xigen_inc().

Signed-off-by: J. R. Okajima <hooanon05@yahoo.co.jp>

    commit 7e7b86c68cf5d3638ceb19a0a1d7a254d8501bde
    Author: J. R. Okajima <hooanon05@yahoo.co.jp>
    Date:   Tue Jun 8 00:08:00 2010 +0900

        aufs: tiny, remove an unnecessary variable

Signed-off-by: J. R. Okajima <hooanon05@yahoo.co.jp>

    commit ea824b7a71cd905fdadcb0998ab2005fcb3786e9
    Author: J. R. Okajima <hooanon05@yahoo.co.jp>
    Date:   Tue Jun 8 00:06:55 2010 +0900

        aufs: minor optimization, pass the 'verbose' flag

        Stop testing the 'verbose' flag in all test_dentry_busy(),
        test_inode_busy() and au_br_del() functions. Instead pass the tested
        result from au_br_del() to test_dentry_busy() and test_inode_busy().

Signed-off-by: J. R. Okajima <hooanon05@yahoo.co.jp>

    commit cabc97fe740d2c7664988e76f218318aecd5ec18
    Author: J. R. Okajima <hooanon05@yahoo.co.jp>
    Date:   Mon Jun 7 14:45:15 2010 +0900

        aufs: tiny, test task flags instead of mm

Signed-off-by: J. R. Okajima <hooanon05@yahoo.co.jp>

    commit 575bf8c6484fd12a0719a7ebcf6c0d2fd0af31f3
    Author: J. R. Okajima <hooanon05@yahoo.co.jp>
    Date:   Fri Jun 4 14:55:42 2010 +0900

        aufs: follow linux-2.6.35, simple_setsize()

        Replace vmtruncate() by a new function simple_setsize().

Signed-off-by: J. R. Okajima <hooanon05@yahoo.co.jp>

    commit c503a51d10c9c7767f1eba8e47de545d31ab7858
    Author: J. R. Okajima <hooanon05@yahoo.co.jp>
    Date:   Fri Jun 4 02:54:13 2010 +0900

        aufs: bugfix, the dentry paramter for security funcs

        Pass the correct parameter.

Signed-off-by: J. R. Okajima <hooanon05@yahoo.co.jp>

    commit 92172f59e363f630ab44217e78135cdeff90ba0d
    Author: J. R. Okajima <hooanon05@yahoo.co.jp>
    Date:   Fri Jun 4 02:09:23 2010 +0900

        aufs: tiny, fake type-cast by union

Signed-off-by: J. R. Okajima <hooanon05@yahoo.co.jp>

    commit 9f8ad8ca00cf7677e9d982c9e98d4b7586e759f6
    Author: J. R. Okajima <hooanon05@yahoo.co.jp>
    Date:   Wed Jun 2 23:38:37 2010 +0900

        aufs: possible bugfix, revalidate inode race between readdir and lookup

        Both of readdir and lookup operation need to assign the aufs inode
        number, but it requires other aufs locks including xi_nondir_mtx which
        prevents hard-linked inode number from race condition. There can happen
        a violation of the order of these locks.

        They acquire these locks.
        aufs_readdir("./dirA")
        + si_read_lock
        + fi_write_lock
        + di_write_lock
        + ii_write_lock for dirA
        + xi_nondir_mtx for non-dir

        aufs_lookup("./dirA/fileB")
        + si_read_lock
        + di_write_lock
        + xi_nondir_mtx for non-dir
        + ii_write_lock_nested for fileB

        Here the fileB may be in copy-up operation which acquires the parent's
        dentry-info and inode->info lock. So aufs_lookup() waits for the
        completion of copy-up, aufs_readdir() waits for xi_nondir_mtx, and the
        copy-up waits for the parent, but it is held by readdir.
        This is very complicated situation and I am afraid the design of aufs
        inode assignment is not godd. But I don't have other idea.

        This commit refines xi_nondir_mtx and releases it before
        "ii_write_lock_nested for fileB."

Signed-off-by: J. R. Okajima <hooanon05@yahoo.co.jp>

    commit 907f03a11f5a681de402d733b6e80532adece324
    Author: J. R. Okajima <hooanon05@yahoo.co.jp>
    Date:   Tue Jun 1 01:41:43 2010 +0900

        aufs: tiny, follow the changes in linux-2.6.35-rcN

        The dentry parameter is removed from ->fsync().

Signed-off-by: J. R. Okajima <hooanon05@yahoo.co.jp>

Signed-off-by: Andy Whitcroft <apw@canonical.com>
Signed-off-by: Leann Ogasawara <leann.ogasawara@canonical.com>
30 files changed:
ubuntu/aufs/BOM
ubuntu/aufs/Makefile
ubuntu/aufs/branch.c
ubuntu/aufs/branch.h
ubuntu/aufs/cpup.c
ubuntu/aufs/debug.c
ubuntu/aufs/dentry.c
ubuntu/aufs/dir.c
ubuntu/aufs/dir.h
ubuntu/aufs/export.c
ubuntu/aufs/f_op.c
ubuntu/aufs/file.c
ubuntu/aufs/file.h
ubuntu/aufs/hnotify.c
ubuntu/aufs/i_op.c
ubuntu/aufs/iinfo.c
ubuntu/aufs/include/linux/aufs_type.h
ubuntu/aufs/inode.c
ubuntu/aufs/ioctl.c
ubuntu/aufs/loop.c
ubuntu/aufs/plink.c
ubuntu/aufs/rdu.c
ubuntu/aufs/sbinfo.c
ubuntu/aufs/super.c
ubuntu/aufs/super.h
ubuntu/aufs/vfsub.c
ubuntu/aufs/vfsub.h
ubuntu/aufs/wkq.c
ubuntu/aufs/wkq.h
ubuntu/aufs/xino.c