[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