<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux/fs, branch v3.0.59</title>
<subtitle>Linux kernel source tree</subtitle>
<id>https://git.amat.us/linux/atom/fs?h=v3.0.59</id>
<link rel='self' href='https://git.amat.us/linux/atom/fs?h=v3.0.59'/>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/'/>
<updated>2013-01-17T16:44:12Z</updated>
<entry>
<title>GFS2: Test bufdata with buffer locked and gfs2_log_lock held</title>
<updated>2013-01-17T16:44:12Z</updated>
<author>
<name>Benjamin Marzinski</name>
<email>bmarzins@redhat.com</email>
</author>
<published>2012-11-07T06:38:06Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=d668f92bf357683de292ce7538fc7b1186354004'/>
<id>urn:sha1:d668f92bf357683de292ce7538fc7b1186354004</id>
<content type='text'>
commit 96e5d1d3adf56f1c7eeb07258f6a1a0a7ae9c489 upstream.

In gfs2_trans_add_bh(), gfs2 was testing if a there was a bd attached to the
buffer without having the gfs2_log_lock held. It was then assuming it would
stay attached for the rest of the function. However, without either the log
lock being held of the buffer locked, __gfs2_ail_flush() could detach bd at any
time.  This patch moves the locking before the test.  If there isn't a bd
already attached, gfs2 can safely allocate one and attach it before locking.
There is no way that the newly allocated bd could be on the ail list,
and thus no way for __gfs2_ail_flush() to detach it.

Signed-off-by: Benjamin Marzinski &lt;bmarzins@redhat.com&gt;
Signed-off-by: Steven Whitehouse &lt;swhiteho@redhat.com&gt;
[bwh: Backported to 3.2: adjust context]
Signed-off-by: Ben Hutchings &lt;ben@decadent.org.uk&gt;
</content>
</entry>
<entry>
<title>epoll: prevent missed events on EPOLL_CTL_MOD</title>
<updated>2013-01-17T16:43:59Z</updated>
<author>
<name>Eric Wong</name>
<email>normalperson@yhbt.net</email>
</author>
<published>2013-01-01T21:20:27Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=93b40265d0c287271b19320574a76070d76d5a3b'/>
<id>urn:sha1:93b40265d0c287271b19320574a76070d76d5a3b</id>
<content type='text'>
commit 128dd1759d96ad36c379240f8b9463e8acfd37a1 upstream.

EPOLL_CTL_MOD sets the interest mask before calling f_op-&gt;poll() to
ensure events are not missed.  Since the modifications to the interest
mask are not protected by the same lock as ep_poll_callback, we need to
ensure the change is visible to other CPUs calling ep_poll_callback.

We also need to ensure f_op-&gt;poll() has an up-to-date view of past
events which occured before we modified the interest mask.  So this
barrier also pairs with the barrier in wq_has_sleeper().

This should guarantee either ep_poll_callback or f_op-&gt;poll() (or both)
will notice the readiness of a recently-ready/modified item.

This issue was encountered by Andreas Voellmy and Junchang(Jason) Wang in:
http://thread.gmane.org/gmane.linux.kernel/1408782/

Signed-off-by: Eric Wong &lt;normalperson@yhbt.net&gt;
Cc: Hans Verkuil &lt;hans.verkuil@cisco.com&gt;
Cc: Jiri Olsa &lt;jolsa@redhat.com&gt;
Cc: Jonathan Corbet &lt;corbet@lwn.net&gt;
Cc: Al Viro &lt;viro@zeniv.linux.org.uk&gt;
Cc: Davide Libenzi &lt;davidel@xmailserver.org&gt;
Cc: Hans de Goede &lt;hdegoede@redhat.com&gt;
Cc: Mauro Carvalho Chehab &lt;mchehab@infradead.org&gt;
Cc: David Miller &lt;davem@davemloft.net&gt;
Cc: Eric Dumazet &lt;eric.dumazet@gmail.com&gt;
Cc: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Cc: Andreas Voellmy &lt;andreas.voellmy@yale.edu&gt;
Tested-by: "Junchang(Jason) Wang" &lt;junchang.wang@yale.edu&gt;
Cc: netdev@vger.kernel.org
Cc: linux-fsdevel@vger.kernel.org
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
[bwh: Backported to 3.2: adjust context]
Signed-off-by: Ben Hutchings &lt;ben@decadent.org.uk&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>udf: don't increment lenExtents while writing to a hole</title>
<updated>2013-01-17T16:43:58Z</updated>
<author>
<name>Namjae Jeon</name>
<email>namjae.jeon@samsung.com</email>
</author>
<published>2012-10-09T15:09:12Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=cdfcbd8d74fdfd7a0d55330a1b60411b153ae71b'/>
<id>urn:sha1:cdfcbd8d74fdfd7a0d55330a1b60411b153ae71b</id>
<content type='text'>
commit fb719c59bdb4fca86ee1fd1f42ab3735ca12b6b2 upstream.

Incrementing lenExtents even while writing to a hole is bad
for performance as calls to udf_discard_prealloc and
udf_truncate_tail_extent would not return from start if
isize != lenExtents

Signed-off-by: Namjae Jeon &lt;namjae.jeon@samsung.com&gt;
Signed-off-by: Ashish Sangwan &lt;a.sangwan@samsung.com&gt;
Signed-off-by: Jan Kara &lt;jack@suse.cz&gt;
Signed-off-by: Shuah Khan &lt;shuah.khan@hp.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>udf: fix memory leak while allocating blocks during write</title>
<updated>2013-01-17T16:43:58Z</updated>
<author>
<name>Namjae Jeon</name>
<email>namjae.jeon@samsung.com</email>
</author>
<published>2012-10-09T15:08:56Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=de3ecca3e3d55f2bb3118839a8fd709362d55678'/>
<id>urn:sha1:de3ecca3e3d55f2bb3118839a8fd709362d55678</id>
<content type='text'>
commit 2fb7d99d0de3fd8ae869f35ab682581d8455887a upstream.

Need to brelse the buffer_head stored in cur_epos and next_epos.

Signed-off-by: Namjae Jeon &lt;namjae.jeon@samsung.com&gt;
Signed-off-by: Ashish Sangwan &lt;a.sangwan@samsung.com&gt;
Signed-off-by: Jan Kara &lt;jack@suse.cz&gt;
Signed-off-by: Shuah Khan &lt;shuah.khan@hp.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>ext4: lock i_mutex when truncating orphan inodes</title>
<updated>2013-01-17T16:43:57Z</updated>
<author>
<name>Theodore Ts'o</name>
<email>tytso@mit.edu</email>
</author>
<published>2012-12-27T06:42:48Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=a4202fd727f6bf57827061104a60307e78124ea2'/>
<id>urn:sha1:a4202fd727f6bf57827061104a60307e78124ea2</id>
<content type='text'>
commit 721e3eba21e43532e438652dd8f1fcdfce3187e7 upstream.

Commit c278531d39 added a warning when ext4_flush_unwritten_io() is
called without i_mutex being taken.  It had previously not been taken
during orphan cleanup since races weren't possible at that point in
the mount process, but as a result of this c278531d39, we will now see
a kernel WARN_ON in this case.  Take the i_mutex in
ext4_orphan_cleanup() to suppress this warning.

Reported-by: Alexander Beregalov &lt;a.beregalov@gmail.com&gt;
Signed-off-by: "Theodore Ts'o" &lt;tytso@mit.edu&gt;
Reviewed-by: Zheng Liu &lt;wenqing.lz@taobao.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>ext4: do not try to write superblock on ro remount w/o journal</title>
<updated>2013-01-17T16:43:57Z</updated>
<author>
<name>Michael Tokarev</name>
<email>mjt@tls.msk.ru</email>
</author>
<published>2012-12-25T19:08:16Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=1ba9a27ec24b133799bc1b8a77d733c4015d0abd'/>
<id>urn:sha1:1ba9a27ec24b133799bc1b8a77d733c4015d0abd</id>
<content type='text'>
commit d096ad0f79a782935d2e06ae8fb235e8c5397775 upstream.

When a journal-less ext4 filesystem is mounted on a read-only block
device (blockdev --setro will do), each remount (for other, unrelated,
flags, like suid=&gt;nosuid etc) results in a series of scary messages
from kernel telling about I/O errors on the device.

This is becauese of the following code ext4_remount():

       if (sbi-&gt;s_journal == NULL)
                ext4_commit_super(sb, 1);

at the end of remount procedure, which forces writing (flushing) of
a superblock regardless whenever it is dirty or not, if the filesystem
is readonly or not, and whenever the device itself is readonly or not.

We only need call ext4_commit_super when the file system had been
previously mounted read/write.

Thanks to Eric Sandeen for help in diagnosing this issue.

Signed-off-By: Michael Tokarev &lt;mjt@tls.msk.ru&gt;
Signed-off-by: "Theodore Ts'o" &lt;tytso@mit.edu&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>jbd2: fix assertion failure in jbd2_journal_flush()</title>
<updated>2013-01-17T16:43:57Z</updated>
<author>
<name>Jan Kara</name>
<email>jack@suse.cz</email>
</author>
<published>2012-12-21T05:15:51Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=7c558b7eb837ca7bc014af2f5509be143c3c3670'/>
<id>urn:sha1:7c558b7eb837ca7bc014af2f5509be143c3c3670</id>
<content type='text'>
commit d7961c7fa4d2e3c3f12be67e21ba8799b5a7238a upstream.

The following race is possible between start_this_handle() and someone
calling jbd2_journal_flush().

Process A                              Process B
start_this_handle().
  if (journal-&gt;j_barrier_count) # false
  if (!journal-&gt;j_running_transaction) { #true
    read_unlock(&amp;journal-&gt;j_state_lock);
                                       jbd2_journal_lock_updates()
                                       jbd2_journal_flush()
                                         write_lock(&amp;journal-&gt;j_state_lock);
                                         if (journal-&gt;j_running_transaction) {
                                           # false
                                         ... wait for committing trans ...
                                         write_unlock(&amp;journal-&gt;j_state_lock);
    ...
    write_lock(&amp;journal-&gt;j_state_lock);
    if (!journal-&gt;j_running_transaction) { # true
      jbd2_get_transaction(journal, new_transaction);
    write_unlock(&amp;journal-&gt;j_state_lock);
    goto repeat; # eventually blocks on j_barrier_count &gt; 0
                                         ...
                                         J_ASSERT(!journal-&gt;j_running_transaction);
                                           # fails

We fix the race by rechecking j_barrier_count after reacquiring j_state_lock
in exclusive mode.

Reported-by: yjwsignal@empal.com
Signed-off-by: Jan Kara &lt;jack@suse.cz&gt;
Signed-off-by: "Theodore Ts'o" &lt;tytso@mit.edu&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>ext4: fix extent tree corruption caused by hole punch</title>
<updated>2013-01-17T16:43:57Z</updated>
<author>
<name>Forrest Liu</name>
<email>forrestl@synology.com</email>
</author>
<published>2012-12-17T14:55:39Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=8cbe63802ddac6b242e4a4293fc338fa7808272c'/>
<id>urn:sha1:8cbe63802ddac6b242e4a4293fc338fa7808272c</id>
<content type='text'>
commit c36575e663e302dbaa4d16b9c72d2c9a913a9aef upstream.

When depth of extent tree is greater than 1, logical start value of
interior node is not correctly updated in ext4_ext_rm_idx.

Signed-off-by: Forrest Liu &lt;forrestl@synology.com&gt;
Signed-off-by: "Theodore Ts'o" &lt;tytso@mit.edu&gt;
Reviewed-by: Ashish Sangwan &lt;ashishsangwan2@gmail.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>jffs2: hold erase_completion_lock on exit</title>
<updated>2013-01-17T16:43:55Z</updated>
<author>
<name>Alexey Khoroshilov</name>
<email>khoroshilov@ispras.ru</email>
</author>
<published>2012-11-05T18:40:14Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=43f5d330de7b4238cd4c0b3f287218e1734332af'/>
<id>urn:sha1:43f5d330de7b4238cd4c0b3f287218e1734332af</id>
<content type='text'>
commit 2cbba75a56ea78e6876b4e2547a882f10b3fe72b upstream.

Users of jffs2_do_reserve_space() expect they still held
erase_completion_lock after call to it. But there is a path
where jffs2_do_reserve_space() leaves erase_completion_lock unlocked.
The patch fixes it.

Found by Linux Driver Verification project (linuxtesting.org).

Signed-off-by: Alexey Khoroshilov &lt;khoroshilov@ispras.ru&gt;
Signed-off-by: Artem Bityutskiy &lt;artem.bityutskiy@linux.intel.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>ext4: fix memory leak in ext4_xattr_set_acl()'s error path</title>
<updated>2013-01-17T16:43:55Z</updated>
<author>
<name>Eugene Shatokhin</name>
<email>eugene.shatokhin@rosalab.ru</email>
</author>
<published>2012-11-08T20:11:11Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=9d4cbf806eaefbf4a8a63de492a060e06b07f5a6'/>
<id>urn:sha1:9d4cbf806eaefbf4a8a63de492a060e06b07f5a6</id>
<content type='text'>
commit 24ec19b0ae83a385ad9c55520716da671274b96c upstream.

In ext4_xattr_set_acl(), if ext4_journal_start() returns an error,
posix_acl_release() will not be called for 'acl' which may result in a
memory leak.

This patch fixes that.

Reviewed-by: Lukas Czerner &lt;lczerner@redhat.com&gt;
Signed-off-by: Eugene Shatokhin &lt;eugene.shatokhin@rosalab.ru&gt;
Signed-off-by: "Theodore Ts'o" &lt;tytso@mit.edu&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
</feed>
