<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/fs/ocfs2, branch linux-2.6.28.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-2.6.28.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-2.6.28.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2009-05-02T17:56:47Z</updated>
<entry>
<title>splice: fix deadlock in splicing to file</title>
<updated>2009-05-02T17:56:47Z</updated>
<author>
<name>Miklos Szeredi</name>
</author>
<published>2009-04-07T16:25:02Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=af85932753d252ac37a01b00ab857197ee0bac16'/>
<id>urn:sha1:af85932753d252ac37a01b00ab857197ee0bac16</id>
<content type='text'>
upstream commit: 7bfac9ecf0585962fe13584f5cf526d8c8e76f17

There's a possible deadlock in generic_file_splice_write(),
splice_from_pipe() and ocfs2_file_splice_write():

 - task A calls generic_file_splice_write()
 - this calls inode_double_lock(), which locks i_mutex on both
   pipe-&gt;inode and target inode
 - ordering depends on inode pointers, can happen that pipe-&gt;inode is
   locked first
 - __splice_from_pipe() needs more data, calls pipe_wait()
 - this releases lock on pipe-&gt;inode, goes to interruptible sleep
 - task B calls generic_file_splice_write(), similarly to the first
 - this locks pipe-&gt;inode, then tries to lock inode, but that is
   already held by task A
 - task A is interrupted, it tries to lock pipe-&gt;inode, but fails, as
   it is already held by task B
 - ABBA deadlock

Fix this by explicitly ordering locks: the outer lock must be on
target inode and the inner lock (which is later unlocked and relocked)
must be on pipe-&gt;inode.  This is OK, pipe inodes and target inodes
form two nonoverlapping sets, generic_file_splice_write() and friends
are not called with a target which is a pipe.

Signed-off-by: Miklos Szeredi &lt;mszeredi@suse.cz&gt;
Acked-by: Mark Fasheh &lt;mfasheh@suse.com&gt;
Acked-by: Jens Axboe &lt;jens.axboe@oracle.com&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
Signed-off-by: Chris Wright &lt;chrisw@sous-sol.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;
</content>
</entry>
<entry>
<title>jbd2: Avoid possible NULL dereference in jbd2_journal_begin_ordered_truncate()</title>
<updated>2009-03-17T00:32:33Z</updated>
<author>
<name>Jan Kara</name>
</author>
<published>2009-02-24T17:14:43Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=54dc90ea5d01776793da82d345c7164ea28f4718'/>
<id>urn:sha1:54dc90ea5d01776793da82d345c7164ea28f4718</id>
<content type='text'>
(cherry picked from commit 7f5aa215088b817add9c71914b83650bdd49f8a9)

If we race with commit code setting i_transaction to NULL, we could
possibly dereference it.  Proper locking requires the journal pointer
(to access journal-&gt;j_list_lock), which we don't have.  So we have to
change the prototype of the function so that filesystem passes us the
journal pointer.  Also add a more detailed comment about why the
function jbd2_journal_begin_ordered_truncate() does what it does and
how it should be used.

Thanks to Dan Carpenter &lt;error27@gmail.com&gt; for pointing to the
suspitious code.

Signed-off-by: Jan Kara &lt;jack@suse.cz&gt;
Signed-off-by: "Theodore Ts'o" &lt;tytso@mit.edu&gt;
Acked-by: Joel Becker &lt;joel.becker@oracle.com&gt;
CC: linux-ext4@vger.kernel.org
CC: ocfs2-devel@oss.oracle.com
CC: mfasheh@suse.de
CC: Dan Carpenter &lt;error27@gmail.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</content>
</entry>
<entry>
<title>ocfs2: Add JBD2 compat feature bit.</title>
<updated>2008-12-17T02:26:16Z</updated>
<author>
<name>Joel Becker</name>
</author>
<published>2008-12-17T02:10:18Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=a97721894a6dc0f9ebfe1dbaa4bb112eaf399273'/>
<id>urn:sha1:a97721894a6dc0f9ebfe1dbaa4bb112eaf399273</id>
<content type='text'>
Define the OCFS2_FEATURE_COMPAT_JBD2 bit in the filesystem header.

Signed-off-by: Joel Becker &lt;joel.becker@oracle.com&gt;
Signed-off-by: Mark Fasheh &lt;mfasheh@suse.com&gt;
</content>
</entry>
<entry>
<title>ocfs2: Always update xattr search when creating bucket.</title>
<updated>2008-12-16T22:07:37Z</updated>
<author>
<name>Tao Ma</name>
</author>
<published>2008-12-05T01:14:10Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=83099bc647688d816c2f7fac8e51921bdfe8db73'/>
<id>urn:sha1:83099bc647688d816c2f7fac8e51921bdfe8db73</id>
<content type='text'>
When we create xattr bucket during the process of xattr set, we always
need to update the ocfs2_xattr_search since even if the bucket size is
the same as block size, the offset will change because of the removal
of the ocfs2_xattr_block header.

Signed-off-by: Tao Ma &lt;tao.ma@oracle.com&gt;
Signed-off-by: Mark Fasheh &lt;mfasheh@suse.com&gt;
</content>
</entry>
<entry>
<title>ocfs2: fix regression in ocfs2_read_blocks_sync()</title>
<updated>2008-12-01T22:46:58Z</updated>
<author>
<name>Mark Fasheh</name>
</author>
<published>2008-11-21T22:06:55Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=d6b58f89f7257c8099c2260e2bea042a917d6cdf'/>
<id>urn:sha1:d6b58f89f7257c8099c2260e2bea042a917d6cdf</id>
<content type='text'>
We're panicing in ocfs2_read_blocks_sync() if a jbd-managed buffer is seen.
At first glance, this seems ok but in reality it can happen. My test case
was to just run 'exorcist'. A struct inode is being pushed out of memory but
is then re-read at a later time, before the buffer has been checkpointed by
jbd. This causes a BUG to be hit in ocfs2_read_blocks_sync().

Reviewed-by: Joel Becker &lt;joel.becker@oracle.com&gt;
Signed-off-by: Mark Fasheh &lt;mfasheh@suse.com&gt;
</content>
</entry>
<entry>
<title>ocfs2: fix return value set in init_dlmfs_fs()</title>
<updated>2008-12-01T22:46:55Z</updated>
<author>
<name>Coly Li</name>
</author>
<published>2008-11-17T04:38:22Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=07d9a3954a68764aefe16855bcd0f86deeb5c825'/>
<id>urn:sha1:07d9a3954a68764aefe16855bcd0f86deeb5c825</id>
<content type='text'>
In init_dlmfs_fs(), if calling kmem_cache_create() failed, the code will use return value from
calling bdi_init(). The correct behavior should be set status as -ENOMEM before going to "bail:".

Signed-off-by: Coly Li &lt;coyli@suse.de&gt;
Acked-by: Sunil Mushran &lt;sunil.mushran@oracle.com&gt;
Signed-off-by: Mark Fasheh &lt;mfasheh@suse.com&gt;
</content>
</entry>
<entry>
<title>ocfs2: fix wake_up in unlock_ast</title>
<updated>2008-12-01T22:46:45Z</updated>
<author>
<name>David Teigland</name>
</author>
<published>2008-11-17T18:28:48Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=07f9eebcdfaeefc8f807fa1bcce1d7c3ae6661b1'/>
<id>urn:sha1:07f9eebcdfaeefc8f807fa1bcce1d7c3ae6661b1</id>
<content type='text'>
In ocfs2_unlock_ast(), call wake_up() on lockres before releasing
the spin lock on it.  As soon as the spin lock is released, the
lockres can be freed.

Signed-off-by: David Teigland &lt;teigland@redhat.com&gt;
Signed-off-by: Mark Fasheh &lt;mfasheh@suse.com&gt;
</content>
</entry>
<entry>
<title>ocfs2: initialize stack_user lvbptr</title>
<updated>2008-12-01T22:46:39Z</updated>
<author>
<name>David Teigland</name>
</author>
<published>2008-11-10T22:24:57Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=66f502a416f18cd36179290746aa53736c6b2828'/>
<id>urn:sha1:66f502a416f18cd36179290746aa53736c6b2828</id>
<content type='text'>
The locking_state dump, ocfs2_dlm_seq_show, reads the lvb on locks where it
has not yet been initialized by a lock call.

Signed-off-by: David Teigland &lt;teigland@redhat.com&gt;
Acked-by: Joel Becker &lt;joel.becker@oracle.com&gt;
Signed-off-by: Mark Fasheh &lt;mfasheh@suse.com&gt;
</content>
</entry>
<entry>
<title>ocfs2: comments typo fix</title>
<updated>2008-12-01T22:46:31Z</updated>
<author>
<name>Coly Li</name>
</author>
<published>2008-11-05T07:16:24Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=3b5da0189c93160e44b878d2c72e9552d642497c'/>
<id>urn:sha1:3b5da0189c93160e44b878d2c72e9552d642497c</id>
<content type='text'>
This patch fixes two typos in comments of ocfs2.

Signed-off-by: Coly Li &lt;coyli@suse.de&gt;
Signed-off-by: Mark Fasheh &lt;mfasheh@suse.com&gt;
</content>
</entry>
<entry>
<title>ocfs2: Check search result in ocfs2_xattr_block_get()</title>
<updated>2008-11-10T17:51:47Z</updated>
<author>
<name>Tiger Yang</name>
</author>
<published>2008-11-02T11:04:21Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=6c1e183e12dbd78a897a859f13220406296fee31'/>
<id>urn:sha1:6c1e183e12dbd78a897a859f13220406296fee31</id>
<content type='text'>
ocfs2_xattr_block_get() calls ocfs2_xattr_search() to find an external
xattr, but doesn't check the search result that is passed back via struct
ocfs2_xattr_search. Add a check for search result, and pass back -ENODATA if
the xattr search failed. This avoids a later NULL pointer error.

Signed-off-by: Tiger Yang &lt;tiger.yang@oracle.com&gt;
Signed-off-by: Mark Fasheh &lt;mfasheh@suse.com&gt;
</content>
</entry>
</feed>
