[Ocfs2-commits] branch, master, updated. e4a699f4ec7c47e093e21ea80f304b20ecf0adae

svn-commits at oss.oracle.com svn-commits at oss.oracle.com
Mon May 24 18:25:17 PDT 2010


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "The ocfs2 filesystem version 1.8".

The branch, master has been updated
       via  e4a699f4ec7c47e093e21ea80f304b20ecf0adae (commit)
       via  61c873ef39b47462eacc38b7796c6262b19a7721 (commit)
       via  c6accad2b9d82a94e0638d8493bf8929d73cee6c (commit)
       via  4e41deecf9515926461ce6d47e48d2c260639ca2 (commit)
       via  3a053fdd25c83fcee82a3a8caba0c805471f51e3 (commit)
       via  d1738009a6f64b0bc36126bad37b37191456b643 (commit)
       via  01f73a81959d1053e661942bfbddbf9a5a834ba7 (commit)
       via  f9f6de61af8d282efbf70df9cb4718eac50e195d (commit)
       via  2f12921568cfc825b9e44ee1986e07c416baf29c (commit)
       via  a47967bdac9c95f012491d9f35c8f8bc52e6b1be (commit)
       via  c5e51c126e957f24b2d14e11045f9f5306232d26 (commit)
       via  802f34fa97faf49f63b3e22ed194118fcc09ea91 (commit)
       via  3317c4274100b52bc700d0dae9330dd9423cdbdc (commit)
       via  6a26737aaa644a98163227e67081a8472b19ba14 (commit)
       via  a47aecb2b310ac63f55531e25af0c6255a3bec31 (commit)
       via  bf06c34c432c09afebf4bfada9ba92e2570897d1 (commit)
       via  d7bda0a1ed5d1ef64888eca9272d64c44a53717b (commit)
       via  28ffb90c4d2dc932789c844ba09309783935e348 (commit)
       via  c31fb5abd61bdb0d0c434c6ae55ab08bfcbe447e (commit)
       via  afed748ce70d632a1e264f216f224b213d351cba (commit)
       via  5a39deef51e24dce41b2d8021ff8df31d77dd745 (commit)
       via  6cfdea70a8ed679dbcb4d4197c671c52aa09bb19 (commit)
       via  856d9e5005f5ec6efe4d350a31a83d473c8c26ae (commit)
       via  3bb0dfec468c71b153b9e13b3f182eec4b866757 (commit)
       via  fff4a9c498145fd1e5053eec49c82e81a2e69b93 (commit)
       via  4bc78e61e0522e1f235601ce4c5e75303669eb02 (commit)
       via  3808b13882c3dbab17528d19ea9ae3aea3d593d6 (commit)
       via  4a99df78403ca375e1c5e065731dd45f46e26e7e (commit)
       via  1777e7bc98429c479eb8d8d0d9b74e5d12fe6188 (commit)
       via  44703bfc16c3157f0d19dc8853d807f9cc16e23e (commit)
       via  9d8d392cedbc8fa7c947806a223d89dab4721fbf (commit)
       via  83525a99d2f80d866c97f67af73a0708fde1324a (commit)
       via  1d64035948229824005feb654aa06c3acdfd16a2 (commit)
       via  7502928a14062d2775c8c46ee1599990e4194955 (commit)
       via  ddc7ca97dae236c7831b6acbda3c15532796b3f6 (commit)
       via  f44bb6a7fa1477d10ffc8d133b66dcb0c5c3cbb0 (commit)
       via  c08a3c958075f45b699ed2ff41fd27707526f040 (commit)
       via  ca6cb78aa18617da0ebd3615e8206478f8a2085d (commit)
       via  c464222e9475c6e695a0174a08c5d087b2b9530d (commit)
       via  b13f29328a9d16a6e6c877ec8316de6fd3f74884 (commit)
       via  31c002e82a0f84fb0e27415c945721a9aa061fac (commit)
       via  3a2545009fb36da640864f8e01398ff44e1e831d (commit)
       via  0a66f90cd4490647967eb4780b1bafee728814ab (commit)
       via  37b42748e14241d915aba677cc30591ffc510065 (commit)
       via  a9c6188754789afe26680589d2fb314a578a3c94 (commit)
       via  d83f3381f41e12beb3163143cd15908b394838f5 (commit)
       via  9c7aa370addfd4da0eebecaa8278e766b9b9cc60 (commit)
       via  b471561c8ff5ccada66556400e8393cc720554d4 (commit)
       via  ea6cc90b7841c39798f167b470b7f9e04f92e339 (commit)
       via  b3eaa86a7e2a51ae0a51cb6709943e9b3cca92e3 (commit)
       via  064464ef703915d33057b8c24499f908808a0288 (commit)
       via  8c1a9e74a5beb668a25acff2c53591cc63fb915e (commit)
       via  2c4fccfecbf8a602c659a98c2ff1c4d4e8892eb7 (commit)
       via  af0599bb00301eb280bb9acf2d8b0920a092ddd0 (commit)
       via  a048e8886cc4fa0377dec864f450a1a1ad3b5133 (commit)
       via  a5e93cb8bf11dccf863983e4d897f45604766f03 (commit)
       via  c30f1e0daf2971e3800d056c5ba2e64ddd8aebcf (commit)
       via  eee4fd034c65952b2f402fb46a7c8ea922814c82 (commit)
       via  1bee4f867b300161d40677076019de1939fd7e2d (commit)
       via  a4a62fefcd06de13bdb0c02286413a03e0e84d88 (commit)
       via  2ad2fee7560c809086a89add9a4ae6d384e38d95 (commit)
       via  acd7d8d2db9ac4a2e51718e1b076639738015ed5 (commit)
       via  45028837adcce7b9b347a250dc6911435adc04a1 (commit)
       via  1af1d5da117baad4751c7d836c2fc6e1fc629f04 (commit)
       via  aac6380f3513dd753e2e4859ad66ab7fd2d3b9e3 (commit)
       via  f2557329a87187a149de2661d841e18250588463 (commit)
       via  0d3c845f489d3a77ad7e2c9cf3c9049c366d0f9f (commit)
       via  ae227f240dac853be8c633d7bfdec87e66deffbc (commit)
       via  8dc829d1090e95ea0df24f7c3dfd17098e0b9206 (commit)
       via  2ccde3ec362b6cf1651d6636c859e22d781c23d0 (commit)
       via  1b0c63a6e129e6f0f8c4100e0d5c36714ffbaf26 (commit)
       via  92135eb51b072dacbd0f10007e98d83c0fc2dfb2 (commit)
       via  88fae8717a90542b8745e86e665fb6d16a3f84ce (commit)
       via  ff1172e81be5ff6d7749a90ee15505193a32da9c (commit)
       via  8863b2009018d798a98384f0a0160c1dcbdb0bf9 (commit)
       via  825e21203b218946c51342ab0acf3d79b23575b1 (commit)
       via  12e23e5ee067b47ce551f8c0e66a849aff24555d (commit)
       via  d8593e0900c65f58351310c1540d3f54bcd9e4d0 (commit)
       via  c99eb567efa89c74ff44757afefeff7e9ee003bb (commit)
       via  877baf1c367aa7bb4248ee4eb884bde4c1b66551 (commit)
       via  66225d70bea83932b1157be54ed8d2e2c0100787 (commit)
       via  0f478cade2a97f84a61ac8977c6e166eae0e5f01 (commit)
       via  cd95f6abad19faadd67928015ab00dbb14f856ed (commit)
       via  05cd359d29815d5b3540608e2a57eddb0fe32868 (commit)
       via  503a2efd8ac337b782f7863cf75471a4e6720fe8 (commit)
       via  90650521c2d5306ad87a633527a28fb922777f2a (commit)
       via  828c357bf0338075b85a352b4dccef679c99f3d0 (commit)
       via  034da4d4224b2e4a0f4f7fd0121bf86686f8979a (commit)
       via  6dbfb08aa43c67fc735e3dac9c212b32ccc44245 (commit)
       via  6692c1ac2427d467bc6e173014ef5c3eebd74df4 (commit)
       via  e81c141076f9c5029de6cd54e4d3a47b03debd5f (commit)
       via  abb0d79c55281776e11b9fe539830e05293b0523 (commit)
       via  3e4e70e232f07c03bdc49c8d65c9f2450348a928 (commit)
       via  6b38732b02c3df2e9243d5af3ae4a24785b9ca8a (commit)
       via  40b4c04c6d816db94b4c0197c8a4916f901d75c9 (commit)
       via  c33f0706cfca0b771735579a323b4554348be899 (commit)
       via  dd932b4ab2df34a2297da7d207dcb1aad7b8bf19 (commit)
       via  c3ed7a36ff0860cad3431bd3b05b75f740b7c101 (commit)
       via  0cac96e9ad8885e27f914540dd88aa78322e1532 (commit)
       via  dd4b4b24ff06f5459365f1aab4ac2dbebc66cabc (commit)
       via  da9a84d845bc32f44a53e9edc03653d24deeeb55 (commit)
       via  20cc3a94da2a276964ca641f9a32c19e8f58ff9a (commit)
       via  d869bdf1577bf8ba8eeec138a736beda78b30ca9 (commit)
       via  7ba437ed26ada272686f5318eba4be94ad161564 (commit)
       via  0da4a1eb4a13ece20eac0027107f35538fb4e429 (commit)
       via  1b53214f9a6be539ed6a8619f1e358d7650f0128 (commit)
       via  d245da25c2d8e0f5b6bea05698fae06fdbe2c543 (commit)
       via  cf8bf2c5e14541091a1b9057b83dca0545d12ec1 (commit)
       via  18ffec1f3ed54b7ab98f17bbae6ce02dd8188e9f (commit)
       via  7b6a6a3207c914122f7223ed5cfeeccb1f40ecca (commit)
      from  b228c774abf85eb2d0f041c91262598dd1cae4b0 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit e4a699f4ec7c47e093e21ea80f304b20ecf0adae
Author: Joel Becker <joel.becker at oracle.com>
Date:   Mon May 3 19:15:49 2010 -0700

    ocfs2: Avoid a gcc warning in ocfs2_wipe_inode().
    
    Mainline commit d577632e65ea01fb3b124b652d7bd2381251da3c
    
    gcc warns that a variable is uninitialized.  It's actually handled, but
    an early return fools gcc.  Let's just initialize the variable to a
    garbage value that will crash if the usage is ever broken.
    
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit 61c873ef39b47462eacc38b7796c6262b19a7721
Author: Li Dongyang <lidongyang at novell.com>
Date:   Sat Apr 17 17:49:10 2010 +0800

    ocfs2: Avoid direct write if we fall back to buffered I/O
    
    Mainline commit 6b933c8e6f1a2f3118082c455eef25f9b1ac7b45
    
    when we fall back to buffered write from direct write, we call
    __generic_file_aio_write() but that will end up doing direct write
    even we are only prepared to do buffered write because the file
    has the O_DIRECT flag set. This is a fix for
    https://bugzilla.novell.com/show_bug.cgi?id=591039
    revised with Joel's comments.
    
    Signed-off-by: Li Dongyang <lidongyang at novell.com>
    Acked-by: Mark Fasheh <mfasheh at suse.com>
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit c6accad2b9d82a94e0638d8493bf8929d73cee6c
Author: Joel Becker <joel.becker at oracle.com>
Date:   Fri Apr 23 15:24:59 2010 -0700

    ocfs2_dlmfs: Fix math error when reading LVB.
    
    Mainline commit a36d515c7a2dfacebcf41729f6812dbc424ebcf0
    
    When asked for a partial read of the LVB in a dlmfs file, we can
    accidentally calculate a negative count.
    
    Reported-by: Dan Carpenter <error27 at gmail.com>
    Cc: <stable at kernel.org>
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit 4e41deecf9515926461ce6d47e48d2c260639ca2
Author: Tao Ma <tao.ma at oracle.com>
Date:   Wed Apr 21 14:05:55 2010 +0800

    ocfs2: Update VFS inode's id info after reflink.
    
    Mainline commit c21a534e2f24968cf74976a4e721ac194db30ded
    
    In reflink we update the id info on the disk but forgot to update
    the corresponding information in the VFS inode.  Update them
    accordingly when we want to preserve the attributes.
    
    Reported-by: Jeff Liu <jeff.liu at oracle.com>
    Signed-off-by: Tao Ma <tao.ma at oracle.com>
    Cc: <stable at kernel.org>
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit 3a053fdd25c83fcee82a3a8caba0c805471f51e3
Author: Dan Carpenter <error27 at gmail.com>
Date:   Thu Apr 22 11:39:29 2010 +0200

    ocfs2: potential ERR_PTR dereference on error paths
    
    Mainline commit 0350cb078f5035716ebdad4ad4709d02fe466a8a
    
    If "handle" is non null at the end of the function then we assume it's a
    valid pointer and pass it to ocfs2_commit_trans();
    
    Signed-off-by: Dan Carpenter <error27 at gmail.com>
    Cc: <stable at kernel.org>
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit d1738009a6f64b0bc36126bad37b37191456b643
Author: Mark Fasheh <mfasheh at suse.com>
Date:   Fri Apr 23 11:42:22 2010 -0700

    ocfs2: Add directory entry later in ocfs2_symlink() and ocfs2_mknod()
    
    Mainline commit a9743fcdc0eb43d028b71267438076e1b0112ba0
    
    If we get a failure during creation of an inode we'll allow the orphan code
    to remove the inode, which is correct. However, we need to ensure that we
    don't get any errors after the call to ocfs2_add_entry(), otherwise we could
    leave a dangling directory reference. The solution is simple - in both
    cases, all I had to do was move ocfs2_dentry_attach_lock() above the
    ocfs2_add_entry() call.
    
    Signed-off-by: Mark Fasheh <mfasheh at suse.com>

commit 01f73a81959d1053e661942bfbddbf9a5a834ba7
Author: Li Dongyang <lidongyang at novell.com>
Date:   Thu Apr 22 16:11:29 2010 +0800

    ocfs2: use OCFS2_INODE_SKIP_ORPHAN_DIR in ocfs2_mknod error path
    
    Mainline commit 062d340384dcf77dfd8de0a082b5da571de3925a
    
    Mark the inode with flag OCFS2_INODE_SKIP_ORPHAN_DIR in ocfs2_mknod, so we
    can kill the inode in case of error.
    
    [ Fixed up comment style -Mark ]
    
    Signed-off-by: Li Dongyang <lidongyang at novell.com>
    Signed-off-by: Mark Fasheh <mfasheh at suse.com>

commit f9f6de61af8d282efbf70df9cb4718eac50e195d
Author: Li Dongyang <lidongyang at novell.com>
Date:   Thu Apr 22 16:11:25 2010 +0800

    ocfs2: use OCFS2_INODE_SKIP_ORPHAN_DIR in ocfs2_symlink error path
    
    Mainline commit ab41fdc8fdd9f0942430941c1e2b516fd481371d
    
    Mark the inode with flag OCFS2_INODE_SKIP_ORPHAN_DIR when we get an error
    after allocating one, so that we can kill the inode.
    
    Signed-off-by: Li Dongyang <lidongyang at novell.com>
    Signed-off-by: Mark Fasheh <mfasheh at suse.com>

commit 2f12921568cfc825b9e44ee1986e07c416baf29c
Author: Li Dongyang <lidongyang at novell.com>
Date:   Thu Apr 22 16:11:19 2010 +0800

    ocfs2: add OCFS2_INODE_SKIP_ORPHAN_DIR flag and honor it in the inode wipe code
    
    Mainline commit d4cd1871cff68e188dadcf6d1280762522b643eb
    
    Currently in the error path of ocfs2_symlink and ocfs2_mknod, we just call
    iput with the inode we failed with, but the inode wipe code will complain
    because we don't add the inode to orphan dir. One solution would be to lock
    the orphan dir during the entire transaction, but that's too heavy for a
    rare error path. Instead, we add a flag, OCFS2_INODE_SKIP_ORPHAN_DIR which
    tells the inode wipe code that it won't find this inode in the orphan dir.
    
    [ Merge fixes and comment style cleanups -Mark ]
    
    Signed-off-by: Li Dongyang <lidongyang at novell.com>
    Signed-off-by: Mark Fasheh <mfasheh at suse.com>

commit a47967bdac9c95f012491d9f35c8f8bc52e6b1be
Author: Tao Ma <tao.ma at oracle.com>
Date:   Fri Apr 16 13:59:25 2010 +0800

    ocfs2: Reset status if we want to restart file extension.
    
    Mainline commit 79681842e160c3211eeeb47ea31b061038d1e41e
    
    In __ocfs2_extend_allocation, we will restart our file extension
    if ((!status) && restart_func). But there is a bug that the
    status is still left as -EGAIN. This is really an old bug,
    but it is masked by the return value of ocfs2_journal_dirty.
    So it show up when we make ocfs2_journal_dirty void.
    
    Signed-off-by: Tao Ma <tao.ma at oracle.com>
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit c5e51c126e957f24b2d14e11045f9f5306232d26
Author: Joel Becker <joel.becker at oracle.com>
Date:   Wed Mar 31 18:25:44 2010 -0700

    ocfs2: Compute metaecc for superblocks during online resize.
    
    Mainline commit a42ab8e1a37257da37e0f018e707bf365ac24531
    
    Online resize writes out the new superblock and its backups directly.
    The metaecc data wasn't being recomputed.  Let's do that directly.
    
    Signed-off-by: Joel Becker <joel.becker at oracle.com>
    Acked-by: Mark Fasheh <mfasheh at suse.com>[
    Cc: stable at kernel.org

commit 802f34fa97faf49f63b3e22ed194118fcc09ea91
Author: Wengang Wang <wen.gang.wang at oracle.com>
Date:   Wed Mar 24 22:40:44 2010 +0800

    ocfs2: Check the owner of a lockres inside the spinlock
    
    Mainline commit 428257f8870f0e72e85ce782d091fa1f366de7df
    
    The checking of lockres owner in dlm_update_lvb() is not inside spinlock
    protection. I don't see problem in current call path of dlm_update_lvb().
    But just for code robustness.
    
    Signed-off-by: Wengang Wang <wen.gang.wang at oracle.com>
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit 3317c4274100b52bc700d0dae9330dd9423cdbdc
Author: Coly Li <coly.li at suse.de>
Date:   Fri Mar 26 05:15:12 2010 +0800

    ocfs2: one more warning fix in ocfs2_file_aio_write(), v2
    
    Mainline commit a03ab788d070c256eff1ac24cf0e3bc2ca148096
    MIME-Version: 1.0
    Content-Type: text/plain; charset=UTF-8
    Content-Transfer-Encoding: 8bit
    
    This patch fixes another compiling warning in ocfs2_file_aio_write() like this,
        fs/ocfs2/file.c: In function ‘ocfs2_file_aio_write’:
        fs/ocfs2/file.c:2026: warning: suggest parentheses around ‘&&’ within ‘||’
    
    As Joel suggested, '!ret' is unary, this version removes the wrap from '!ret'.
    
    Signed-off-by: Coly Li <coly.li at suse.de>
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit 6a26737aaa644a98163227e67081a8472b19ba14
Author: Tao Ma <tao.ma at oracle.com>
Date:   Tue Mar 30 13:21:31 2010 +0800

    ocfs2_dlmfs: User DLM_* when decoding file open flags.
    
    Mainline commit efd647f744f3cf504ed83580274bd4b6918139fe
    
    In commit 0016eedc4185a3cd7e578b027a6e69001b85d6c4, we have
    changed dlmfs to use stackglue. So when use DLM* when we
    decode dlm flags from open level.
    
    Signed-off-by: Tao Ma <tao.ma at oracle.com>
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit a47aecb2b310ac63f55531e25af0c6255a3bec31
Author: Tejun Heo <tj at kernel.org>
Date:   Wed Mar 24 17:04:11 2010 +0900

    include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h
    
    Mainline commit 5a0e3ad6af8660be21ca98a971cd00f331318c05
    
    percpu.h is included by sched.h and module.h and thus ends up being
    included when building most .c files.  percpu.h includes slab.h which
    in turn includes gfp.h making everything defined by the two files
    universally available and complicating inclusion dependencies.
    
    percpu.h -> slab.h dependency is about to be removed.  Prepare for
    this change by updating users of gfp and slab facilities include those
    headers directly instead of assuming availability.  As this conversion
    needs to touch large number of source files, the following script is
    used as the basis of conversion.
    
      http://userweb.kernel.org/~tj/misc/slabh-sweep.py
    
    The script does the followings.
    
    * Scan files for gfp and slab usages and update includes such that
      only the necessary includes are there.  ie. if only gfp is used,
      gfp.h, if slab is used, slab.h.
    
    * When the script inserts a new include, it looks at the include
      blocks and try to put the new include such that its order conforms
      to its surrounding.  It's put in the include block which contains
      core kernel includes, in the same order that the rest are ordered -
      alphabetical, Christmas tree, rev-Xmas-tree or at the end if there
      doesn't seem to be any matching order.
    
    * If the script can't find a place to put a new include (mostly
      because the file doesn't have fitting include block), it prints out
      an error message indicating which .h file needs to be added to the
      file.
    
    The conversion was done in the following steps.
    
    1. The initial automatic conversion of all .c files updated slightly
       over 4000 files, deleting around 700 includes and adding ~480 gfp.h
       and ~3000 slab.h inclusions.  The script emitted errors for ~400
       files.
    
    2. Each error was manually checked.  Some didn't need the inclusion,
       some needed manual addition while adding it to implementation .h or
       embedding .c file was more appropriate for others.  This step added
       inclusions to around 150 files.
    
    3. The script was run again and the output was compared to the edits
       from #2 to make sure no file was left behind.
    
    4. Several build tests were done and a couple of problems were fixed.
       e.g. lib/decompress_*.c used malloc/free() wrappers around slab
       APIs requiring slab.h to be added manually.
    
    5. The script was run on all .h files but without automatically
       editing them as sprinkling gfp.h and slab.h inclusions around .h
       files could easily lead to inclusion dependency hell.  Most gfp.h
       inclusion directives were ignored as stuff from gfp.h was usually
       wildly available and often used in preprocessor macros.  Each
       slab.h inclusion directive was examined and added manually as
       necessary.
    
    6. percpu.h was updated not to include slab.h.
    
    7. Build test were done on the following configurations and failures
       were fixed.  CONFIG_GCOV_KERNEL was turned off for all tests (as my
       distributed build env didn't work with gcov compiles) and a few
       more options had to be turned off depending on archs to make things
       build (like ipr on powerpc/64 which failed due to missing writeq).
    
       * x86 and x86_64 UP and SMP allmodconfig and a custom test config.
       * powerpc and powerpc64 SMP allmodconfig
       * sparc and sparc64 SMP allmodconfig
       * ia64 SMP allmodconfig
       * s390 SMP allmodconfig
       * alpha SMP allmodconfig
       * um on x86_64 SMP allmodconfig
    
    8. percpu.h modifications were reverted so that it could be applied as
       a separate patch and serve as bisection point.
    
    Given the fact that I had only a couple of failures from tests on step
    6, I'm fairly confident about the coverage of this conversion patch.
    If there is a breakage, it's likely to be something in one of the arch
    headers which should be easily discoverable easily on most builds of
    the specific arch.
    
    Signed-off-by: Tejun Heo <tj at kernel.org>
    Guess-its-ok-by: Christoph Lameter <cl at linux-foundation.org>
    Cc: Ingo Molnar <mingo at redhat.com>
    Cc: Lee Schermerhorn <Lee.Schermerhorn at hp.com>

commit bf06c34c432c09afebf4bfada9ba92e2570897d1
Author: Srinivas Eeda <srinivas.eeda at oracle.com>
Date:   Mon Mar 22 16:50:47 2010 -0700

    ocfs2: Fix a race in o2dlm lockres mastery
    
    Mainline commit 14741472a05245ed5778aa0aec055e1f920b6ef8
    
    In o2dlm, the master of a lock resource keeps a map of all interested
    nodes.  This prevents the master from purging the resource before an
    interested node can create a lock.
    
    A race between the mastery thread and the mastery handler allowed an
    interested node to discover who the master is without informing the
    master directly.  This is easily fixed by holding the dlm spinlock a
    little longer in the mastery handler.
    
    Signed-off-by: Srinivas Eeda <srinivas.eeda at oracle.com>
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit d7bda0a1ed5d1ef64888eca9272d64c44a53717b
Author: Tristan Ye <tristan.ye at oracle.com>
Date:   Fri Mar 19 09:21:10 2010 +0800

    Ocfs2: Handle deletion of reflinked oprhan inodes correctly.
    
    Mainline commit b54c2ca475fa7d7450a45b6d778dae9dbe0bcbfe
    
    The rule is that all inodes in the orphan dir have ORPHANED_FL,
    otherwise we treated it as an ERROR.  This rule works well except
    for some rare cases of reflink operation:
    
    http://oss.oracle.com/bugzilla/show_bug.cgi?id=1215
    
    The problem is caused by how reflink and our orphan_scan thread
    interact.
    
     * The orphan scan pulls the orphans into a queue first, then runs the
       queue at a later time.  We only hold the orphan_dir's lock
       during scanning.
    
     * Reflink create a oprhaned target in orphan_dir as its first step.
       It removes the target and clears the flag as the final step.
       These two steps take the orphan_dir's lock, but it is not held for
       the duration.
    
    Based on the above semantics, a reflink inode can be moved out of the
    orphan dir and have its ORPHANED_FL cleared before the queue of orphans
    is run.  This leads to a ERROR in ocfs2_query_wipde_inode().
    
    This patch teaches ocfs2_query_wipe_inode() to detect previously
    orphaned reflink targets.  If a reflink fails or a crash occurs during
    the relfink operation, the inode will retain ORPHANED_FL and will be
    properly wiped.
    
    Signed-off-by: Tristan Ye <tristan.ye at oracle.com>
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit 28ffb90c4d2dc932789c844ba09309783935e348
Author: Tristan Ye <tristan.ye at oracle.com>
Date:   Fri Mar 19 09:21:09 2010 +0800

    Ocfs2: Journaling i_flags and i_orphaned_slot when adding inode to orphan dir.
    
    Mainline commit 3939fda4b389993caf8741df5739b3e49f33a263
    
    Currently, some callers were missing to journal the dirty inode after
    adding it to orphan dir.
    
    Now we're going to journal such modifications within the ocfs2_orphan_add()
    itself, It's safe to do so, though some existing caller may duplicate this,
    and it makes the logic look more straightforward anyway.
    
    Signed-off-by: Tristan Ye <tristan.ye at oracle.com>
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit c31fb5abd61bdb0d0c434c6ae55ab08bfcbe447e
Author: Mark Fasheh <mfasheh at suse.com>
Date:   Thu Mar 11 18:31:09 2010 -0800

    ocfs2: Clear undo bits when local alloc is freed
    
    Mainline commit b4414eea0e7b9c134262c801a87e338bf675962c
    
    When the local alloc file changes windows, unused bits are freed back to the
    global bitmap. By defnition, those bits can not be in use by any file. Also,
    the local alloc will never have been able to allocate those bits if they
    were part of a previous truncate. Therefore it makes sense that we should
    clear unused local alloc bits in the undo buffer so that they can be used
    immediatly.
    
    [ Modified to call it ocfs2_release_clusters() -- Joel ]
    
    Signed-off-by: Mark Fasheh <mfasheh at suse.com>
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit afed748ce70d632a1e264f216f224b213d351cba
Author: Tao Ma <tao.ma at oracle.com>
Date:   Fri Mar 19 15:04:24 2010 +0800

    ocfs2: Init meta_ac properly in ocfs2_create_empty_xattr_block.
    
    Mainline commit b23179681c90a55e2a2083e1dde9f727ecffb2b7
    
    You can't store a pointer that you haven't filled in yet and expect it
    to work.
    
    Signed-off-by: Tao Ma <tao.ma at oracle.com>
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit 5a39deef51e24dce41b2d8021ff8df31d77dd745
Author: Tao Ma <tao.ma at oracle.com>
Date:   Fri Mar 19 15:04:23 2010 +0800

    ocfs2: Fix the update of name_offset when removing xattrs
    
    Mainline commit dfe4d3d6a6f707fff1dbfd4b8fce65e64a91b809
    
    When replacing a xattr's value, in some case we wipe its name/value
    first and then re-add it. The wipe is done by
    ocfs2_xa_block_wipe_namevalue() when the xattr is in the inode or
    block. We currently adjust name_offset for all the entries which have
    (offset < name_offset). This does not adjust the entrie we're replacing.
    Since we are replacing the entry, we don't adjust the total entry count.
    When we calculate a new namevalue location, we trust the entries
    now-wrong offset in ocfs2_xa_get_free_start().  The solution is to
    also adjust the name_offset for the replaced entry, allowing
    ocfs2_xa_get_free_start() to calculate the new namevalue location
    correctly.
    
    The following script can trigger a kernel panic easily.
    
    echo 'y'|mkfs.ocfs2 --fs-features=local,xattr -b 4K $DEVICE
    mount -t ocfs2 $DEVICE $MNT_DIR
    FILE=$MNT_DIR/$RANDOM
    for((i=0;i<76;i++))
    do
    string_76="a$string_76"
    done
    string_78="aa$string_76"
    string_82="aaaa$string_78"
    
    touch $FILE
    setfattr -n 'user.test1234567890' -v $string_76 $FILE
    setfattr -n 'user.test1234567890' -v $string_78 $FILE
    setfattr -n 'user.test1234567890' -v $string_82 $FILE
    
    Signed-off-by: Tao Ma <tao.ma at oracle.com>
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit 6cfdea70a8ed679dbcb4d4197c671c52aa09bb19
Author: Mark Fasheh <mfasheh at suse.com>
Date:   Thu Mar 11 18:43:46 2010 -0800

    ocfs2: Always try for maximum bits with new local alloc windows
    
    Mainline commit b22b63ebafb97b66d1054e69941ee049d790c6cf
    
    What we were doing before was to ask for the current window size as the
    maximum allocation. This had the effect of limiting the amount of allocation
    we could get for the local alloc during times when the window size was
    shrunk due to fragmentation. In some cases, that could actually *increase*
    fragmentation by artificially limiting the number of bits we can accept. So
    while we still want to ask for a minimum number of bits equal to window
    size, there is no reason why we should limit the number of bits the local
    alloc should accept. Hence always allow the maximum number of local alloc
    bits.
    
    Signed-off-by: Mark Fasheh <mfasheh at suse.com>
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit 856d9e5005f5ec6efe4d350a31a83d473c8c26ae
Author: Mark Fasheh <mfasheh at suse.com>
Date:   Mon Mar 15 15:39:00 2010 -0700

    ocfs2: set i_mode on disk during acl operations
    
    Mainline commit fcefd25ac89239cb57fa198f125a79ff85468c75
    
    ocfs2_set_acl() and ocfs2_init_acl() were setting i_mode on the in-memory
    inode, but never setting it on the disk copy. Thus, acls were some times not
    getting propagated between nodes. This patch fixes the issue by adding a
    helper function ocfs2_acl_set_mode() which does this the right way.
    ocfs2_set_acl() and ocfs2_init_acl() are then updated to call
    ocfs2_acl_set_mode().
    
    Signed-off-by: Mark Fasheh <mfasheh at suse.com>
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit 3bb0dfec468c71b153b9e13b3f182eec4b866757
Author: Tao Ma <tao.ma at oracle.com>
Date:   Wed Mar 10 09:56:52 2010 +0800

    ocfs2: Update i_blocks in reflink operations.
    
    Mainline commit 6527f8f848ec84b9daf1cb07601266126b8507ab
    
    In reflink, we need to upate i_blocks for the target inode.
    
    Reported-by: Jie Liu <jeff.liu at oracle.com>
    Signed-off-by: Tao Ma <tao.ma at oracle.com>
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit fff4a9c498145fd1e5053eec49c82e81a2e69b93
Author: Tao Ma <tao.ma at oracle.com>
Date:   Wed Mar 3 11:26:27 2010 +0800

    ocfs2: Change bg_chain check for ocfs2_validate_gd_parent.
    
    Mainline commit 78c37eb0d5e6a9727b12ea0f1821795ffaa66cfe
    
    In ocfs2_validate_gd_parent, we check bg_chain against the
    cl_next_free_rec of the dinode. Actually in resize, we have
    the chance of bg_chain == cl_next_free_rec. So add some
    additional condition check for it.
    
    I also rename paramter "clean_error" to "resize", since the
    old one is not clearly enough to indicate that we should only
    meet with this case in resize.
    
    btw, the correpsonding bug is
    http://oss.oracle.com/bugzilla/show_bug.cgi?id=1230.
    
    Signed-off-by: Tao Ma <tao.ma at oracle.com>
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit 4bc78e61e0522e1f235601ce4c5e75303669eb02
Author: Sachin Prabhu <sprabhu at redhat.com>
Date:   Wed Mar 10 10:28:40 2010 -0500

    Skip check for mandatory locks when unlocking
    
    Mainline commit ee860b6a650360c91f5d5f9a94262aad9be90015
    
    ocfs2_lock() will skip locks on file which has mode set to 02666. This
    is a problem in cases where the mode of the file is changed after a
    process has obtained a lock on the file.
    
    ocfs2_lock() should skip the check for mandatory locks when unlocking a
    file.
    
    Signed-off-by: Sachin Prabhu <sprabhu at redhat.com>
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit 3808b13882c3dbab17528d19ea9ae3aea3d593d6
Author: Joe Perches <joe at perches.com>
Date:   Wed Mar 10 15:20:32 2010 -0800

    fs/ocfs2/cluster/tcp.c: remove use of NIPQUAD, use %pI4
    
    Mainline commit 03affdef4fc85e416e3862abb0aa549c6034cdd0
    
    Signed-off-by: Joe Perches <joe at perches.com>
    Cc: Mark Fasheh <mfasheh at suse.com>
    Acked-by: Joel Becker <joel.becker at oracle.com>
    Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>

commit 4a99df78403ca375e1c5e065731dd45f46e26e7e
Author: Akinobu Mita <akinobu.mita at gmail.com>
Date:   Fri Mar 5 13:41:37 2010 -0800

    bitops: rename for_each_bit() to for_each_set_bit()
    
    Mainline commit 984b3f5746ed2cde3d184651dabf26980f2b66e5
    
    Rename for_each_bit to for_each_set_bit in the kernel source tree.  To
    permit for_each_clear_bit(), should that ever be added.
    
    The patch includes a macro to map the old for_each_bit() onto the new
    for_each_set_bit().  This is a (very) temporary thing to ease the migration.
    
    [akpm at linux-foundation.org: add temporary for_each_bit()]
    Suggested-by: Alexey Dobriyan <adobriyan at gmail.com>
    Suggested-by: Andrew Morton <akpm at linux-foundation.org>
    Signed-off-by: Akinobu Mita <akinobu.mita at gmail.com>
    Cc: "David S. Miller" <davem at davemloft.net>
    Cc: Russell King <rmk at arm.linux.org.uk>
    Cc: David Woodhouse <dwmw2 at infradead.org>
    Cc: Artem Bityutskiy <dedekind at infradead.org>
    Cc: Stephen Rothwell <sfr at canb.auug.org.au>
    Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>

commit 1777e7bc98429c479eb8d8d0d9b74e5d12fe6188
Author: Tristan Ye <tristan.ye at oracle.com>
Date:   Tue Mar 2 13:59:42 2010 +0800

    Ocfs2: Move ocfs2 ioctl definitions from ocfs2_fs.h to newly added ocfs2_ioctl.h
    
    Mainline commit 9df5778ecee8b301b447fc05706792d5f447ace5
    
    Currently we were adding ioctl cmds/structures for ocfs2 into ocfs2_fs.h
    which was used for define ocfs2 on-disk layout. That sounds a little bit
    confusing, and it may be quickly polluted espcially when growing the
    ocfs2_info_request ioctls afterwards(it will grow i bet).
    
    As a result, such OCFS2 IOCs do need to be placed somewhere other than
    ocfs2_fs.h, a separated ocfs2_ioctl.h will be added to store such ioctl
    structures and definitions which could also be used from userspace to
    invoke ioctls call.
    
    Signed-off-by: Tristan Ye <tristan.ye at oracle.com>
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit 44703bfc16c3157f0d19dc8853d807f9cc16e23e
Author: Wengang Wang <wen.gang.wang at oracle.com>
Date:   Fri Feb 26 18:18:25 2010 +0800

    ocfs2: send SIGXFSZ if new filesize exceeds limit -v2
    
    Mainline commit 5051f76883897ea3d3d034c92e7b84236da2ec57
    
    This patch makes ocfs2 send SIGXFSZ if new file size exceeds the rlimit.
    Processes may get SIGXFSZ on one node (in the cluster) while others will
    not on another if file size limits are different on the two nodes.
    
    Signed-off-by: Wengang Wang <wen.gang.wang at oracle.com>
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit 9d8d392cedbc8fa7c947806a223d89dab4721fbf
Author: Sunil Mushran <sunil.mushran at oracle.com>
Date:   Fri Feb 26 19:42:45 2010 -0800

    ocfs2/userdlm: Add tracing in userdlm
    
    Mainline commit 6fcef3f04a1a0f8d7a086147d2f2e650c8cc2754
    
    Make use of the newly added BASTS masklog to trace ASTs and BASTs in userdlm.
    
    Signed-off-by: Sunil Mushran <sunil.mushran at oracle.com>
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit 83525a99d2f80d866c97f67af73a0708fde1324a
Author: Sunil Mushran <sunil.mushran at oracle.com>
Date:   Fri Feb 26 19:42:44 2010 -0800

    ocfs2: Use a separate masklog for AST and BASTs
    
    Mainline commit 9b915181af0a99fe94ef0152e6a4ca9990c3b6d0
    
    This patch adds a new masklog and uses it allow tracing ASTs and BASTs
    in the dlmglue layer. This has been found to be very useful in debugging
    cluster locking issues.
    
    Signed-off-by: Sunil Mushran <sunil.mushran at oracle.com>
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit 1d64035948229824005feb654aa06c3acdfd16a2
Author: Srinivas Eeda <srinivas.eeda at oracle.com>
Date:   Fri Feb 26 12:53:51 2010 -0800

    dlm: allow dlm do recovery during shutdown
    
    Mainline commit bc9838c4d44a1713ab1bf24aa6675bc3a02b6a88
    
    If a node down event happens while dlm shutdown in progress, dlm recovery
    should be done before dlm is shutdown.  We can't migrate unrecovered locks,
    obviously.  But dlm_reco_thread only does recovery if the dlm_state is
    in DLM_CTXT_JOINED.
    
    dlm_reco_thread should do recovery if dlm_state is in DLM_CTXT_JOINED or
    DLM_CTXT_IN_SHUTDOWN.
    
    Signed-off-by: Srinivas Eeda <srinivas.eeda at oracle.com>
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit 7502928a14062d2775c8c46ee1599990e4194955
Author: Tao Ma <tao.ma at oracle.com>
Date:   Fri Feb 26 10:54:52 2010 +0800

    ocfs2: Only bug out in direct io write for reflinked extent.
    
    Mainline commit cbaee472f274ea9a98aabe47025f6e5551acadcb
    
    In ocfs2_direct_IO_get_blocks, we only need to bug out
    in case of we are going to write a recounted extent rec.
    
    What a silly bug introduced by me!
    
    Signed-off-by: Tao Ma <tao.ma at oracle.com>
    Signed-off-by: Joel Becker <joel.becker at oracle.com>
    Cc: stable at kernel.org

commit ddc7ca97dae236c7831b6acbda3c15532796b3f6
Author: Coly Li <coly.li at suse.de>
Date:   Thu Feb 25 14:57:13 2010 +0800

    ocfs2: fix warning in ocfs2_file_aio_write()
    
    Mainline commit 66b116c9d8f70baadf5b2145dddb35af222df041
    
    This patch fixes a compiling warning in ocfs2_file_aio_write().
    
    Signed-off-by: Coly Li <coly.li at suse.de>
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit f44bb6a7fa1477d10ffc8d133b66dcb0c5c3cbb0
Author: Joel Becker <joel.becker at oracle.com>
Date:   Sat Jan 30 06:02:10 2010 -0800

    ocfs2_dlmfs: Enable the use of user cluster stacks.
    
    Mainline commit cbe0e331fdbdb256943499358c75bc098a2134c1
    
    Unlike ocfs2, dlmfs has no permanent storage.  It can't store off a
    cluster stack it is supposed to be using.  So it can't specify the stack
    name in ocfs2_cluster_connect().
    
    Instead, we create ocfs2_cluster_connect_agnostic(), which simply uses
    the stack that is currently enabled.  This is find for dlmfs, which will
    rely on the stack initialization.
    
    We add the "stackglue" capability to dlmfs's capability list.  This lets
    userspace know dlmfs can be used with all cluster stacks.
    
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit c08a3c958075f45b699ed2ff41fd27707526f040
Author: Joel Becker <joel.becker at oracle.com>
Date:   Sat Jan 30 04:33:50 2010 -0800

    ocfs2_dlmfs: Use the stackglue.
    
    Mainline commit 0016eedc4185a3cd7e578b027a6e69001b85d6c4
    
    Rather than directly using o2dlm, dlmfs can now use the stackglue.  This
    allows it to use userspace cluster stacks and fs/dlm.  This commit
    forces o2cb for now.  A latter commit will bump the protocol version and
    allow non-o2cb stacks.
    
    This is one big sed, really.  LKM_xxMODE becomes DLM_LOCK_xx.  LKM_flag
    becomes DLM_LKF_flag.
    
    We also learn to check that the LVB is valid before reading it.  Any DLM
    can lose the contents of the LVB during a complicated recovery.  userdlm
    should be checking this.  Now it does.  dlmfs will return 0 from read(2)
    if the LVB was invalid.
    
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit ca6cb78aa18617da0ebd3615e8206478f8a2085d
Author: Joel Becker <joel.becker at oracle.com>
Date:   Tue Feb 9 17:52:13 2010 -0800

    ocfs2_dlmfs: Don't honor truncate. The size of a dlmfs file is LVB_LEN
    
    Mainline commit e8fce482f3702c1ad27c97b26db5022aa1fa64c7
    
    We want folks using dlmfs to be able to use the LVB in places other than
    just write(2)/read(2).  By ignoring truncate requests, we allow 'echo
    "contents" > /dlm/space/lockname' to work.
    
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit c464222e9475c6e695a0174a08c5d087b2b9530d
Author: Joel Becker <joel.becker at oracle.com>
Date:   Fri Jan 29 17:19:06 2010 -0800

    ocfs2: Pass the locking protocol into ocfs2_cluster_connect().
    
    Mainline commit 553b5eb91abd5f8e679d23ae547b92c589726814
    
    Inside the stackglue, the locking protocol structure is hanging off of
    the ocfs2_cluster_connection.  This takes it one further; the locking
    protocol is passed into ocfs2_cluster_connect().  Now different cluster
    connections can have different locking protocols with distinct asts.
    Note that all locking protocols have to keep their maximum protocol
    version in lock-step.
    
    With the protocol structure set in ocfs2_cluster_connect(), there is no
    need for the stackglue to have a static pointer to a specific protocol
    structure.  We can change initialization to only pass in the maximum
    protocol version.
    
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit b13f29328a9d16a6e6c877ec8316de6fd3f74884
Author: Joel Becker <joel.becker at oracle.com>
Date:   Fri Jan 29 16:06:29 2010 -0800

    ocfs2: Remove the ast pointers from ocfs2_stack_plugins
    
    Mainline commit e603cfb074e150736814ef093a411df32c02ba9f
    
    With the full ocfs2_locking_protocol hanging off of the
    ocfs2_cluster_connection, ast wrappers can get the ast/bast pointers
    there.  They don't need to get them from their plugin structure.
    
    The user plugin still needs the maximum locking protocol version,
    though.  This changes the plugin structure so that it only holds the max
    version, not the entire ocfs2_locking_protocol pointer.
    
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit 31c002e82a0f84fb0e27415c945721a9aa061fac
Author: Joel Becker <joel.becker at oracle.com>
Date:   Fri Jan 29 15:46:23 2010 -0800

    ocfs2: Hang the locking proto on the cluster conn and use it in asts.
    
    Mainline commit 110946c8fb23c1e1e23312afed0977ad4aa37c95
    
    With the ocfs2_cluster_connection hanging off of the ocfs2_dlm_lksb, we
    have access to it in the ast and bast wrapper functions.  Attach the
    ocfs2_locking_protocol to the conn.
    
    Now, instead of refering to a static variable for ast/bast pointers, the
    wrappers can look at the connection.  This means different connections
    can have different ast/bast pointers, and it reduces the need for the
    static pointer.
    
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit 3a2545009fb36da640864f8e01398ff44e1e831d
Author: Joel Becker <joel.becker at oracle.com>
Date:   Fri Jan 29 14:46:44 2010 -0800

    ocfs2: Attach the connection to the lksb
    
    Mainline commit c0e4133851ed94c73ee3d34a2f2a245fcd0a60a1
    
    We're going to want it in the ast functions, so we convert union
    ocfs2_dlm_lksb to struct ocfs2_dlm_lksb and let it carry the connection.
    
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit 0a66f90cd4490647967eb4780b1bafee728814ab
Author: Joel Becker <joel.becker at oracle.com>
Date:   Thu Jan 28 19:22:39 2010 -0800

    ocfs2: Pass lksbs back from stackglue ast/bast functions.
    
    Mainline commit a796d2862aed8117acc9f470f3429a5ee852912e
    
    The stackglue ast and bast functions tried to maintain the fiction that
    their arguments were void pointers.  In reality, stack_user.c had to
    know that the argument was an ocfs2_lock_res in order to get the status
    off of the lksb.  That's ugly.
    
    This changes stackglue to always pass the lksb as the argument to ast
    and bast functions.  The caller can always use container_of() to get the
    ocfs2_lock_res or user_dlm_lock_res.  The net effect to the caller is
    zero.  They still get back the lockres in their ast.  stackglue gets
    cleaner, and now can use the lksb itself.
    
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit 37b42748e14241d915aba677cc30591ffc510065
Author: Joel Becker <joel.becker at oracle.com>
Date:   Thu May 13 16:07:14 2010 +0800

    ocfs2_dlmfs: Move to its own directory
    
    Mainline commit 34a9dd7e29e9129fec40c645a03f1bbbe810e771
    
    We're going to remove the tie between ocfs2_dlmfs and o2dlm.
    ocfs2_dlmfs doesn't belong in the fs/ocfs2/dlm directory anymore.  Here
    we move it to fs/ocfs2/dlmfs.
    
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit a9c6188754789afe26680589d2fb314a578a3c94
Author: Joel Becker <joel.becker at oracle.com>
Date:   Tue Jan 26 22:14:20 2010 -0800

    ocfs2_dlmfs: Use poll() to signify BASTs.
    
    Mainline commit 65b6f3403431cd43ef7b0dab679a50f770124a65
    
    o2dlm's userspace filesystem is an easy way to use the DLM from
    userspace.  It is intentionally simple. For example, it does not allow
    for asynchronous behavior or lock conversion.  This is intentional to
    keep the interface simple.
    
    Because there is no asynchronous notification, there is no way for a
    process holding a lock to know another node needs the lock.  This is the
    number one complaint of ocfs2_dlmfs users.  Turns out, we can solve this
    very easily.  We add poll() support to ocfs2_dlmfs.  When a BAST is
    received, the lock's file descriptor will receive POLLIN.
    
    This is trivial to implement.  Userdlm already has an appropriate
    waitqueue, and the lock knows when it is blocked.
    
    We add the "bast" capability to tell userspace this is available.
    
    Signed-off-by: Joel Becker <joel.becker at oracle.com>
    Acked-by: Mark Fasheh <mfasheh at suse.com>
    
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit d83f3381f41e12beb3163143cd15908b394838f5
Author: Joel Becker <joel.becker at oracle.com>
Date:   Thu Feb 4 15:37:27 2010 -0800

    ocfs2_dlmfs: Add capabilities parameter.
    
    Mainline commit 14a437c2b67aeee2a989a5d9c7e19094355d2fed
    
    Over time, dlmfs has added some features that were not part of the
    initial ABI.  Unfortunately, some of these features are not detectable
    via standard usage.  For example, Linux's default poll always returns
    POLLIN, so there is no way for a caller of poll(2) to know when dlmfs
    added poll support.  Instead, we provide this list of new capabilities.
    
    Capabilities is a read-only attribute.  We do it as a module parameter
    so we can discover it whether dlmfs is built in, loaded, or even not
    loaded (via modinfo).
    
    The ABI features are local to this machine's dlmfs mount.  This is
    distinct from the locking protocol, which is concerned with inter-node
    interaction.
    
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit 9c7aa370addfd4da0eebecaa8278e766b9b9cc60
Author: Joel Becker <joel.becker at oracle.com>
Date:   Tue Sep 1 18:38:27 2009 -0700

    ocfs2: Handle errors while setting external xattr values.
    
    Mainline commit 399ff3a748cf4c8c853e96dd477153202636527b
    
    ocfs2 can store extended attribute values as large as a single file.  It
    does this using a standard ocfs2 btree for the large value.  However,
    the previous code did not handle all error cases cleanly.
    
    There are multiple problems to have.
    
    1) We have trouble allocating space for a new xattr.  This leaves us
       with an empty xattr.
    2) We overwrote an existing local xattr with a value root, and now we
       have an error allocating the storage.  This leaves us an empty xattr.
       where there used to be a value.  The value is lost.
    3) We have trouble truncating a reused value.  This leaves us with the
       original entry pointing to the truncated original value.  The value
       is lost.
    4) We have trouble extending the storage on a reused value.  This leaves
       us with the original value safely in place, but with more storage
       allocated when needed.
    
    This doesn't consider storing local xattrs (values that don't require a
    btree).  Those only fail when the journal fails.
    
    Case (1) is easy.  We just remove the xattr we added.  We leak the
    storage because we can't safely remove it, but otherwise everything is
    happy.  We'll print a warning about the leak.
    
    Case (4) is easy.  We still have the original value in place.  We can
    just leave the extra storage attached to this xattr.  We return the
    error, but the old value is untouched.  We print a warning about the
    storage.
    
    Case (2) and (3) are hard because we've lost the original values.  In
    the old code, we ended up with values that could be partially read.
    That's not good.  Instead, we just wipe the xattr entry and leak the
    storage.  It stinks that the original value is lost, but now there isn't
    a partial value to be read.  We'll print a big fat warning.
    
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit b471561c8ff5ccada66556400e8393cc720554d4
Author: Joel Becker <joel.becker at oracle.com>
Date:   Wed Aug 19 11:09:17 2009 -0700

    ocfs2: Set inline xattr entries with ocfs2_xa_set()
    
    Mainline commit 139ffacebf5fe2cd9e2ae40d325a9661a679ad4f
    
    ocfs2_xattr_ibody_set() is the only remaining user of
    ocfs2_xattr_set_entry().  ocfs2_xattr_set_entry() actually does two
    things: it calls ocfs2_xa_set(), and it initializes the inline xattrs.
    Initializing the inline space really belongs in its own call.
    
    We lift the initialization to ocfs2_xattr_ibody_init(), called from
    ocfs2_xattr_ibody_set() only when necessary.  Now
    ocfs2_xattr_ibody_set() can call ocfs2_xa_set() directly.
    ocfs2_xattr_set_entry() goes away.
    
    Another nice fact is that ocfs2_init_dinode_xa_loc() can trust
    i_xattr_inline_size.
    
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit ea6cc90b7841c39798f167b470b7f9e04f92e339
Author: Joel Becker <joel.becker at oracle.com>
Date:   Wed Aug 19 02:13:50 2009 -0700

    ocfs2: Set xattr block entries with ocfs2_xa_set()
    
    Mainline commit d3981544d7a4ed276966cdd58fe2f5d6e8a585d9
    
    ocfs2_xattr_block_set() calls into ocfs2_xattr_set_entry() with just the
    HAS_XATTR flag.  Most of the machinery of ocfs2_xattr_set_entry() is
    skipped.  All that really happens other than the call to ocfs2_xa_set()
    is making sure the HAS_XATTR flag is set on the inode.
    
    But HAS_XATTR should be set when we also set di->i_xattr_loc.  And
    that's done in ocfs2_create_xattr_block().  So let's move it there, and
    then ocfs2_xattr_block_set() can just call ocfs2_xa_set().
    
    While we're there, ocfs2_create_xattr_block() can take the set_ctxt for
    a smaller argument list.  It also learns to set HAS_XATTR_FL, because it
    knows for sure.  ocfs2_create_empty_xatttr_block() in the reflink path
    fakes a set_ctxt to call ocfs2_create_xattr_block().
    
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit b3eaa86a7e2a51ae0a51cb6709943e9b3cca92e3
Author: Joel Becker <joel.becker at oracle.com>
Date:   Tue Aug 18 21:03:24 2009 -0700

    ocfs2: Let ocfs2_xa_prepare_entry() do space checks.
    
    Mainline commit c5d95df5f78312c879f3058059c98a08821897a5
    
    ocfs2_xattr_set_in_bucket() doesn't need to do its own hacky space
    checking.  Let's let ocfs2_xa_prepare_entry() (via ocfs2_xa_set()) do
    the more accurate work.  Whenever it doesn't have space,
    ocfs2_xattr_set_in_bucket() can try to get more space.
    
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit 064464ef703915d33057b8c24499f908808a0288
Author: Joel Becker <joel.becker at oracle.com>
Date:   Tue Aug 18 20:40:14 2009 -0700

    ocfs2: Gell into ocfs2_xa_set()
    
    Mainline commit bca5e9bd1eb2a9422a2ff29e822a956310653754
    
    ocfs2_xa_set() wraps the ocfs2_xa_prepare_entry()/ocfs2_xa_store_value()
    logic.  Both callers can now use the same routine.  ocfs2_xa_remove()
    moves directly into ocfs2_xa_set().
    
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit 8c1a9e74a5beb668a25acff2c53591cc63fb915e
Author: Joel Becker <joel.becker at oracle.com>
Date:   Tue Aug 18 20:26:41 2009 -0700

    ocfs2: Allocation in ocfs2_xa_prepare_entry(), values in ocfs2_xa_store_value()
    
    Mainline commit 73857ee0b548017f9632a0d0e6fe2dabbdc11d31
    
    ocfs2_xa_prepare_entry() gets all the logic to add, remove, or modify
    external value trees.  Now, when it exits, the entry is ready to receive
    a value of any size.
    
    ocfs2_xa_remove() is added to handle the complete removal of an entry.
    It truncates the external value tree before calling
    ocfs2_xa_remove_entry().
    
    ocfs2_xa_store_inline_value() becomes ocfs2_xa_store_value().  It can
    store any value.
    
    ocfs2_xattr_set_entry() loses all the allocation logic and just uses
    these functions.  ocfs2_xattr_set_value_outside() disappears.
    
    ocfs2_xattr_set_in_bucket() uses these functions and makes
    ocfs2_xattr_set_entry_in_bucket() obsolete.  That goes away, as does
    ocfs2_xattr_bucket_set_value_outside() and
    ocfs2_xattr_bucket_value_truncate().
    
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit 2c4fccfecbf8a602c659a98c2ff1c4d4e8892eb7
Author: Joel Becker <joel.becker at oracle.com>
Date:   Tue Aug 18 13:52:38 2009 -0700

    ocfs2: Teach ocfs2_xa_loc how to do its own journal work
    
    Mainline commit cf2bc809403ae48a4a2bb5cc551d2ec35f2e4a47
    
    We're going to want to make sure our buffers get accessed and dirtied
    correctly.  So have the xa_loc do the work.  This includes storing the
    inode on ocfs2_xa_loc.
    
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit af0599bb00301eb280bb9acf2d8b0920a092ddd0
Author: Joel Becker <joel.becker at oracle.com>
Date:   Tue Aug 18 13:20:27 2009 -0700

    ocfs2: Provide ocfs2_xa_fill_value_buf() for external value processing
    
    Mainline commit 3fc12afa0cea5dc8845487b685165c89934ca1eb
    
    We use the ocfs2_xattr_value_buf structure to manage external values.
    It lets the value tree code do its work regardless of the containing
    storage.  ocfs2_xa_fill_value_buf() initializes a value buf from an
    ocfs2_xa_loc entry.
    
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit a048e8886cc4fa0377dec864f450a1a1ad3b5133
Author: Joel Becker <joel.becker at oracle.com>
Date:   Mon Aug 17 19:56:01 2009 -0700

    ocfs2: Handle value tree roots in ocfs2_xa_set_inline_value()
    
    Mainline commit 9dc474005d0e34cf21d4b510f347e3942f24b021
    
    Previously the xattr code would send in a fake value, containing a tree
    root, to the function that installed name+value pairs.  Instead, we pass
    the real value to ocfs2_xa_set_inline_value(), and it notices that the
    value cannot fit.  Thus, it installs a tree root.
    
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit a5e93cb8bf11dccf863983e4d897f45604766f03
Author: Joel Becker <joel.becker at oracle.com>
Date:   Mon Aug 17 12:24:39 2009 -0700

    ocfs2: Set the xattr name+value pair in one place
    
    Mainline commit 69a3e539d083ac09aec92b8705b8ff2c2e5c810c
    
    We create two new functions on ocfs2_xa_loc, ocfs2_xa_prepare_entry()
    and ocfs2_xa_store_inline_value().
    
    ocfs2_xa_prepare_entry() makes sure that the xl_entry field of
    ocfs2_xa_loc is ready to receive an xattr.  The entry will point to an
    appropriately sized name+value region in storage.  If an existing entry
    can be reused, it will be.  If no entry already exists, it will be
    allocated.  If there isn't space to allocate it, -ENOSPC will be
    returned.
    
    ocfs2_xa_store_inline_value() stores the data that goes into the 'value'
    part of the name+value pair.  For values that don't fit directly, this
    stores the value tree root.
    
    A number of operations are added to ocfs2_xa_loc_operations to support
    these functions.  This reflects the disparate behaviors of xattr blocks
    and buckets.
    
    With these functions, the overlapping ocfs2_xattr_set_entry_local() and
    ocfs2_xattr_set_entry_normal() can be replaced with a single call
    scheme.
    
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit c30f1e0daf2971e3800d056c5ba2e64ddd8aebcf
Author: Joel Becker <joel.becker at oracle.com>
Date:   Fri Aug 14 19:04:15 2009 -0700

    ocfs2: Wrap calculation of name+value pair size.
    
    Mainline commit 199799a3609f6d5bb231a75c2e702afaac805431
    
    An ocfs2 xattr entry stores the text name and value as a pair in the
    storage area.  Obviously names and values can be variable-sized.  If a
    value is too large for the entry storage, a tree root is stored instead.
    The name+value pair is also padded.
    
    Because of this, there are a million places in the code that do:
    
    	if (needs_external_tree(value_size)
    		namevalue_size = pad(name_size) + tree_root_size;
    	else
    		namevalue_size = pad(name_size) + pad(value_size);
    
    Let's create some convenience functions to make the code more readable.
    There are three forms.  The first takes the raw sizes.  The second takes
    an ocfs2_xattr_info structure.  The third takes an existing
    ocfs2_xattr_entry.
    
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit eee4fd034c65952b2f402fb46a7c8ea922814c82
Author: Joel Becker <joel.becker at oracle.com>
Date:   Fri Aug 14 18:17:07 2009 -0700

    ocfs2: Add a name_len field to ocfs2_xattr_info.
    
    Mainline commit 18853b95d1fb964b76c3393a12c4d861e7779460
    
    Rather than calculating strlen all over the place, let's store the
    name length directly on ocfs2_xattr_info.
    
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit 1bee4f867b300161d40677076019de1939fd7e2d
Author: Joel Becker <joel.becker at oracle.com>
Date:   Fri Aug 14 18:02:52 2009 -0700

    ocfs2: Prefix the member fields of struct ocfs2_xattr_info.
    
    Mainline commit 6b240ff63c9dda93366c61c969b81ca22fe676ac
    
    struct ocfs2_xattr_info is a useful structure describing an xattr
    you'd like to set.  Let's put prefixes on the member fields so it's
    easier to read and use.
    
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit a4a62fefcd06de13bdb0c02286413a03e0e84d88
Author: Joel Becker <joel.becker at oracle.com>
Date:   Fri Aug 14 16:58:38 2009 -0700

    ocfs2: Remove xattrs via ocfs2_xa_loc
    
    Mainline commit bde1e5400a1b21ef47932ab00446c7361ff3c139
    
    Add ocfs2_xa_remove_entry(), which will remove an xattr entry from its
    storage via the ocfs2_xa_loc descriptor.
    
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit 2ad2fee7560c809086a89add9a4ae6d384e38d95
Author: Joel Becker <joel.becker at oracle.com>
Date:   Fri Aug 14 16:07:44 2009 -0700

    ocfs2: Introduce ocfs2_xa_loc
    
    Mainline commit 11179f2c92cb025b1ff0b794f9714b3fb395855f
    
    The ocfs2 extended attribute (xattr) code is very flexible.  It can
    store xattrs in the inode itself, in an external block, or in a tree of
    data structures.  This allows the number of xattrs to be bounded by the
    filesystem size.
    
    However, the code that manages each possible storage location is
    different.  Maintaining the ocfs2 xattr code requires changing each hunk
    separately.
    
    This patch is the start of a series introducing the ocfs2_xa_loc
    structure.  This structure wraps the on-disk details of an xattr
    entry.  The goal is that the generic xattr routines can use
    ocfs2_xa_loc without knowing the underlying storage location.
    
    This first pass merely implements the basic structure, initializing it,
    and wiping the name+value pair of the entry.
    
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit acd7d8d2db9ac4a2e51718e1b076639738015ed5
Author: Sunil Mushran <sunil.mushran at oracle.com>
Date:   Fri Feb 12 14:09:06 2010 -0800

    ocfs2: Add current->comm in trace output
    
    Mainline commit 8545e03d82b6739461bbd60db7aba144f7dbe80f
    
    Add current->comm to the standard mlog() output to help with debugging.
    
    Signed-off-by: Sunil Mushran <sunil.mushran at oracle.com>
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit 45028837adcce7b9b347a250dc6911435adc04a1
Author: Wengang Wang <wen.gang.wang at oracle.com>
Date:   Tue Feb 9 14:57:45 2010 +0800

    ocfs2: Clean up the checks for CoW and direct I/O.
    
    Mainline commit 96a1cc731adb28dc4feb71701091b80e67d486a7
    
    When ocfs2 has to do CoW for refcounted extents, we disable direct I/O
    and go through the buffered I/O path.  This makes the combined check
    easier to read.
    
    Signed-off-by: Wengang Wang <wen.gang.wang at oracle.com>
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit 1af1d5da117baad4751c7d836c2fc6e1fc629f04
Author: Tiger Yang <tiger.yang at oracle.com>
Date:   Mon Jan 25 14:11:06 2010 +0800

    ocfs2: add extent block stealing for ocfs2 v5
    
    Mainline commit b89c54282db0c8634a2d2dc200f196d571750ce5
    
    This patch add extent block (metadata) stealing mechanism for
    extent allocation. This mechanism is same as the inode stealing.
    if no room in slot specific extent_alloc, we will try to
    allocate extent block from the next slot.
    
    Signed-off-by: Tiger Yang <tiger.yang at oracle.com>
    Acked-by: Tao Ma <tao.ma at oracle.com>
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit aac6380f3513dd753e2e4859ad66ab7fd2d3b9e3
Author: Daniel Mack <daniel at caiaq.de>
Date:   Wed Feb 3 08:01:28 2010 +0800

    tree-wide: Assorted spelling fixes
    
    Mainline commit 3ad2f3fbb961429d2aa627465ae4829758bc7e07
    
    In particular, several occurances of funny versions of 'success',
    'unknown', 'therefore', 'acknowledge', 'argument', 'achieve', 'address',
    'beginning', 'desirable', 'separate' and 'necessary' are fixed.
    
    Signed-off-by: Daniel Mack <daniel at caiaq.de>
    Cc: Joe Perches <joe at perches.com>
    Cc: Junio C Hamano <gitster at pobox.com>
    Signed-off-by: Jiri Kosina <jkosina at suse.cz>

commit f2557329a87187a149de2661d841e18250588463
Author: Sunil Mushran <sunil.mushran at oracle.com>
Date:   Fri Feb 5 15:41:23 2010 -0800

    ocfs2/cluster: Make o2net connect messages KERN_NOTICE
    
    Mainline commit 6efd806634f7526f723f3aa7ceffd3887a932d9c
    
    Connect and disconnect messages are more than informational as they are required
    during root cause analysis for failures. This patch changes them from KERN_INFO
    to KERN_NOTICE.
    
    Signed-off-by: Sunil Mushran <sunil.mushran at oracle.com>
    Acked-by: Mark Faseh <mfasheh at suse.com>
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit 0d3c845f489d3a77ad7e2c9cf3c9049c366d0f9f
Author: Sunil Mushran <sunil.mushran at oracle.com>
Date:   Fri Feb 5 17:55:56 2010 -0800

    ocfs2/dlm: Fix printing of lockname
    
    Mainline commit 86a06abab0ffbb9d8ce2b7f6b6652412ce2d2c36
    
    The debug call printing the name of the lock resource was chopping
    off the last character. This patch fixes the problem.
    
    Signed-off-by: Sunil Mushran <sunil.mushran at oracle.com>
    Acked-by: Mark Fasheh <mfasheh at suse.com>
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit ae227f240dac853be8c633d7bfdec87e66deffbc
Author: Roel Kluin <roel.kluin at gmail.com>
Date:   Fri Feb 5 10:26:27 2010 +0100

    ocfs2: Fix contiguousness check in ocfs2_try_to_merge_extent_map()
    
    Mainline commit bd6b0bf87d8cf3d9cfeadeb12dbf5449e3e50765
    
    The wrong member was compared in the continguousness check.
    
    Acked-by: Tao Ma <tao.ma at oracle.com>
    Signed-off-by: Roel Kluin <roel.kluin at gmail.com>
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit 8dc829d1090e95ea0df24f7c3dfd17098e0b9206
Author: Sunil Mushran <sunil.mushran at oracle.com>
Date:   Mon Feb 1 17:34:58 2010 -0800

    ocfs2/dlm: Remove BUG_ON in dlm recovery when freeing locks of a dead node
    
    Mainline commit cda70ba8c05a8661f882862c4699a31d215ab151
    
    During recovery, the dlm frees the locks for the dead node. If it finds a
    lock in a resource for the dead node, it expects that node to also have a
    ref in that lock resource. If not, it BUGs.
    
    ossbz#1175 was filed with the above BUG. Now, while it is correct that we
    should be expecting the ref, I see no reason why we have to BUG. After all,
    we are freeing up the lock and clearing the ref.
    
    This patch replaces the BUG_ON with a printk(). Hopefully, that will give
    us more clues next time this happens.
    
    http://oss.oracle.com/bugzilla/show_bug.cgi?id=1175
    
    Signed-off-by: Sunil Mushran <sunil.mushran at oracle.com>
    Acked-by: Mark Fasheh <mfasheh at suse.com>
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit 2ccde3ec362b6cf1651d6636c859e22d781c23d0
Author: Sunil Mushran <sunil.mushran at oracle.com>
Date:   Wed Feb 3 10:16:54 2010 -0800

    ocfs2: Plugs race between the dc thread and an unlock ast message
    
    Mainline commit 079b805782f94f4b278132286a8c9bc4655d1c51
    
    This patch plugs a race between the downconvert thread and an unlock ast message.
    Specifically, after the downconvert worker has done its task, the dc thread needs
    to check whether an unlock ast made the downconvert moot.
    
    Reported-by: David Teigland <teigland at redhat.com>
    Signed-off-by: Sunil Mushran <sunil.mushran at oracle.com>
    Acked-by: Mark Fasheh <mfasheh at sus.com>
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit 1b0c63a6e129e6f0f8c4100e0d5c36714ffbaf26
Author: Sunil Mushran <sunil.mushran at oracle.com>
Date:   Mon Feb 1 16:55:50 2010 -0800

    ocfs2: Remove overzealous BUG_ON during blocked lock processing
    
    Mainline commit db0f6ce69776370232431eb8be85a5b18b0019c0
    
    During blocked lock processing, we should consider the possibility that the
    lock is no longer blocking.
    
    Joel Becker <joel.becker at oracle.com> assisted in fixing this issue.
    
    Reported-by: David Teigland <teigland at redhat.com>
    Signed-off-by: Sunil Mushran <sunil.mushran at oracle.com>
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit 92135eb51b072dacbd0f10007e98d83c0fc2dfb2
Author: Sunil Mushran <sunil.mushran at oracle.com>
Date:   Fri Jan 29 09:44:11 2010 -0800

    ocfs2: Do not downconvert if the lock level is already compatible
    
    Mainline commit 0d74125a6a68d4f1969ecaf0b3543f315916ccdc
    
    During upconvert, if the master were to send a BAST, dlmglue will detect the
    upconversion in process and send a cancel convert to the master. Upon receiving
    the AST for the cancel convert, it will re-process the lock resource to determine
    whether it needs downconverting. Say, the up was from PR to EX and the BAST was
    for EX. After the cancel convert, it will need to downconvert to NL.
    
    However, if the node was originally upconverting from NL to EX, then there would
    be no reason to downconvert (assuming the same message sequence).
    
    This patch makes dlmglue consider the possibility that the current lock level
    is already compatible and that downconverting is not required.
    
    Joel Becker <joel.becker at oracle.com> assisted in fixing this issue.
    
    Fixes ossbz#1178
    http://oss.oracle.com/bugzilla/show_bug.cgi?id=1178
    
    Reported-by: Coly Li <coly.li at suse.de>
    Signed-off-by: Sunil Mushran <sunil.mushran at oracle.com>
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit 88fae8717a90542b8745e86e665fb6d16a3f84ce
Author: Sunil Mushran <sunil.mushran at oracle.com>
Date:   Thu Jan 21 10:50:03 2010 -0800

    ocfs2: Prevent a livelock in dlmglue
    
    Mainline commit a19128260107f951d1b4c421cf98b92f8092b069
    
    There is possibility of a livelock in __ocfs2_cluster_lock(). If a node were
    to get an ast for an upconvert request, followed immediately by a bast,
    there is a small window where the fs may downconvert the lock before the
    process requesting the upconvert is able to take the lock.
    
    This patch adds a new flag to indicate that the upconvert is still in
    progress and that the dc thread should not downconvert it right now.
    
    Wengang Wang <wen.gang.wang at oracle.com> and Joel Becker
    <joel.becker at oracle.com> contributed heavily to this patch.
    
    Reported-by: David Teigland <teigland at redhat.com>
    Signed-off-by: Sunil Mushran <sunil.mushran at oracle.com>
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit ff1172e81be5ff6d7749a90ee15505193a32da9c
Author: Wengang Wang <wen.gang.wang at oracle.com>
Date:   Thu Jan 21 10:50:02 2010 -0800

    ocfs2: Fix setting of OCFS2_LOCK_BLOCKED during bast
    
    Mainline commit 0b94a909eb2e2f6990d05fd486a0cb4902ef1ae7
    
    During bast, set the OCFS2_LOCK_BLOCKED flag only if the lock needs to
    downconverted.
    
    Signed-off-by: Wengang Wang <wen.gang.wang at oracle.com>
    Acked-by: Sunil Mushran <sunil.mushran at oracle.com>
    Acked-by: Mark Fasheh <mfasheh at suse.com>
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit 8863b2009018d798a98384f0a0160c1dcbdb0bf9
Author: Tao Ma <tao.ma at oracle.com>
Date:   Wed Jan 27 10:21:52 2010 +0800

    ocfs2: Use compat_ptr in reflink_arguments.
    
    Mainline commit 34e6c59af06cbca07b1490ec0015ea2d303470d3
    
    Although we use u64 to pass userspace pointers to the kernel
    to avoid compat_ioctl, it doesn't work in some ppc platform.
    So wrap them with compat_ptr and add compat_ioctl.
    
    The detailed discussion about compat_ptr can be found in thread
    http://lkml.org/lkml/2009/10/27/423.
    
    We indeed met with a bug when testing on ppc(-EFAULT is returned
    when using old_path). This patch try to fix this.
    I have tested in ppc64(with 32 bit reflink) and x86_64(with i686
    reflink), both works.
    
    Signed-off-by: Tao Ma <tao.ma at oracle.com>
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit 825e21203b218946c51342ab0acf3d79b23575b1
Author: Sunil Mushran <sunil.mushran at oracle.com>
Date:   Mon Jan 25 17:58:30 2010 -0800

    ocfs2/dlm: Handle EAGAIN for compatibility - v2
    
    Mainline commit cd34edd8cf80b507bb84b3f0c2988fe05099ffb5
    
    Mainline commit aad1b15310b9bcd59fa81ab8f2b1513b59553ea8 made the
    dlm_begin_reco_handler() return -EAGAIN instead of EAGAIN.
    
    As this error is transmitted over the wire, we want the receiver,
    dlm_send_begin_reco_message(), to understand both the older EAGAIN and
    the newer -EAGAIN, to allow rolling upgrade of the cluster nodes.
    
    Signed-off-by: Sunil Mushran <sunil.mushran at oracle.com>
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit 12e23e5ee067b47ce551f8c0e66a849aff24555d
Author: Tao Ma <tao.ma at oracle.com>
Date:   Wed Feb 3 09:56:04 2010 +0800

    ocfs2: Add parenthesis to wrap the check for O_DIRECT.
    
    Mainline commit 60c486744c9a30ea60fa863e9587242dde2fe4bd
    
    Add parenthesis to wrap the check for O_DIRECT.
    
    Signed-off-by: Tao Ma <tao.ma at oracle.com>
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit d8593e0900c65f58351310c1540d3f54bcd9e4d0
Author: Tao Ma <tao.ma at oracle.com>
Date:   Mon Feb 1 17:05:33 2010 +0800

    ocfs2: Only bug out when page size is larger than cluster size.
    
    Mainline commit 0a1ea437d87af830786605813972e8e277992917
    
    In CoW, we have to make sure that the page is already written
    out to the disk. So we have a BUG_ON(PageDirty(page)).
    
    In ppc platform we have pagesize=64K, so if the cs=4K, if the
    file have fragmented clusters, we will map the page many times.
    See this file as an example.
    Tree Depth: 0   Count: 19   Next Free Rec: 14
    	## Offset        Clusters       Block#          Flags
    	0  0             4              2164864         0x2 Refcounted
    	1  4             2              9302792         0x2 Refcounted
    ...
    
    We have to replace the extent recs one by one, so the page with index 0
    will be mapped and dirtied twice.
    
    I'd like to leave the BUG_ON there while adding a check so that in
    case we meet with an error in other platforms, we can find it easily.
    
    Signed-off-by: Tao Ma <tao.ma at oracle.com>
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit c99eb567efa89c74ff44757afefeff7e9ee003bb
Author: Tao Ma <tao.ma at oracle.com>
Date:   Sat Jan 30 23:32:19 2010 +0800

    ocfs2: Fix memory overflow in cow_by_page.
    
    Mainline commit d622b89a2f58613a9c1407b22b02aecdd2187a7c
    
    In ocfs2_duplicate_clusters_by_page, we calculate map_end
    by shifting page_index. But actually in case we meet with
    a large offset(say in a i686 box, poff_t is only 32 bits
    and page_index=2056240), we will overflow. So change the
    type of page_index to loff_t.
    
    Signed-off-by: Tao Ma <tao.ma at oracle.com>
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit 877baf1c367aa7bb4248ee4eb884bde4c1b66551
Author: Sunil Mushran <sunil.mushran at oracle.com>
Date:   Mon Jan 25 16:57:40 2010 -0800

    ocfs2/dlm: Print more messages during lock migration
    
    Mainline commit 26636bf6b2010aa84c54d577231e017ba71493d0
    
    When a lock resource is migrated, the dlm compares the migrated
    locks with that that was already existing on the new node. If the
    comparison fails, it BUGs. This patch prints more messages when the
    comparison fails inorder to help with the root cause analyis.
    
    http://oss.oracle.com/bugzilla/show_bug.cgi?id=1206
    This does not fix bz1206. However, if we run into it again, we will
    have more information to chew on.
    
    Signed-off-by: Sunil Mushran <sunil.mushran at oracle.com>
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit 66225d70bea83932b1157be54ed8d2e2c0100787
Author: Sunil Mushran <sunil.mushran at oracle.com>
Date:   Mon Jan 25 16:57:39 2010 -0800

    ocfs2/dlm: Ignore LVBs of locks in the Blocked list
    
    Mainline commit 71656fa6ec10473eb9b646c10a2173fdea2f83c9
    
    During lock resource migration, o2dlm fills the packet with a LVB from the
    first valid lock. For sanity, it ensures that the other valid locks have the
    same LVB. If not, it BUGs.
    
    The valid locks are ones that have granted EX or PR lock levels and are either
    on the Granted or Converting lists. Locks in the Blocked list cannot have a
    valid LVB.
    
    This patch ensures that we skip the locks in the Blocked list.
    
    Fixes oss bugzilla#1202
    http://oss.oracle.com/bugzilla/show_bug.cgi?id=1202
    
    Signed-off-by: Sunil Mushran <sunil.mushran at oracle.com>
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit 0f478cade2a97f84a61ac8977c6e166eae0e5f01
Author: Sunil Mushran <sunil.mushran at oracle.com>
Date:   Mon Jan 25 16:57:38 2010 -0800

    ocfs2/trivial: Remove trailing whitespaces
    
    Mainline commit 2bd632165c1f783888bd4cbed95f2f304829159b
    
    Patch removes trailing whitespaces.
    
    Signed-off-by: Sunil Mushran <sunil.mushran at oracle.com>
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit cd95f6abad19faadd67928015ab00dbb14f856ed
Author: Wengang Wang <wen.gang.wang at oracle.com>
Date:   Fri Jan 22 21:58:04 2010 +0800

    ocfs2: fix a misleading variable name
    
    Mainline commit e5f2cb2b1ad05473fffe6970618997b906f23873
    
    a local variable "dlm_version" is used as a fs locking version.
    rename it fs_version.
    
    Signed-off-by: Wengang Wang <wen.gang.wang at oracle.com>
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit 05cd359d29815d5b3540608e2a57eddb0fe32868
Author: Tao Ma <tao.ma at oracle.com>
Date:   Wed Jan 20 11:31:11 2010 +0800

    ocfs2: Sync max_inline_data_with_xattr from tools.
    
    Mainline commit 1097df3ffe855eb1476496fa5394816fb197af05
    
    In ocfs2-tools, we have added ocfs2_max_inline_data_with_xattr,
    so add it in the kernel's ocfs2_fs.h.
    
    Signed-off-by: Tao Ma <tao.ma at oracle.com>
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit 503a2efd8ac337b782f7863cf75471a4e6720fe8
Author: OGAWA Hirofumi <hirofumi at mail.parknet.co.jp>
Date:   Tue Jan 12 03:37:45 2010 +0900

    ocfs2: Fix refcnt leak on ocfs2_fast_follow_link() error path
    
    Mainline commit 1dd473fdf1d8a7531e0955480cd129f9c1e8b8a3
    
    If ->follow_link handler returns an error, it should decrement
    nd->path refcnt. But ocfs2_fast_follow_link() doesn't decrement.
    
    This patch fixes the problem by using nd_set_link() style error handling
    instead of playing with nd->path.
    
    Signed-off-by: OGAWA Hirofumi <hirofumi at mail.parknet.co.jp>
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit 90650521c2d5306ad87a633527a28fb922777f2a
Author: Tao Ma <tao.ma at oracle.com>
Date:   Thu Dec 3 21:55:05 2009 +0800

    ocfs2: Handle O_DIRECT when writing to a refcounted cluster.
    
    Mainline commit 86470e98cc52532006f47a6cb96d3ebe1ba7ad97
    
    In case of writing to a refcounted cluster with O_DIRECT,
    we need to fall back to buffer write. And when it is finished,
    we need to flush the page and the journal as we did for other
    O_DIRECT writes.
    
    This patch fix oss bug 1191.
    http://oss.oracle.com/bugzilla/show_bug.cgi?id=1191
    
    Signed-off-by: Tao Ma <tao.ma at oracle.com>
    Tested-by: Tristan Ye <tristan.ye at oracle.com>
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit 828c357bf0338075b85a352b4dccef679c99f3d0
Author: Tao Ma <tao.ma at oracle.com>
Date:   Wed Dec 23 14:31:15 2009 +0800

    ocfs2/trivial: Use le16_to_cpu for a disk value in xattr.c
    
    Mainline commit 8ff6af881deccca4f88e03f2fdadb1aac42e9489
    
    In ocfs2_value_metas_in_xattr_header, we should Use
    le16_to_cpu for ocfs2_extent_list.l_next_free_rec.
    
    Signed-off-by: Tao Ma <tao.ma at oracle.com>
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit 034da4d4224b2e4a0f4f7fd0121bf86686f8979a
Author: Tao Ma <tao.ma at oracle.com>
Date:   Tue Dec 22 10:32:15 2009 +0800

    ocfs2/trivial: Use proper mask for 2 places in hearbeat.c
    
    Mainline commit b31d308ddcfb73349582a0196b5f65dad3cf5d17
    
    I just noticed today that there are 2 places of "mlog(0,...)"
    in  fs/ocfs2/cluster/heartbeat.c, but actually have no default
    mask prefix in that file.
    So change them to mlog(ML_HEARTBEAT,...).
    
    Signed-off-by: Tao Ma <tao.ma at oracle.com>
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit 6dbfb08aa43c67fc735e3dac9c212b32ccc44245
Author: Tristan Ye <tristan.ye at oracle.com>
Date:   Tue Dec 22 09:11:58 2009 +0800

    Ocfs2: Let ocfs2 support fiemap for symlink and fast symlink.
    
    Mainline commit 86239d59e268a35a49a00fce9c8512a506267f5c
    
    For fast symlink, it can be treated the same as inlined files since
    the data extent we want to return of both case all were stored in
    metadata block. For symlink, it can be simply treated the same as we
    did for regular files.
    
    Signed-off-by: Tristan Ye <tristan.ye at oracle.com>
    Acked-by: Sunil Mushran <sunil.mushran at oracle.com>
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit 6692c1ac2427d467bc6e173014ef5c3eebd74df4
Author: Tao Ma <tao.ma at oracle.com>
Date:   Fri Dec 18 10:24:55 2009 +0800

    ocfs2: Set i_nlink properly during reflink.
    
    Mainline commit 10cf1a02f444fdcd50be47cce3fa8bf08251dd9c
    
    We create a file in orphan dir for reflink so that if there
    is any error, we don't create any wrong dentry in the dir.
    But actually the file in orphan dir should be i_nlink = 0
    so that it can be replayed and freed successfully.
    
    This patch first set i_nlink to 0 when creating the file in
    orphan dir and then set it to 1(reflink now only works for
    regular file) when we move it to the dest dir.
    
    Signed-off-by: Tao Ma <tao.ma at oracle.com>
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit e81c141076f9c5029de6cd54e4d3a47b03debd5f
Author: Tao Ma <tao.ma at oracle.com>
Date:   Fri Dec 18 10:24:54 2009 +0800

    ocfs2: Add reflinked file's inode to inode hash eariler.
    
    Mainline commit c7d260afcbc0f9f4074e74796d4e3646875c08e1
    
    We used to add reflinked file's inode to inode hash when
    we add it to the dest dir. But actually there is a race.
    Consider the following sequence.
    1. reflink happens and create the inode in orphan dir.
    2. reflink thread is scheduled out because of some io.
    3. recovery begins to work and calls ocfs2_recover_orphans.
       It calls ocfs2_iget and get a new inode and i_count = 1.
       It calls iput then and delete inode. the buffer's
       uptodate state is cleared.
    
    This patch move insert_inode_hash to the create function so
    that it can be found by step 3 and prevented from deleting
    because i_count > 1.
    
    This resolves the bug
    http://oss.oracle.com/bugzilla/show_bug.cgi?id=1183.
    
    Signed-off-by: Tao Ma <tao.ma at oracle.com>
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit abb0d79c55281776e11b9fe539830e05293b0523
Author: Tristan Ye <tristan.ye at oracle.com>
Date:   Thu Dec 17 18:42:16 2009 +0800

    Ocfs2: Should ocfs2 support fiemap for S_IFDIR inode?
    
    Mainline commit 55f4946ed23cbf78efe9f818c4b55e890fe2beff
    
    Let userspace have a chance to get the extent info of a
    directory just like extN did.
    
    Signed-off-by: Tristan Ye <tristan.ye at oracle.com>
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit 3e4e70e232f07c03bdc49c8d65c9f2450348a928
Author: Sunil Mushran <sunil.mushran at oracle.com>
Date:   Thu Dec 3 12:46:52 2009 -0800

    ocfs2: Use FIEMAP_EXTENT_SHARED
    
    Mainline commit faf8b70f79edf56fedd531dfcd41f3e73c3e9696
    
    Adds FIEMAP_EXTENT_SHARED flag to refcounted extents.
    
    Signed-off-by: Sunil Mushran <sunil.mushran at oracle.com>
    Acked-by: Mark Fasheh <mfasheh at suse.com>
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit 6b38732b02c3df2e9243d5af3ae4a24785b9ca8a
Author: Coly Li <coly.li at suse.de>
Date:   Sun Dec 6 22:38:53 2009 +0800

    ocfs2: replace u8 by __u8 in ocfs2_fs.h
    
    Mainline commit 936545401624217955df4dd44bb71615900e5397
    
    This patch replaces date type 'u8' with '__u8', which follows the coding style of ocfs2_fs.h, and portable to user space
    for ocfs2-tools.
    
    Signed-off-by: Coly Li <coly.li at suse.de>
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit 40b4c04c6d816db94b4c0197c8a4916f901d75c9
Author: Coly Li <coly.li at suse.de>
Date:   Fri Dec 4 02:02:35 2009 +0800

    ocfs2: explicit declare uninitialized var in user_cluster_connect()
    
    Mainline commit 3a05d7961e6b5fb77660849b56a22feca5d1e0c5
    
    This patch explicitly declares an uninitialized local variable in user_cluster_connect(), to remove a compiling warning.
    
    Signed-off-by: Coly Li <coly.li at suse.de>
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit c33f0706cfca0b771735579a323b4554348be899
Author: Jeff Liu <jeff.liu at oracle.com>
Date:   Tue Dec 15 14:08:28 2009 +0800

    ocfs2-devel: remove redundant OCFS2_MOUNT_POSIX_ACL check in ocfs2_get_acl_nolock()
    
    Mainline commit f5befbbbf9b7af033c94a1df6acaf79e77a3ceb6
    
    osb->s_mount_opt has already been checked against OCFS2_MOUNT_POSIX_ACL_CHECK before
    calling ocfs2_get_acl_nolock() in ocfs2_init_acl() && ocfs2_get_acl(), so remove it.
    
    Signed-off-by: Jeff Liu <jeff.liu at oracle.com>
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit dd932b4ab2df34a2297da7d207dcb1aad7b8bf19
Author: Christoph Hellwig <hch at lst.de>
Date:   Wed Sep 23 15:04:02 2009 +0200

    ocfs: stop using do_sync_mapping_range
    
    Mainline commit 2cfd30adf6130dab3fbb130eb5f7b1fd42a70e31
    
    do_sync_mapping_range(..., SYNC_FILE_RANGE_WRITE) is a very awkward way
    to perform a filemap_fdatawrite_range.
    
    Signed-off-by: Christoph Hellwig <hch at lst.de>
    Signed-off-by: Al Viro <viro at zeniv.linux.org.uk>

commit c3ed7a36ff0860cad3431bd3b05b75f740b7c101
Author: Christoph Hellwig <hch at lst.de>
Date:   Tue Oct 27 11:05:28 2009 +0100

    vfs: Implement proper O_SYNC semantics
    
    Mainline commit 6b2f3d1f769be5779b479c37800229d9a4809fc3
    
    While Linux provided an O_SYNC flag basically since day 1, it took until
    Linux 2.4.0-test12pre2 to actually get it implemented for filesystems,
    since that day we had generic_osync_around with only minor changes and the
    great "For now, when the user asks for O_SYNC, we'll actually give
    O_DSYNC" comment.  This patch intends to actually give us real O_SYNC
    semantics in addition to the O_DSYNC semantics.  After Jan's O_SYNC
    patches which are required before this patch it's actually surprisingly
    simple, we just need to figure out when to set the datasync flag to
    vfs_fsync_range and when not.
    
    This patch renames the existing O_SYNC flag to O_DSYNC while keeping it's
    numerical value to keep binary compatibility, and adds a new real O_SYNC
    flag.  To guarantee backwards compatiblity it is defined as expanding to
    both the O_DSYNC and the new additional binary flag (__O_SYNC) to make
    sure we are backwards-compatible when compiled against the new headers.
    
    This also means that all places that don't care about the differences can
    just check O_DSYNC and get the right behaviour for O_SYNC, too - only
    places that actuall care need to check __O_SYNC in addition.  Drivers and
    network filesystems have been updated in a fail safe way to always do the
    full sync magic if O_DSYNC is set.  The few places setting O_SYNC for
    lower layers are kept that way for now to stay failsafe.
    
    We enforce that O_DSYNC is set when __O_SYNC is set early in the open path
    to make sure we always get these sane options.
    
    Note that parisc really screwed up their headers as they already define a
    O_DSYNC that has always been a no-op.  We try to repair it by using it for
    the new O_DSYNC and redefinining O_SYNC to send both the traditional
    O_SYNC numerical value _and_ the O_DSYNC one.
    
    Cc: Richard Henderson <rth at twiddle.net>
    Cc: Ivan Kokshaysky <ink at jurassic.park.msu.ru>
    Cc: Grant Grundler <grundler at parisc-linux.org>
    Cc: "David S. Miller" <davem at davemloft.net>
    Cc: Ingo Molnar <mingo at elte.hu>
    Cc: "H. Peter Anvin" <hpa at zytor.com>
    Cc: Thomas Gleixner <tglx at linutronix.de>
    Cc: Al Viro <viro at zeniv.linux.org.uk>
    Cc: Andreas Dilger <adilger at sun.com>
    Acked-by: Trond Myklebust <Trond.Myklebust at netapp.com>
    Acked-by: Kyle McMartin <kyle at mcmartin.ca>
    Acked-by: Ulrich Drepper <drepper at redhat.com>
    Signed-off-by: Christoph Hellwig <hch at lst.de>
    Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
    Signed-off-by: Jan Kara <jack at suse.cz>

commit 0cac96e9ad8885e27f914540dd88aa78322e1532
Author: André Goddard Rosa <andre.goddard at gmail.com>
Date:   Sat Nov 14 13:09:05 2009 -0200

    tree-wide: fix assorted typos all over the place
    
    Mainline commit af901ca181d92aac3a7dc265144a9081a86d8f39
    MIME-Version: 1.0
    Content-Type: text/plain; charset=UTF-8
    Content-Transfer-Encoding: 8bit
    
    That is "success", "unknown", "through", "performance", "[re|un]mapping"
    , "access", "default", "reasonable", "[con]currently", "temperature"
    , "channel", "[un]used", "application", "example","hierarchy", "therefore"
    , "[over|under]flow", "contiguous", "threshold", "enough" and others.
    
    Signed-off-by: André Goddard Rosa <andre.goddard at gmail.com>
    Signed-off-by: Jiri Kosina <jkosina at suse.cz>

commit dd4b4b24ff06f5459365f1aab4ac2dbebc66cabc
Author: Uwe Kleine-König <u.kleine-koenig at pengutronix.de>
Date:   Wed Oct 28 20:11:03 2009 +0100

    tree-wide: fix typos "offest" -> "offset"
    
    Mainline commit bf48aabb894fd0639ab72a26e8abbd7683ef23c2
    MIME-Version: 1.0
    Content-Type: text/plain; charset=UTF-8
    Content-Transfer-Encoding: 8bit
    
    This patch was generated by
    
    	git grep -E -i -l 'offest' | xargs -r perl -p -i -e 's/offest/offset/'
    
    Signed-off-by: Uwe Kleine-König <u.kleine-koenig at pengutronix.de>
    Signed-off-by: Jiri Kosina <jkosina at suse.cz>

commit da9a84d845bc32f44a53e9edc03653d24deeeb55
Author: Tiger Yang <tiger.yang at oracle.com>
Date:   Thu Nov 19 10:17:46 2009 +0800

    ocfs2: return -EAGAIN instead of EAGAIN in dlm
    
    Mainline commit aad1b15310b9bcd59fa81ab8f2b1513b59553ea8
    
    We used to return positive EAGAIN to indicate a retry action
    is needed in dlm_begin_reco_handler(). Now we return negative
    -EAGAIN to erase the confusion caused by this error code.
    
    Signed-off-by: Tiger Yang <tiger.yang at oracle.com>
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit 20cc3a94da2a276964ca641f9a32c19e8f58ff9a
Author: Sunil Mushran <sunil.mushran at oracle.com>
Date:   Tue Nov 17 16:29:19 2009 -0800

    ocfs2/cluster: Make fence method configurable - v2
    
    Mainline commit f6656d26d17b2598f43cd41be088853fa2a03397
    
    By default, o2cb fences the box by calling emergency_restart(). While this
    scheme works well in production, it comes in the way during testing as it
    does not let the tester take stack/core dumps for analysis.
    
    This patch allows user to dynamically change the fence method to panic() by:
    # echo "panic" > /sys/kernel/config/cluster/<clustername>/fence_method
    
    Signed-off-by: Sunil Mushran <sunil.mushran at oracle.com>
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit d869bdf1577bf8ba8eeec138a736beda78b30ca9
Author: Tao Ma <tao.ma at oracle.com>
Date:   Mon Nov 30 15:08:40 2009 +0800

    ocfs2: refcounttree.c cleanup.
    
    Mainline commit 12d4cec988a8a20927a9795dbf2c6d9ef2f85baa
    
    sparse check finds some endian problem and some other minor issues.
    There is an obsolete function which should be removed.
    So this patch resolve all these.
    
    Signed-off-by: Tao Ma <tao.ma at oracle.com>
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit 7ba437ed26ada272686f5318eba4be94ad161564
Author: Tao Ma <tao.ma at oracle.com>
Date:   Mon Nov 30 14:32:19 2009 +0800

    ocfs2: Find proper end cpos for a leaf refcount block.
    
    Mainline commit 38a04e432768ec0b016f3c687b4de31ac111ae59
    
    ocfs2 refcount tree is stored as an extent tree while
    the leaf ocfs2_refcount_rec points to a refcount block.
    
    The following step can trip a kernel panic.
    mkfs.ocfs2 -b 512 -C 1M --fs-features=refcount $DEVICE
    mount -t ocfs2 $DEVICE $MNT_DIR
    FILE_NAME=$RANDOM
    FILE_NAME_1=$RANDOM
    FILE_REF="${FILE_NAME}_ref"
    FILE_REF_1="${FILE_NAME}_ref_1"
    for((i=0;i<305;i++))
    do
    # /mnt/1048576 is a file with 1048576 sizes.
    cat /mnt/1048576 >> $MNT_DIR/$FILE_NAME
    cat /mnt/1048576 >> $MNT_DIR/$FILE_NAME_1
    done
    for((i=0;i<3;i++))
    do
    cat /mnt/1048576 >> $MNT_DIR/$FILE_NAME
    done
    
    for((i=0;i<2;i++))
    do
    cat /mnt/1048576 >> $MNT_DIR/$FILE_NAME
    cat /mnt/1048576 >> $MNT_DIR/$FILE_NAME_1
    done
    
    cat /mnt/1048576 >> $MNT_DIR/$FILE_NAME
    
    for((i=0;i<11;i++))
    do
    cat /mnt/1048576 >> $MNT_DIR/$FILE_NAME
    cat /mnt/1048576 >> $MNT_DIR/$FILE_NAME_1
    done
    reflink $MNT_DIR/$FILE_NAME $MNT_DIR/$FILE_REF
    # write_f is a program which will write some bytes to a file at offset.
    # write_f -f file_name -l offset -w write_bytes.
    ./write_f -f $MNT_DIR/$FILE_REF -l $[310*1048576] -w 4096
    ./write_f -f $MNT_DIR/$FILE_REF -l $[306*1048576] -w 4096
    ./write_f -f $MNT_DIR/$FILE_REF -l $[311*1048576] -w 4096
    ./write_f -f $MNT_DIR/$FILE_NAME -l $[310*1048576] -w 4096
    ./write_f -f $MNT_DIR/$FILE_NAME -l $[311*1048576] -w 4096
    reflink $MNT_DIR/$FILE_NAME $MNT_DIR/$FILE_REF_1
    ./write_f -f $MNT_DIR/$FILE_NAME -l $[311*1048576] -w 4096
    #kernel panic here.
    
    The reason is that if the ocfs2_extent_rec is the last record
    in a leaf extent block, the old solution fails to find the
    suitable end cpos. So this patch try to walk through the b-tree,
    find the next sub root and get the c_pos the next sub-tree starts
    from.
    
    btw, I have runned tristan's test case against the patched kernel
    for several days and this type of kernel panic never happens again.
    
    Signed-off-by: Tao Ma <tao.ma at oracle.com>
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit 0da4a1eb4a13ece20eac0027107f35538fb4e429
Author: Jan Kara <jack at suse.cz>
Date:   Thu Oct 15 14:54:05 2009 +0200

    ocfs2: Set MS_POSIXACL on remount
    
    Mainline commit 57b09bb5e492c37c1e4273fe4e435ffd1d2ddbe0
    
    We have to set MS_POSIXACL on remount as well. Otherwise VFS
    would not know we started supporting ACLs after remount and
    thus ACLs would not work.
    
    Signed-off-by: Jan Kara <jack at suse.cz>
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit 1b53214f9a6be539ed6a8619f1e358d7650f0128
Author: Jan Kara <jack at suse.cz>
Date:   Thu Oct 15 14:54:04 2009 +0200

    ocfs2: Make acl use the default
    
    Mainline commit 5297aad80cd3a3e62116e0a0b29116ccd8ae397d
    
    Change acl mount options handling to match the one of XFS and BTRFS and
    hopefully it is also easier to use now. When admin does not specify any
    acl mount option, acls are enabled if and only if the filesystem has
    xattr feature enabled. If admin specifies 'acl' mount option, we fail
    the mount if the filesystem does not have xattr feature and thus acls
    cannot be enabled.
    
    Signed-off-by: Jan Kara <jack at suse.cz>
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit d245da25c2d8e0f5b6bea05698fae06fdbe2c543
Author: Jan Kara <jack at suse.cz>
Date:   Wed May 12 16:10:17 2010 +0800

    ocfs2: Always include ACL support
    
    Mainline commit e6aabe0cac14a495d42f629a803c5e221089bae8
    
    To become consistent with filesystems such as XFS or BTRFS, make posix
    ACLs always available. This also reduces possibility of
    misconfiguration on admin's side.
    
    Signed-off-by: Jan Kara <jack at suse.cz>
    Signed-off-by: Joel Becker <joel.becker at oracle.com>

commit cf8bf2c5e14541091a1b9057b83dca0545d12ec1
Author: Tristan Ye <tristan.ye at oracle.com>
Date:   Fri May 14 13:57:49 2010 +0800

    Ocfs2-1.8: Handle new for_each_set_bit() macro from mainline.
    
    Mainline 984b3f5746ed2cde3d184651dabf26980f2b66e5 introduced a
    new macro for_each_set_bit() to replace for_each_bit(), we therefore
    have it included in kapi-compat.
    
    Signed-off-by: Tristan Ye <tristan.ye at oracle.com>

commit 18ffec1f3ed54b7ab98f17bbae6ce02dd8188e9f
Author: Tristan Ye <tristan.ye at oracle.com>
Date:   Fri May 14 10:34:45 2010 +0800

    Ocfs2-1.8: Handle new O_DSYNC from mainline.
    
    Mainline 6b2f3d1f769be5779b479c37800229d9a4809fc3 Implemented new
    'O_DSYNC' semantics, we therefore have it included in kapi-compat.
    
    Signed-off-by: Tristan Ye <tristan.ye at oracle.com>

commit 7b6a6a3207c914122f7223ed5cfeeccb1f40ecca
Author: Tristan Ye <tristan.ye at oracle.com>
Date:   Thu May 13 10:34:23 2010 +0800

    Ocfs2-1.8: Handle new FIEMAP_EXTENT_SHARED from mainline.
    
    Mainline 8c0414cd524e9f1c483ffb3ff1c2d860f5c567c8 has added a
    new 'FIEMAP_EXTENT_SHARED' macro to fiemap.h for representing
    a refcounted extent, we therefore have it included in kapi-compat.
    
    Signed-off-by: Tristan Ye <tristan.ye at oracle.com>

-----------------------------------------------------------------------

Summary of changes:
 Makefile                                   |    5 +-
 configure.in                               |   15 +-
 fs/Makefile                                |    2 +
 fs/ocfs2/Kconfig                           |   10 +-
 fs/ocfs2/Makefile                          |    3 +-
 fs/ocfs2/acl.c                             |   82 +-
 fs/ocfs2/acl.h                             |   22 -
 fs/ocfs2/alloc.c                           |   21 +-
 fs/ocfs2/alloc.h                           |    5 +
 fs/ocfs2/aops.c                            |    9 +-
 fs/ocfs2/blockcheck.c                      |    2 +-
 fs/ocfs2/buffer_head_io.c                  |    5 +-
 fs/ocfs2/cluster/heartbeat.c               |   13 +-
 fs/ocfs2/cluster/masklog.c                 |    1 +
 fs/ocfs2/cluster/masklog.h                 |    7 +-
 fs/ocfs2/cluster/nodemanager.c             |   52 +
 fs/ocfs2/cluster/nodemanager.h             |    7 +
 fs/ocfs2/cluster/quorum.c                  |   17 +-
 fs/ocfs2/cluster/tcp.c                     |   14 +-
 fs/ocfs2/cluster/tcp_internal.h            |    4 +-
 fs/ocfs2/dir.c                             |    2 +-
 fs/ocfs2/dlm/Makefile                      |   21 +-
 fs/ocfs2/dlm/dlmapi.h                      |    2 +-
 fs/ocfs2/dlm/dlmast.c                      |    8 +-
 fs/ocfs2/dlm/dlmconvert.c                  |    3 +-
 fs/ocfs2/dlm/dlmdebug.c                    |    2 +-
 fs/ocfs2/dlm/dlmdomain.c                   |    2 +-
 fs/ocfs2/dlm/dlmlock.c                     |    2 +-
 fs/ocfs2/dlm/dlmmaster.c                   |   44 +-
 fs/ocfs2/dlm/dlmrecovery.c                 |  165 ++-
 fs/ocfs2/dlm/dlmthread.c                   |    1 -
 fs/ocfs2/dlm/dlmunlock.c                   |    9 +-
 fs/ocfs2/{dlm => dlmfs}/Makefile           |   34 +-
 fs/ocfs2/{dlm => dlmfs}/dlmfs.c            |  141 ++-
 fs/ocfs2/{dlm => dlmfs}/dlmfsver.c         |    4 +-
 fs/ocfs2/{dlm => dlmfs}/dlmfsver.h         |    0 
 fs/ocfs2/{dlm => dlmfs}/userdlm.c          |  308 ++--
 fs/ocfs2/{dlm => dlmfs}/userdlm.h          |   16 +-
 fs/ocfs2/dlmglue.c                         |  373 +++--
 fs/ocfs2/export.c                          |    2 +-
 fs/ocfs2/extent_map.c                      |   30 +-
 fs/ocfs2/file.c                            |   68 +-
 fs/ocfs2/heartbeat.c                       |    1 -
 fs/ocfs2/inode.c                           |   88 +-
 fs/ocfs2/inode.h                           |    2 +
 fs/ocfs2/ioctl.c                           |   14 +-
 fs/ocfs2/ioctl.h                           |    6 +-
 fs/ocfs2/journal.c                         |    4 +-
 fs/ocfs2/localalloc.c                      |   12 +-
 fs/ocfs2/locks.c                           |    2 +-
 fs/ocfs2/mmap.c                            |    1 -
 fs/ocfs2/namei.c                           |   92 +-
 fs/ocfs2/ocfs2.h                           |   46 +-
 fs/ocfs2/ocfs2_fs.h                        |   70 +-
 fs/ocfs2/ocfs2_ioctl.h                     |   79 +
 fs/ocfs2/ocfs2_lockingver.h                |    2 +
 fs/ocfs2/quota_global.c                    |    1 +
 fs/ocfs2/quota_local.c                     |    3 +-
 fs/ocfs2/refcounttree.c                    |  175 ++-
 fs/ocfs2/stack_o2cb.c                      |   50 +-
 fs/ocfs2/stack_user.c                      |   52 +-
 fs/ocfs2/stackglue.c                       |   98 +-
 fs/ocfs2/stackglue.h                       |   95 +-
 fs/ocfs2/suballoc.c                        |  300 +++--
 fs/ocfs2/suballoc.h                        |    6 +
 fs/ocfs2/super.c                           |  107 +-
 fs/ocfs2/symlink.c                         |   12 +-
 fs/ocfs2/sysfile.c                         |    1 -
 fs/ocfs2/uptodate.c                        |    4 +-
 fs/ocfs2/xattr.c                           | 2192 +++++++++++++++-------------
 fs/ocfs2/xattr.h                           |    2 -
 kapi-compat/include/fiemap_extent_shared.h |    6 +
 kapi-compat/include/fodsync.h              |    6 +
 kapi-compat/include/for_each_bit.h         |    6 +
 74 files changed, 2990 insertions(+), 2078 deletions(-)
 copy fs/ocfs2/{dlm => dlmfs}/Makefile (66%)
 rename fs/ocfs2/{dlm => dlmfs}/dlmfs.c (82%)
 rename fs/ocfs2/{dlm => dlmfs}/dlmfsver.c (91%)
 rename fs/ocfs2/{dlm => dlmfs}/dlmfsver.h (100%)
 rename fs/ocfs2/{dlm => dlmfs}/userdlm.c (67%)
 rename fs/ocfs2/{dlm => dlmfs}/userdlm.h (90%)
 create mode 100644 fs/ocfs2/ocfs2_ioctl.h
 create mode 100644 kapi-compat/include/fiemap_extent_shared.h
 create mode 100644 kapi-compat/include/fodsync.h
 create mode 100644 kapi-compat/include/for_each_bit.h


hooks/post-receive
-- 
The ocfs2 filesystem version 1.8



More information about the Ocfs2-commits mailing list