commit 8d0968abd03ec6b407df117adc773562386702fa
Merge: 9ea319b... e491401...
Author: Linus Torvalds <torvalds@linux-foundation.org>
Date:   Wed Aug 13 15:24:35 2008 -0700

    Merge git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6
    
    * git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6:
      crypto: padlock - fix VIA PadLock instruction usage with irq_ts_save/restore()
      crypto: hash - Add missing top-level functions
      crypto: hash - Fix digest size check for digest type
      crypto: tcrypt - Fix AEAD chunk testing
      crypto: talitos - Add handling for SEC 3.x treatment of link table

commit 9ea319b61613085f501a79cf8d405cb221d084f3
Merge: 3e11acd... c6a7b0f...
Author: Linus Torvalds <torvalds@linux-foundation.org>
Date:   Wed Aug 13 15:17:49 2008 -0700

    Merge git://oss.sgi.com:8090/xfs/linux-2.6
    
    * git://oss.sgi.com:8090/xfs/linux-2.6: (45 commits)
      [XFS] Fix use after free in xfs_log_done().
      [XFS] Make xfs_bmap_*_count_leaves void.
      [XFS] Use KM_NOFS for debug trace buffers
      [XFS] use KM_MAYFAIL in xfs_mountfs
      [XFS] refactor xfs_mount_free
      [XFS] don't call xfs_freesb from xfs_unmountfs
      [XFS] xfs_unmountfs should return void
      [XFS] cleanup xfs_mountfs
      [XFS] move root inode IRELE into xfs_unmountfs
      [XFS] stop using file_update_time
      [XFS] optimize xfs_ichgtime
      [XFS] update timestamp in xfs_ialloc manually
      [XFS] remove the sema_t from XFS.
      [XFS] replace dquot flush semaphore with a completion
      [XFS] replace inode flush semaphore with a completion
      [XFS] extend completions to provide XFS object flush requirements
      [XFS] replace the XFS buf iodone semaphore with a completion
      [XFS] clean up stale references to semaphores
      [XFS] use get_unaligned_* helpers
      [XFS] Fix compile failure in xfs_buf_trace()
      ...

commit 3e11acd4306d558249c31cf6cac09f218f2de52e
Merge: 758db3f... 5140934...
Author: Linus Torvalds <torvalds@linux-foundation.org>
Date:   Wed Aug 13 15:16:10 2008 -0700

    Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/teigland/dlm
    
    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/teigland/dlm:
      dlm: rename structs
      dlm: add missing kfrees

commit 758db3f2118703a1e36374dae5d58bed963e7e0d
Author: Linus Torvalds <torvalds@linux-foundation.org>
Date:   Wed Aug 13 14:26:22 2008 -0700

    [h8300] move include/asm-h8300 to arch/h8300/include/asm
    
    Done as a script (well, a single "git mv" actually) on request from
    Yoshinori Sato as a way to avoid a huge diff.
    
    Requested-by: Yoshinori Sato <ysato@users.sourceforge.jp>
    Cc: Sam Ravnborg <sam@ravnborg.org>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

commit 51409340d240dabe66adb49f645588c3a802d055
Author: David Teigland <teigland@redhat.com>
Date:   Thu Jul 31 09:31:53 2008 -0500

    dlm: rename structs
    
    Add a dlm_ prefix to the struct names in config.c.  This resolves a
    conflict with struct node in particular, when include/linux/node.h
    happens to be included.
    
    Reported-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: David Teigland <teigland@redhat.com>

commit cb980d9a3ec3d39e30e0a4c473df528c09e0dcf3
Author: David Teigland <teigland@redhat.com>
Date:   Tue Jul 29 15:21:19 2008 -0500

    dlm: add missing kfrees
    
    A couple of unlikely error conditions were missing a kfree on the error
    exit path.
    
    Reported-by: Juha Leppanen <juha_motorsportcom@luukku.com>
    Signed-off-by: David Teigland <teigland@redhat.com>

commit e49140120c88eb99db1a9172d9ac224c0f2bbdd2
Author: Suresh Siddha <suresh.b.siddha@intel.com>
Date:   Wed Aug 13 22:02:26 2008 +1000

    crypto: padlock - fix VIA PadLock instruction usage with irq_ts_save/restore()
    
    Wolfgang Walter reported this oops on his via C3 using padlock for
    AES-encryption:
    
    ##################################################################
    
    BUG: unable to handle kernel NULL pointer dereference at 000001f0
    IP: [<c01028c5>] __switch_to+0x30/0x117
    *pde = 00000000
    Oops: 0002 [#1] PREEMPT
    Modules linked in:
    
    Pid: 2071, comm: sleep Not tainted (2.6.26 #11)
    EIP: 0060:[<c01028c5>] EFLAGS: 00010002 CPU: 0
    EIP is at __switch_to+0x30/0x117
    EAX: 00000000 EBX: c0493300 ECX: dc48dd00 EDX: c0493300
    ESI: dc48dd00 EDI: c0493530 EBP: c04cff8c ESP: c04cff7c
     DS: 007b ES: 007b FS: 0000 GS: 0033 SS: 0068
    Process sleep (pid: 2071, ti=c04ce000 task=dc48dd00 task.ti=d2fe6000)
    Stack: dc48df30 c0493300 00000000 00000000 d2fe7f44 c03b5b43 c04cffc8 00000046
           c0131856 0000005a dc472d3c c0493300 c0493470 d983ae00 00002696 00000000
           c0239f54 00000000 c04c4000 c04cffd8 c01025fe c04f3740 00049800 c04cffe0
    Call Trace:
     [<c03b5b43>] ? schedule+0x285/0x2ff
     [<c0131856>] ? pm_qos_requirement+0x3c/0x53
     [<c0239f54>] ? acpi_processor_idle+0x0/0x434
     [<c01025fe>] ? cpu_idle+0x73/0x7f
     [<c03a4dcd>] ? rest_init+0x61/0x63
     =======================
    
    Wolfgang also found out that adding kernel_fpu_begin() and kernel_fpu_end()
    around the padlock instructions fix the oops.
    
    Suresh wrote:
    
    These padlock instructions though don't use/touch SSE registers, but it behaves
    similar to other SSE instructions. For example, it might cause DNA faults
    when cr0.ts is set. While this is a spurious DNA trap, it might cause
    oops with the recent fpu code changes.
    
    This is the code sequence  that is probably causing this problem:
    
    a) new app is getting exec'd and it is somewhere in between
       start_thread() and flush_old_exec() in the load_xyz_binary()
    
    b) At pont "a", task's fpu state (like TS_USEDFPU, used_math() etc) is
       cleared.
    
    c) Now we get an interrupt/softirq which starts using these encrypt/decrypt
       routines in the network stack. This generates a math fault (as
       cr0.ts is '1') which sets TS_USEDFPU and restores the math that is
       in the task's xstate.
    
    d) Return to exec code path, which does start_thread() which does
       free_thread_xstate() and sets xstate pointer to NULL while
       the TS_USEDFPU is still set.
    
    e) At the next context switch from the new exec'd task to another task,
       we have a scenarios where TS_USEDFPU is set but xstate pointer is null.
       This can cause an oops during unlazy_fpu() in __switch_to()
    
    Now:
    
    1) This should happen with or with out pre-emption. Viro also encountered
       similar problem with out CONFIG_PREEMPT.
    
    2) kernel_fpu_begin() and kernel_fpu_end() will fix this problem, because
       kernel_fpu_begin() will manually do a clts() and won't run in to the
       situation of setting TS_USEDFPU in step "c" above.
    
    3) This was working before the fpu changes, because its a spurious
       math fault  which doesn't corrupt any fpu/sse registers and the task's
       math state was always in an allocated state.
    
    With out the recent lazy fpu allocation changes, while we don't see oops,
    there is a possible race still present in older kernels(for example,
    while kernel is using kernel_fpu_begin() in some optimized clear/copy
    page and an interrupt/softirq happens which uses these padlock
    instructions generating DNA fault).
    
    This is the failing scenario that existed even before the lazy fpu allocation
    changes:
    
    0. CPU's TS flag is set
    
    1. kernel using FPU in some optimized copy  routine and while doing
    kernel_fpu_begin() takes an interrupt just before doing clts()
    
    2. Takes an interrupt and ipsec uses padlock instruction. And we
    take a DNA fault as TS flag is still set.
    
    3. We handle the DNA fault and set TS_USEDFPU and clear cr0.ts
    
    4. We complete the padlock routine
    
    5. Go back to step-1, which resumes clts() in kernel_fpu_begin(), finishes
    the optimized copy routine and does kernel_fpu_end(). At this point,
    we have cr0.ts again set to '1' but the task's TS_USEFPU is stilll
    set and not cleared.
    
    6. Now kernel resumes its user operation. And at the next context
    switch, kernel sees it has do a FP save as TS_USEDFPU is still set
    and then will do a unlazy_fpu() in __switch_to(). unlazy_fpu()
    will take a DNA fault, as cr0.ts is '1' and now, because we are
    in __switch_to(), math_state_restore() will get confused and will
    restore the next task's FP state and will save it in prev tasks's FP state.
    Remember, in __switch_to() we are already on the stack of the next task
    but take a DNA fault for the prev task.
    
    This causes the fpu leakage.
    
    Fix the padlock instruction usage by calling them inside the
    context of new routines irq_ts_save/restore(), which clear/restore cr0.ts
    manually in the interrupt context. This will not generate spurious DNA
    in the  context of the interrupt which will fix the oops encountered and
    the possible FPU leakage issue.
    
    Reported-and-bisected-by: Wolfgang Walter <wolfgang.walter@stwm.de>
    Signed-off-by: Suresh Siddha <suresh.b.siddha@intel.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>

commit 318e5313923197e71a94f7b18835151649384b7f
Author: Herbert Xu <herbert@gondor.apana.org.au>
Date:   Tue Aug 5 13:34:30 2008 +0800

    crypto: hash - Add missing top-level functions
    
    The top-level functions init/update/final were missing for ahash.
    
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>

commit dbaaba1d0abf6871c7db6e3d15a46206bc386db1
Author: Herbert Xu <herbert@gondor.apana.org.au>
Date:   Sun Aug 3 21:19:43 2008 +0800

    crypto: hash - Fix digest size check for digest type
    
    The changeset ca786dc738f4f583b57b1bba7a335b5e8233f4b0
    
    	crypto: hash - Fixed digest size check
    
    missed one spot for the digest type.  This patch corrects that
    error.
    
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>

commit f176e632efad33aeb2d3c5ddfa86861c0d60553c
Author: Herbert Xu <herbert@gondor.apana.org.au>
Date:   Wed Jul 30 16:23:51 2008 +0800

    crypto: tcrypt - Fix AEAD chunk testing
    
    My changeset 4b22f0ddb6564210c9ded7ba25b2a1007733e784
    
    	crypto: tcrpyt - Remove unnecessary kmap/kunmap calls
    
    introduced a typo that broke AEAD chunk testing.  In particular,
    axbuf should really be xbuf.
    
    There is also an issue with testing the last segment when encrypting.
    The additional part produced by AEAD wasn't tested.  Similarly, on
    decryption the additional part of the AEAD input is mistaken for
    corruption.
    
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>

commit f3c85bc1bc72b4cc8d58664a490a9d42bdb6565a
Author: Lee Nipper <lee.nipper@freescale.com>
Date:   Wed Jul 30 16:26:57 2008 +0800

    crypto: talitos - Add handling for SEC 3.x treatment of link table
    
    Later SEC revision requires the link table (used for scatter/gather)
    to have an extra entry to account for the total length in descriptor [4],
    which contains cipher Input and ICV.
    This only applies to decrypt, not encrypt.
    Without this change, on 837x, a gather return/length error results
    when a decryption uses a link table to gather the fragments.
    This is observed by doing a ping with size of 1447 or larger with AES,
    or a ping with size 1455 or larger with 3des.
    
    So, add check for SEC compatible "fsl,3.0" for using extra link table entry.
    
    Signed-off-by: Lee Nipper <lee.nipper@freescale.com>
    Signed-off-by: Kim Phillips <kim.phillips@freescale.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>

commit c6a7b0f8a49aa71792dd108efc535435f462bf79
Author: Lachlan McIlroy <lachlan@sgi.com>
Date:   Wed Aug 13 16:52:50 2008 +1000

    [XFS] Fix use after free in xfs_log_done().
    
    The ticket allocation code got reworked in 2.6.26 and we now free tickets
    whereas before we used to cache them so the use-after-free went
    undetected.
    
    SGI-PV: 985525
    
    SGI-Modid: xfs-linux-melb:xfs-kern:31877a
    
    Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>
    Signed-off-by: David Chinner <david@fromorbit.com>

commit c94312de223644e2f18e7064ae8cafa14e5c6ef6
Author: Ruben Porras <ruben.porras@linworks.de>
Date:   Wed Aug 13 16:52:25 2008 +1000

    [XFS] Make xfs_bmap_*_count_leaves void.
    
    xfs_bmap_count_leaves and xfs_bmap_disk_count_leaves always return always
    0, make them void.
    
    SGI-PV: 981498
    
    SGI-Modid: xfs-linux-melb:xfs-kern:31844a
    
    Signed-off-by: Ruben Porras <ruben.porras@linworks.de>
    Signed-off-by: Donald Douwsma <donaldd@sgi.com>
    Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>

commit 5695ef46ef02ba1c6658daa46e6879a2d4f52f5f
Author: Lachlan McIlroy <lachlan@sgi.com>
Date:   Wed Aug 13 16:51:57 2008 +1000

    [XFS] Use KM_NOFS for debug trace buffers
    
    Use KM_NOFS to prevent recursion back into the filesystem which can cause
    deadlocks.
    
    In the case of xfs_iread() we hold the lock on the inode cluster buffer
    while allocating memory for the trace buffers. If we recurse back into XFS
    to flush data that may require a transaction to allocate extents which
    needs log space. This can deadlock with the xfsaild thread which can't
    push the tail of the log because it is trying to get the inode cluster
    buffer lock.
    
    SGI-PV: 981498
    
    SGI-Modid: xfs-linux-melb:xfs-kern:31838a
    
    Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>
    Signed-off-by: David Chinner <david@fromorbit.com>

commit d62c251fe4a06144255291cffd68cbadf3bf002f
Author: Christoph Hellwig <hch@infradead.org>
Date:   Wed Aug 13 16:51:29 2008 +1000

    [XFS] use KM_MAYFAIL in xfs_mountfs
    
    Use KM_MAYFAIL for the m_perag allocation, we can deal with the error
    easily and blocking forever during mount is not a good idea either.
    
    SGI-PV: 981498
    
    SGI-Modid: xfs-linux-melb:xfs-kern:31837a
    
    Signed-off-by: Christoph Hellwig <hch@infradead.org>
    Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>

commit ff4f038c6bbb27044a84adbcd27bc237d7237e66
Author: Christoph Hellwig <hch@infradead.org>
Date:   Wed Aug 13 16:50:47 2008 +1000

    [XFS] refactor xfs_mount_free
    
    xfs_mount_free mostly frees the perag data, which is something that is
    duplicated in the mount error path.
    
    Move the XFS_QM_DONE call to the caller and remove the useless
    mutex_destroy/spinlock_destroy calls so that we can re-use it for the
    mount error path. Also rename it to xfs_free_perag to reflect what it
    does.
    
    SGI-PV: 981498
    
    SGI-Modid: xfs-linux-melb:xfs-kern:31836a
    
    Signed-off-by: Christoph Hellwig <hch@infradead.org>
    Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>

commit 6203300e5e9121440b27d3ed0b9fe2a64cb62b53
Author: Christoph Hellwig <hch@infradead.org>
Date:   Wed Aug 13 16:50:21 2008 +1000

    [XFS] don't call xfs_freesb from xfs_unmountfs
    
    xfs_readsb is called before xfs_mount so xfs_freesb should be called after
    xfs_unmountfs, too. This means it now happens after a few things during
    the of xfs_unmount which all have nothing to do with the superblock.
    
    SGI-PV: 981498
    
    SGI-Modid: xfs-linux-melb:xfs-kern:31835a
    
    Signed-off-by: Christoph Hellwig <hch@infradead.org>
    Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>

commit 41b5c2e77a0221cf07ac127afa122add67ac5418
Author: Christoph Hellwig <hch@infradead.org>
Date:   Wed Aug 13 16:49:57 2008 +1000

    [XFS] xfs_unmountfs should return void
    
    xfs_unmounts can't and shouldn't return errors so declare it as returning
    void.
    
    SGI-PV: 981498
    
    SGI-Modid: xfs-linux-melb:xfs-kern:31833a
    
    Signed-off-by: Christoph Hellwig <hch@infradead.org>
    Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>

commit 4249023a5d14f28d4e68ba15d24d25c0e5be71a6
Author: Christoph Hellwig <hch@infradead.org>
Date:   Wed Aug 13 16:49:32 2008 +1000

    [XFS] cleanup xfs_mountfs
    
    Remove all the useless flags and code keyed off it in xfs_mountfs.
    
    SGI-PV: 981498
    
    SGI-Modid: xfs-linux-melb:xfs-kern:31831a
    
    Signed-off-by: Christoph Hellwig <hch@infradead.org>
    Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>

commit 77508ec8e6ed72c9ba8ca74248a7aabd664e3f57
Author: Christoph Hellwig <hch@infradead.org>
Date:   Wed Aug 13 16:49:04 2008 +1000

    [XFS] move root inode IRELE into xfs_unmountfs
    
    The root inode is allocated in xfs_mountfs so it should be release in
    xfs_unmountfs. For the unmount case that means we do it after the the
    xfs_sync(mp, SYNC_WAIT | SYNC_CLOSE) in the forced shutdown case and the
    dmapi unmount event. Note that both reference the rip variable which might
    be freed by that time in case inode flushing has kicked in, so strictly
    speaking this might count as a bug fix
    
    SGI-PV: 981498
    
    SGI-Modid: xfs-linux-melb:xfs-kern:31830a
    
    Signed-off-by: Christoph Hellwig <hch@infradead.org>
    Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>

commit 3a76c1ea07ee4e9da7c8e476e43be7e1b2bf24fb
Author: Christoph Hellwig <hch@infradead.org>
Date:   Wed Aug 13 16:48:12 2008 +1000

    [XFS] stop using file_update_time
    
    xfs_ichtime updates the xfs_inode and Linux inode timestamps just fine, no
    need to call file_update_time and then copy the values over to the XFS
    inode. The only additional thing in file_update_time are checks not
    applicable to the write path.
    
    SGI-PV: 981498
    
    SGI-Modid: xfs-linux-melb:xfs-kern:31829a
    
    Signed-off-by: Christoph Hellwig <hch@infradead.org>
    Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>
    Signed-off-by: David Chinner <david@fromorbit.com>

commit 8e5975c82f66bce36955f38e9abc259d5143a72a
Author: Christoph Hellwig <hch@infradead.org>
Date:   Wed Aug 13 16:45:13 2008 +1000

    [XFS] optimize xfs_ichgtime
    
    Port a little optmization from file_update_time to xfs_ichgtime, and only
    update the timestamp and mark the inode dirty if the timestamp actually
    changes in the timer tick resultion supported by the running kernel.
    
    SGI-PV: 981498
    
    SGI-Modid: xfs-linux-melb:xfs-kern:31827a
    
    Signed-off-by: Christoph Hellwig <hch@infradead.org>
    Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>

commit dff35fd41f252476cba7f761d7204dd9f47d739e
Author: Christoph Hellwig <hch@infradead.org>
Date:   Wed Aug 13 16:44:15 2008 +1000

    [XFS] update timestamp in xfs_ialloc manually
    
    In xfs_ialloc we just want to set all timestamps to the current time. We
    don't need to mark the inode dirty like xfs_ichgtime does, and we don't
    need nor want the opimizations in xfs_ichgtime that I will introduce in
    the next patch.
    
    So just opencode the timestamp update in xfs_ialloc, and remove the new
    unused XFS_ICHGTIME_ACC case in xfs_ichgtime.
    
    SGI-PV: 981498
    
    SGI-Modid: xfs-linux-melb:xfs-kern:31825a
    
    Signed-off-by: Christoph Hellwig <hch@infradead.org>
    Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>

commit ab4a9b04a33c97dd17495f943447f5a15ecf2b51
Author: David Chinner <david@fromorbit.com>
Date:   Wed Aug 13 16:42:10 2008 +1000

    [XFS] remove the sema_t from XFS.
    
    Now that all users of the sema_t are gone from XFS we can finally kill it.
    
    SGI-PV: 981498
    
    SGI-Modid: xfs-linux-melb:xfs-kern:31823a
    
    Signed-off-by: David Chinner <david@fromorbit.com>
    Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>

commit e1f49cf20cea18e3d1963939fe8612a75e319fbd
Author: David Chinner <david@fromorbit.com>
Date:   Wed Aug 13 16:41:43 2008 +1000

    [XFS] replace dquot flush semaphore with a completion
    
    Use the new completion flush code to implement the dquot flush lock.
    Removes one of the final users of semaphores in the XFS code base.
    
    SGI-PV: 981498
    
    SGI-Modid: xfs-linux-melb:xfs-kern:31822a
    
    Signed-off-by: David Chinner <david@fromorbit.com>
    Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>

commit c63942d3eeffb98219e05d0976862ab9907d297d
Author: David Chinner <david@fromorbit.com>
Date:   Wed Aug 13 16:41:16 2008 +1000

    [XFS] replace inode flush semaphore with a completion
    
    Use the new completion flush code to implement the inode flush lock.
    Removes one of the final users of semaphores in the XFS code base.
    
    SGI-PV: 981498
    
    SGI-Modid: xfs-linux-melb:xfs-kern:31817a
    
    Signed-off-by: David Chinner <david@fromorbit.com>
    Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>

commit 39d2f1ab2a36ac527a6c41cfe689f50c239eaca3
Author: David Chinner <david@fromorbit.com>
Date:   Wed Aug 13 16:40:43 2008 +1000

    [XFS] extend completions to provide XFS object flush requirements
    
    XFS object flushing doesn't quite match existing completion semantics.  It
    mixed exclusive access with completion.  That is, we need to mark an object as
    being flushed before flushing it to disk, and then block any other attempt to
    flush it until the completion occurs.  We do this but adding an extra count to
    the completion before we start using them.  However, we still need to
    determine if there is a completion in progress, and allow no-blocking attempts
    fo completions to decrement the count.
    
    To do this we introduce:
    
    int try_wait_for_completion(struct completion *x)
    	returns a failure status if done == 0, otherwise decrements done
    	to zero and returns a "started" status. This is provided
    	to allow counted completions to begin safely while holding
    	object locks in inverted order.
    
    int completion_done(struct completion *x)
    	returns 1 if there is no waiter, 0 if there is a waiter
    	(i.e. a completion in progress).
    
    This replaces the use of semaphores for providing this exclusion
    and completion mechanism.
    
    SGI-PV: 981498
    
    SGI-Modid: xfs-linux-melb:xfs-kern:31816a
    
    Signed-off-by: David Chinner <david@fromorbit.com>
    Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>

commit b4dd330b9e0c9c78ebff754e72563b148f05e9e0
Author: David Chinner <david@fromorbit.com>
Date:   Wed Aug 13 16:36:11 2008 +1000

    [XFS] replace the XFS buf iodone semaphore with a completion
    
    The xfs_buf_t b_iodonesema is really just a semaphore that wants to be a
    completion. Change it to a completion and remove the last user of the
    sema_t from XFS.
    
    SGI-PV: 981498
    
    SGI-Modid: xfs-linux-melb:xfs-kern:31815a
    
    Signed-off-by: David Chinner <david@fromorbit.com>
    Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>

commit 12017faf387437c01ff63bbe46b629550b15bd70
Author: David Chinner <david@fromorbit.com>
Date:   Wed Aug 13 16:34:31 2008 +1000

    [XFS] clean up stale references to semaphores
    
    A lot of code has been converted away from semaphores, but there are still
    comments that reference semaphore behaviour. The log code is the worst
    offender. Update the comments to reflect what the code really does now.
    
    SGI-PV: 981498
    
    SGI-Modid: xfs-linux-melb:xfs-kern:31814a
    
    Signed-off-by: David Chinner <david@fromorbit.com>
    Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>

commit 597bca6378e0273a5d16346c941cab1ec2e0116d
Author: Harvey Harrison <harvey.harrison@gmail.com>
Date:   Wed Aug 13 16:29:21 2008 +1000

    [XFS] use get_unaligned_* helpers
    
    SGI-PV: 981498
    
    SGI-Modid: xfs-linux-melb:xfs-kern:31813a
    
    Signed-off-by: Harvey Harrison <harvey.harrison@gmail.com>
    Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>

commit d63f154a36c4ec7c2826874371887cecae375ebb
Author: Lachlan McIlroy <lachlan@sgi.com>
Date:   Wed Aug 13 16:28:40 2008 +1000

    [XFS] Fix compile failure in xfs_buf_trace()
    
    SGI-PV: 957103
    
    SGI-Modid: xfs-linux-melb:xfs-kern:31804a
    
    Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>

commit 169d6227a71da125913c69c381643a8ae89da62d
Author: Christoph Hellwig <hch@infradead.org>
Date:   Wed Aug 13 16:25:27 2008 +1000

    [XFS] Use the same btree_cur union member for alloc and inobt trees.
    
    The alloc and inobt btree use the same agbp/agno pair in the btree_cur
    union. Make them use the same bc_private.a union member so that code for
    these two short form btree implementations can be shared.
    
    SGI-PV: 981498
    
    SGI-Modid: xfs-linux-melb:xfs-kern:31788a
    
    Signed-off-by: Christoph Hellwig <hch@infradead.org>
    Signed-off-by: Tim Shimmin <tes@sgi.com>
    Signed-off-by: David Chinner <david@fromorbit.com>
    Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>

commit cdcf43335cbb2380e533441e007e0c4ec42634d5
Author: Christoph Hellwig <hch@infradead.org>
Date:   Wed Aug 13 16:23:50 2008 +1000

    [XFS] small cleanups in xfs_btree.c
    
    Remove unneeded xfs_btree_get_block forward declaration. Move
    xfs_btree_firstrec next to xfs_btree_lastrec.
    
    SGI-PV: 981498
    
    SGI-Modid: xfs-linux-melb:xfs-kern:31787a
    
    Signed-off-by: Christoph Hellwig <hch@infradead.org>
    Signed-off-by: Tim Shimmin <tes@sgi.com>
    Signed-off-by: David Chinner <david@fromorbit.com>
    Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>

commit 41be8bed1f3168f34386f3a15d63682cfd586b8e
Author: Christoph Hellwig <hch@infradead.org>
Date:   Wed Aug 13 16:23:13 2008 +1000

    [XFS] sanitize xfs_initialize_vnode
    
    Sanitize setting up the Linux indode.
    
    Setting up the xfs_inode <-> inode link is opencoded in xfs_iget_core now
    because that's the only place it needs to be done, xfs_initialize_vnode is
    renamed to xfs_setup_inode and loses all superflous paramaters. The check
    for I_NEW is removed because it always is true and the di_mode check moves
    into xfs_iget_core because it's only needed there.
    
    xfs_set_inodeops and xfs_revalidate_inode are merged into xfs_setup_inode
    and the whole things is moved into xfs_iops.c where it belongs.
    
    SGI-PV: 981498
    
    SGI-Modid: xfs-linux-melb:xfs-kern:31782a
    
    Signed-off-by: Christoph Hellwig <hch@infradead.org>
    Signed-off-by: Niv Sardi <xaiki@sgi.com>
    Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>

commit 5ec7f8c7d14a3ea6bf920b3350f5c5d3527cb837
Author: Christoph Hellwig <hch@infradead.org>
Date:   Wed Aug 13 16:22:40 2008 +1000

    [XFS] kill bhv_vnode_t
    
    All remaining bhv_vnode_t instance are in code that's more or less Linux
    specific. (Well, for xfs_acl.c that could be argued, but that code is on
    the removal list, too). So just do an s/bhv_vnode_t/struct inode/ over the
    whole tree. We can clean up variable naming and some useless helpers
    later.
    
    SGI-PV: 981498
    
    SGI-Modid: xfs-linux-melb:xfs-kern:31781a
    
    Signed-off-by: Christoph Hellwig <hch@infradead.org>
    Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>

commit df80c933f9eb01a7af3812bbe437e38205386304
Author: Christoph Hellwig <hch@infradead.org>
Date:   Wed Aug 13 16:22:09 2008 +1000

    [XFS] remove some easy bhv_vnode_t instances
    
    In various places we can just move a VFS_I call into the argument list of
    called functions/macros instead of having a local bhv_vnode_t.
    
    SGI-PV: 981498
    
    SGI-Modid: xfs-linux-melb:xfs-kern:31776a
    
    Signed-off-by: Christoph Hellwig <hch@infradead.org>
    Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>

commit e1cccd917be7364f81b5dc4e33ee3a6e0db21a99
Author: Christoph Hellwig <hch@infradead.org>
Date:   Wed Aug 13 16:18:07 2008 +1000

    [XFS] kill xfs_lock_dir_and_entry
    
    When multiple inodes are locked in XFS it happens in order of the inode
    number, with the everything but the first inode trylocked if any of the
    previous inodes is in the AIL.
    
    Except for the sorting of the inodes this logic is implemented in
    xfs_lock_inodes, but also partially duplicated in xfs_lock_dir_and_entry
    in a particularly stupid way adds a lock roundtrip if the inode ordering
    is not optimal.
    
    This patch adds a new helper xfs_lock_two_inodes that takes two inodes and
    locks them in the most optimal way according to the above locking protocol
    and uses it for all places that want to lock two inodes.
    
    The only caller of xfs_lock_inodes is xfs_rename which might lock up to
    four inodes.
    
    SGI-PV: 981498
    
    SGI-Modid: xfs-linux-melb:xfs-kern:31772a
    
    Signed-off-by: Christoph Hellwig <hch@infradead.org>
    Signed-off-by: Donald Douwsma <donaldd@sgi.com>
    Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>

commit 1550d0b0b08bc34c0c37a86bd884b1a70782104e
Author: Christoph Hellwig <hch@infradead.org>
Date:   Wed Aug 13 16:17:37 2008 +1000

    [XFS] kill INDUCE_IO_ERROR
    
    All the error injection is already enabled through ifdef DEBUG, so kill
    the never set second cpp symbol to activate it without the rest of the
    debugging infrastructure.
    
    SGI-PV: 981498
    
    SGI-Modid: xfs-linux-melb:xfs-kern:31771a
    
    Signed-off-by: Christoph Hellwig <hch@infradead.org>
    Signed-off-by: Niv Sardi <xaiki@sgi.com>
    Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>

commit 907f49a8f552acc5d75635e86d567f05daf5c0d8
Author: Christoph Hellwig <hch@infradead.org>
Date:   Wed Aug 13 16:13:45 2008 +1000

    [XFS] implement IHOLD/IRELE directly
    
    Now that all direct calls to VN_HOLD/VN_RELE are gone we can implement
    IHOLD/IRELE directly.
    
    For the IHOLD case also replace igrab with a direct increment of i_count
    because we are guaranteed to already have a live and referenced inode by
    the VFS. Also remove the vn_hold statistic because it's been rather
    meaningless for some time with most references done by other callers.
    
    SGI-PV: 981498
    
    SGI-Modid: xfs-linux-melb:xfs-kern:31764a
    
    Signed-off-by: Christoph Hellwig <hch@infradead.org>
    Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>

commit 0b1f917730dc2276fadbd9813ac3666abd7b1cbd
Author: Christoph Hellwig <hch@infradead.org>
Date:   Wed Aug 13 16:13:09 2008 +1000

    [XFS] remove remaining VN_HOLD calls
    
    Use IHOLD(ip) instead of VN_HOLD(VFS_I(ip)).
    
    SGI-PV: 981498
    
    SGI-Modid: xfs-linux-melb:xfs-kern:31765a
    
    Signed-off-by: Christoph Hellwig <hch@infradead.org>
    Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>

commit 604323ca760beebf00a07153706dcbe7128324e0
Author: Christoph Hellwig <hch@infradead.org>
Date:   Wed Aug 13 16:12:37 2008 +1000

    [XFS] remove spurious VN_HOLD/VN_RELE calls from xfs_acl.c
    
    All the ACL routines are called from inode operations which are guaranteed
    to have a referenced inode by the VFS, so there's no need for the ACL code
    to grab another temporary one.
    
    SGI-PV: 981498
    
    SGI-Modid: xfs-linux-melb:xfs-kern:31763a
    
    Signed-off-by: Christoph Hellwig <hch@infradead.org>
    Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>

commit 863890cd90e8b213f7028036c6e2200d93223527
Author: Christoph Hellwig <hch@infradead.org>
Date:   Wed Aug 13 16:12:05 2008 +1000

    [XFS] kill vn_to_inode
    
    bhv_vnode_t is just a typedef for struct inode, so there's
    no need for a helper to convert between the two.
    
    SGI-PV: 981498
    
    SGI-Modid: xfs-linux-melb:xfs-kern:31761a
    
    Signed-off-by: Christoph Hellwig <hch@infradead.org>
    Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>

commit a19d033cd2cc66120f01b370ec081d67b59b7924
Author: Christoph Hellwig <hch@infradead.org>
Date:   Wed Aug 13 16:11:26 2008 +1000

    [XFS] Remove vn_from_inode()
    
    bhv_vnode_t is just a typedef for struct inode, so there's
    no need for a helper to convert between the two.
    
    SGI-PV: 981498
    
    SGI-Modid: xfs-linux-melb:xfs-kern:31760a
    
    Signed-off-by: Christoph Hellwig <hch@infradead.org>
    Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>

commit 39dab9d7daf5f664a3569378107a2cb284c8a594
Author: Eric Sandeen <sandeen@sandeen.net>
Date:   Wed Aug 13 16:10:52 2008 +1000

    [XFS] remove shouting-indirection macros from xfs_trans.h
    
    SGI-PV: 981498
    
    SGI-Modid: xfs-linux-melb:xfs-kern:31758a
    
    Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
    Signed-off-by: Niv Sardi <xaiki@sgi.com>
    Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>

commit db7a2c71d287686eef1d4df1565fa32f89a9fe68
Author: Eric Sandeen <sandeen@sandeen.net>
Date:   Wed Aug 13 16:09:25 2008 +1000

    [XFS] convert xfs to use ERR_CAST
    
    Looks like somehow xfs got missed in the conversion that took place in
    e231c2ee64eb1c5cd3c63c31da9dac7d888dcf7f, "Convert ERR_PTR(PTR_ERR(p))
    instances to ERR_CAST(p)
    <http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit
    diff;h=e231c2ee64eb1c5cd3c63c31da9dac7d888dcf7f>"
    
    SGI-PV: 981498
    
    SGI-Modid: xfs-linux-melb:xfs-kern:31757a
    
    Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
    Acked-by: David Howells <dhowells@redhat.com>
    Signed-off-by: Niv Sardi <xaiki@sgi.com>
    Signed-off-by: Christoph Hellwig <hch@infradead.org>
    Signed-off-by: David Howells <dhowells@redhat.com>
    Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>

commit cdeb380aa2ca3b8f8ba3736f2469f5818eadb9aa
Author: Eric Sandeen <sandeen@sandeen.net>
Date:   Wed Aug 13 16:07:53 2008 +1000

    [XFS] remove INT_GET and friends
    
    Thanks to hch's endian work, INT_GET etc are no longer used, and may as
    well be removed. INT_SET is still used in the acl code, though.
    
    SGI-PV: 981498
    
    SGI-Modid: xfs-linux-melb:xfs-kern:31756a
    
    Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
    Signed-off-by: Niv Sardi <xaiki@sgi.com>
    Signed-off-by: Christoph Hellwig <hch@infradead.org>
    Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>

commit 322ff6b8cd54feb1c4c0426630f3642ab1dd2176
Author: Niv Sardi <xaiki@sgi.com>
Date:   Wed Aug 13 16:05:49 2008 +1000

    [XFS] Move xfs_attr_rolltrans to xfs_trans_roll
    
    Move it from the attr code to the transaction code and make
    the attr code call the new function.
    
    We rolltrans is really usefull whenever we want to use rolling
    transaction, should be generic, it isn't dependent on any part
    of the attr code anyway.
    
    We use this excuse to change all the:
    
    if ((error = xfs_attr_rolltrans()))
    
    calls into:
    
    error = xfs_trans_roll();
    
    if (error)
    
    SGI-PV: 981498
    
    SGI-Modid: xfs-linux-melb:xfs-kern:31729a
    
    Signed-off-by: Niv Sardi <xaiki@sgi.com>
    Signed-off-by: Christoph Hellwig <hch@infradead.org>
    Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>

commit a738159df2b97398f960978272944cbdd8f726ef
Author: Christoph Hellwig <hch@infradead.org>
Date:   Wed Aug 13 16:04:05 2008 +1000

    [XFS] don't leak m_fsname/m_rtname/m_logname
    
    Add a helper to free the m_fsname/m_rtname/m_logname allocations and use
    it properly for all mount failure cases. Also switch the allocations for
    these to kstrdup while we're at it.
    
    SGI-PV: 981498
    
    SGI-Modid: xfs-linux-melb:xfs-kern:31728a
    
    Signed-off-by: Christoph Hellwig <hch@infradead.org>
    Signed-off-by: Niv Sardi <xaiki@sgi.com>
    Signed-off-by: David Chinner <david@fromorbit.com>
    Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>

commit 5e9da7b7a1edfc75a839b0269935393fa347f38b
Author: Niv Sardi <xaiki@sgi.com>
Date:   Wed Aug 13 16:03:35 2008 +1000

    [XFS] Move attr log alloc size calculator to another function.
    
    We will need that to be able to calculate the size of log we need for a
    specific attr (for Create+EA). The local flag is needed so that we can
    fail if we run into ENOSPC when trying to alloc blocks.
    
    SGI-PV: 981498
    
    SGI-Modid: xfs-linux-melb:xfs-kern:31727a
    
    Signed-off-by: Niv Sardi <xaiki@sgi.com>
    Signed-off-by: Christoph Hellwig <hch@infradead.org>
    Signed-off-by: Tim Shimmin <tes@sgi.com>
    Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>

commit 6785073ba138a2f0dc575c332c1812b713670b6a
Author: David Chinner <david@fromorbit.com>
Date:   Wed Aug 13 16:02:51 2008 +1000

    [XFS] Use KM_NOFS for incore inode extent tree allocation V2
    
    If we allow incore extent tree allocations to recurse into the
    filesystem under memory pressure, new delayed allocations through
    xfs_iomap_write_delay() can deadlock on themselves if memory
    reclaim tries to write back dirty pages from that inode.
    
    It will deadlock in xfs_iomap_write_allocate() trying to take the
    ilock we already hold. This can also show up as complex ABBA deadlocks
    when multiple threads are triggering memory reclaim when trying to
    allocate extents.
    
    The main cause of this is the fact that delayed allocation is not done in
    a transaction, so KM_NOFS is not automatically added to the allocations to
    prevent this recursion.
    
    Mark all allocations done for the incore inode extent tree as KM_NOFS to
    ensure they never recurse back into the filesystem.
    
    Version 2: o KM_NOFS implies KM_SLEEP, so just use KM_NOFS
    
    SGI-PV: 981498
    
    SGI-Modid: xfs-linux-melb:xfs-kern:31726a
    
    Signed-off-by: David Chinner <david@fromorbit.com>
    Signed-off-by: Niv Sardi <xaiki@sgi.com>
    Signed-off-by: Christoph Hellwig <hch@infradead.org>
    Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>

commit e6064d30c3407db7f8c19d5538ec847b29e47e30
Author: David Chinner <david@fromorbit.com>
Date:   Wed Aug 13 16:01:45 2008 +1000

    [XFS] XFS: Kill xfs_vtoi()
    
    xfs_vtoi() is redundant and only unsed in small sections of code.
    Replace them with widely used XFS_I() inline and kill xfs_vtoi().
    
    SGI-PV: 981498
    
    SGI-Modid: xfs-linux-melb:xfs-kern:31725a
    
    Signed-off-by: David Chinner <david@fromorbit.com>
    Signed-off-by: Niv Sardi <xaiki@sgi.com>
    Signed-off-by: Christoph Hellwig <hch@infradead.org>
    Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>

commit e4f7529108d01bf66af8ebecd6be2b98d8db30ce
Author: David Chinner <david@fromorbit.com>
Date:   Wed Aug 13 16:00:45 2008 +1000

    [XFS] Kill shouty XFS_ITOV() macro
    
    Replace XFS_ITOV() with the new VFS_I() inline.
    
    SGI-PV: 981498
    
    SGI-Modid: xfs-linux-melb:xfs-kern:31724a
    
    Signed-off-by: David Chinner <david@fromorbit.com>
    Signed-off-by: Niv Sardi <xaiki@sgi.com>
    Signed-off-by: Christoph Hellwig <hch@infradead.org>
    Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>

commit 705db4a24e0576f30d736de3c49623b4686ce473
Author: David Chinner <david@fromorbit.com>
Date:   Wed Aug 13 15:47:43 2008 +1000

    [XFS] kill shouty XFS_ITOV_NULL macro
    
    Replace XFS_ITOV_NULL() with the new VFS_I() inline.
    
    SGI-PV: 981498
    
    SGI-Modid: xfs-linux-melb:xfs-kern:31722a
    
    Signed-off-by: David Chinner <david@fromorbit.com>
    Signed-off-by: Niv Sardi <xaiki@sgi.com>
    Signed-off-by: Christoph Hellwig <hch@infradead.org>
    Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>

commit 016516462575d28fab3354f762cad16c86c09116
Author: David Chinner <david@fromorbit.com>
Date:   Wed Aug 13 15:45:15 2008 +1000

    [XFS] Avoid directly referencing the VFS inode.
    
    In several places we directly convert from the XFS inode
    to the linux (VFS) inode by a simple deference of ip->i_vnode.
    We should not do this - a helper function should be used to
    extract the VFS inode from the XFS inode.
    
    Introduce the function VFS_I() to extract the VFS inode
    from the XFS inode. The name was chosen to match XFS_I() which
    is used to extract the XFS inode from the VFS inode.
    
    SGI-PV: 981498
    
    SGI-Modid: xfs-linux-melb:xfs-kern:31720a
    
    Signed-off-by: David Chinner <david@fromorbit.com>
    Signed-off-by: Niv Sardi <xaiki@sgi.com>
    Signed-off-by: Christoph Hellwig <hch@infradead.org>
    Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>

commit 3790689fa3c771bba6bafb7dee3e8389dd0b55bc
Author: Lachlan McIlroy <lachlan@sgi.com>
Date:   Wed Aug 13 15:42:10 2008 +1000

    [XFS] Do not access buffers after dropping reference count
    
    We should not access a buffer after dropping it's reference count
    otherwise we could race with another thread that releases the final
    reference count and frees the buffer causing us to access potentially
    unmapped memory. The bug this change fixes only occured on DEBUG XFS since
    the offending code was in an ASSERT.
    
    SGI-PV: 984429
    
    SGI-Modid: xfs-linux-melb:xfs-kern:31715a
    
    Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>
    Signed-off-by: David Chinner <david@fromorbit.com>

commit 79071eb0b2f142b9cc6531d04fa2915943938b5e
Author: David Chinner <david@fromorbit.com>
Date:   Wed Aug 13 15:41:12 2008 +1000

    [XFS] Use the generic bitops rather than implementing them ourselves.
    
    This keeps xfs_lowbit64 as it was since there aren't good generic helpers
    there ... Patch inspired by Andi Kleen.
    
    SGI-PV: 981498
    
    SGI-Modid: xfs-linux-melb:xfs-kern:31472a
    
    Signed-off-by: David Chinner <david@fromorbit.com>
    Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
    Signed-off-by: Donald Douwsma <donaldd@sgi.com>
    Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>