<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux.git/fs, branch v3.0-rc5</title>
<subtitle>Linux kernel source tree</subtitle>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/'/>
<entry>
<title>mm: fix assertion mapping-&gt;nrpages == 0 in end_writeback()</title>
<updated>2011-06-28T01:00:13+00:00</updated>
<author>
<name>Jan Kara</name>
<email>jack@suse.cz</email>
</author>
<published>2011-06-27T23:18:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=08142579b6ca35883c1ed066a2681de6f6917062'/>
<id>08142579b6ca35883c1ed066a2681de6f6917062</id>
<content type='text'>
Under heavy memory and filesystem load, users observe the assertion
mapping-&gt;nrpages == 0 in end_writeback() trigger.  This can be caused by
page reclaim reclaiming the last page from a mapping in the following
race:

	CPU0				CPU1
  ...
  shrink_page_list()
    __remove_mapping()
      __delete_from_page_cache()
        radix_tree_delete()
					evict_inode()
					  truncate_inode_pages()
					    truncate_inode_pages_range()
					      pagevec_lookup() - finds nothing
					  end_writeback()
					    mapping-&gt;nrpages != 0 -&gt; BUG
        page-&gt;mapping = NULL
        mapping-&gt;nrpages--

Fix the problem by doing a reliable check of mapping-&gt;nrpages under
mapping-&gt;tree_lock in end_writeback().

Analyzed by Jay &lt;jinshan.xiong@whamcloud.com&gt;, lost in LKML, and dug out
by Miklos Szeredi &lt;mszeredi@suse.de&gt;.

Cc: Jay &lt;jinshan.xiong@whamcloud.com&gt;
Cc: Miklos Szeredi &lt;mszeredi@suse.de&gt;
Signed-off-by: Jan Kara &lt;jack@suse.cz&gt;
Cc: &lt;stable@kernel.org&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Under heavy memory and filesystem load, users observe the assertion
mapping-&gt;nrpages == 0 in end_writeback() trigger.  This can be caused by
page reclaim reclaiming the last page from a mapping in the following
race:

	CPU0				CPU1
  ...
  shrink_page_list()
    __remove_mapping()
      __delete_from_page_cache()
        radix_tree_delete()
					evict_inode()
					  truncate_inode_pages()
					    truncate_inode_pages_range()
					      pagevec_lookup() - finds nothing
					  end_writeback()
					    mapping-&gt;nrpages != 0 -&gt; BUG
        page-&gt;mapping = NULL
        mapping-&gt;nrpages--

Fix the problem by doing a reliable check of mapping-&gt;nrpages under
mapping-&gt;tree_lock in end_writeback().

Analyzed by Jay &lt;jinshan.xiong@whamcloud.com&gt;, lost in LKML, and dug out
by Miklos Szeredi &lt;mszeredi@suse.de&gt;.

Cc: Jay &lt;jinshan.xiong@whamcloud.com&gt;
Cc: Miklos Szeredi &lt;mszeredi@suse.de&gt;
Signed-off-by: Jan Kara &lt;jack@suse.cz&gt;
Cc: &lt;stable@kernel.org&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>romfs: fix romfs_get_unmapped_area() argument check</title>
<updated>2011-06-28T01:00:12+00:00</updated>
<author>
<name>Bob Liu</name>
<email>lliubbo@gmail.com</email>
</author>
<published>2011-06-27T23:18:06+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=2b4b2482e70eba10dd98653a3a5ac68126565e24'/>
<id>2b4b2482e70eba10dd98653a3a5ac68126565e24</id>
<content type='text'>
romfs_get_unmapped_area() checks argument `len' without considering
PAGE_ALIGN which will cause do_mmap_pgoff() return -EINVAL error after
commit f67d9b1576c ("nommu: add page_align to mmap").

Fix the check by changing it in same way ramfs_nommu_get_unmapped_area()
was changed in ramfs/file-nommu.c.

Signed-off-by: Bob Liu &lt;lliubbo@gmail.com&gt;
Cc: David Howells &lt;dhowells@redhat.com&gt;
Cc: Paul Mundt &lt;lethal@linux-sh.org&gt;
Acked-by: Greg Ungerer &lt;gerg@snapgear.com&gt;
Cc: Geert Uytterhoeven &lt;geert@linux-m68k.org&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
romfs_get_unmapped_area() checks argument `len' without considering
PAGE_ALIGN which will cause do_mmap_pgoff() return -EINVAL error after
commit f67d9b1576c ("nommu: add page_align to mmap").

Fix the check by changing it in same way ramfs_nommu_get_unmapped_area()
was changed in ramfs/file-nommu.c.

Signed-off-by: Bob Liu &lt;lliubbo@gmail.com&gt;
Cc: David Howells &lt;dhowells@redhat.com&gt;
Cc: Paul Mundt &lt;lethal@linux-sh.org&gt;
Acked-by: Greg Ungerer &lt;gerg@snapgear.com&gt;
Cc: Geert Uytterhoeven &lt;geert@linux-m68k.org&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable</title>
<updated>2011-06-27T20:32:14+00:00</updated>
<author>
<name>Linus Torvalds</name>
<email>torvalds@linux-foundation.org</email>
</author>
<published>2011-06-27T20:32:14+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=af4087e0e682df12bdffec5cfafc2fec9208716e'/>
<id>af4087e0e682df12bdffec5cfafc2fec9208716e</id>
<content type='text'>
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable:
  btrfs: fix inconsonant inode information
  Btrfs: make sure to update total_bitmaps when freeing cache V3
  Btrfs: fix type mismatch in find_free_extent()
  Btrfs: make sure to record the transid in new inodes
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable:
  btrfs: fix inconsonant inode information
  Btrfs: make sure to update total_bitmaps when freeing cache V3
  Btrfs: fix type mismatch in find_free_extent()
  Btrfs: make sure to record the transid in new inodes
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge branch 'for-linus' of git://oss.sgi.com/xfs/xfs</title>
<updated>2011-06-27T16:01:29+00:00</updated>
<author>
<name>Linus Torvalds</name>
<email>torvalds@linux-foundation.org</email>
</author>
<published>2011-06-27T16:01:29+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=4699d4423c07a1db35ea9453eac3a07e818338f9'/>
<id>4699d4423c07a1db35ea9453eac3a07e818338f9</id>
<content type='text'>
* 'for-linus' of git://oss.sgi.com/xfs/xfs:
  xfs: prevent bogus assert when trying to remove non-existent attribute
  xfs: clear XFS_IDIRTY_RELEASE on truncate down
  xfs: reset inode per-lifetime state when recycling it
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* 'for-linus' of git://oss.sgi.com/xfs/xfs:
  xfs: prevent bogus assert when trying to remove non-existent attribute
  xfs: clear XFS_IDIRTY_RELEASE on truncate down
  xfs: reset inode per-lifetime state when recycling it
</pre>
</div>
</content>
</entry>
<entry>
<title>btrfs: fix inconsonant inode information</title>
<updated>2011-06-27T15:34:27+00:00</updated>
<author>
<name>Miao Xie</name>
<email>miaox@cn.fujitsu.com</email>
</author>
<published>2011-06-23T07:27:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=2f7e33d432d097a2a7f467b031bf18be91cb3d49'/>
<id>2f7e33d432d097a2a7f467b031bf18be91cb3d49</id>
<content type='text'>
When iputting the inode, We may leave the delayed nodes if they have some
delayed items that have not been dealt with. So when the inode is read again,
we must look up the relative delayed node, and use the information in it to
initialize the inode. Or we will get inconsonant inode information, it may
cause that the same directory index number is allocated again, and hit the
following oops:

[ 5447.554187] err add delayed dir index item(name: pglog_0.965_0) into the
insertion tree of the delayed node(root id: 262, inode id: 258, errno: -17)
[ 5447.569766] ------------[ cut here ]------------
[ 5447.575361] kernel BUG at fs/btrfs/delayed-inode.c:1301!
[SNIP]
[ 5447.790721] Call Trace:
[ 5447.793191]  [&lt;ffffffffa0641c4e&gt;] btrfs_insert_dir_item+0x189/0x1bb [btrfs]
[ 5447.800156]  [&lt;ffffffffa0651a45&gt;] btrfs_add_link+0x12b/0x191 [btrfs]
[ 5447.806517]  [&lt;ffffffffa0651adc&gt;] btrfs_add_nondir+0x31/0x58 [btrfs]
[ 5447.812876]  [&lt;ffffffffa0651d6a&gt;] btrfs_create+0xf9/0x197 [btrfs]
[ 5447.818961]  [&lt;ffffffff8111f840&gt;] vfs_create+0x72/0x92
[ 5447.824090]  [&lt;ffffffff8111fa8c&gt;] do_last+0x22c/0x40b
[ 5447.829133]  [&lt;ffffffff8112076a&gt;] path_openat+0xc0/0x2ef
[ 5447.834438]  [&lt;ffffffff810c58e2&gt;] ? __perf_event_task_sched_out+0x24/0x44
[ 5447.841216]  [&lt;ffffffff8103ecdd&gt;] ? perf_event_task_sched_out+0x59/0x67
[ 5447.847846]  [&lt;ffffffff81121a79&gt;] do_filp_open+0x3d/0x87
[ 5447.853156]  [&lt;ffffffff811e126c&gt;] ? strncpy_from_user+0x43/0x4d
[ 5447.859072]  [&lt;ffffffff8111f1f5&gt;] ? getname_flags+0x2e/0x80
[ 5447.864636]  [&lt;ffffffff8111f179&gt;] ? do_getname+0x14b/0x173
[ 5447.870112]  [&lt;ffffffff8111f1b7&gt;] ? audit_getname+0x16/0x26
[ 5447.875682]  [&lt;ffffffff8112b1ab&gt;] ? spin_lock+0xe/0x10
[ 5447.880882]  [&lt;ffffffff81112d39&gt;] do_sys_open+0x69/0xae
[ 5447.886153]  [&lt;ffffffff81112db1&gt;] sys_open+0x20/0x22
[ 5447.891114]  [&lt;ffffffff813b9aab&gt;] system_call_fastpath+0x16/0x1b

Fix it by reusing the old delayed node.

Reported-by: Jim Schutt &lt;jaschut@sandia.gov&gt;
Signed-off-by: Miao Xie &lt;miaox@cn.fujitsu.com&gt;
Tested-by: Jim Schutt &lt;jaschut@sandia.gov&gt;
Signed-off-by: Chris Mason &lt;chris.mason@oracle.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
When iputting the inode, We may leave the delayed nodes if they have some
delayed items that have not been dealt with. So when the inode is read again,
we must look up the relative delayed node, and use the information in it to
initialize the inode. Or we will get inconsonant inode information, it may
cause that the same directory index number is allocated again, and hit the
following oops:

[ 5447.554187] err add delayed dir index item(name: pglog_0.965_0) into the
insertion tree of the delayed node(root id: 262, inode id: 258, errno: -17)
[ 5447.569766] ------------[ cut here ]------------
[ 5447.575361] kernel BUG at fs/btrfs/delayed-inode.c:1301!
[SNIP]
[ 5447.790721] Call Trace:
[ 5447.793191]  [&lt;ffffffffa0641c4e&gt;] btrfs_insert_dir_item+0x189/0x1bb [btrfs]
[ 5447.800156]  [&lt;ffffffffa0651a45&gt;] btrfs_add_link+0x12b/0x191 [btrfs]
[ 5447.806517]  [&lt;ffffffffa0651adc&gt;] btrfs_add_nondir+0x31/0x58 [btrfs]
[ 5447.812876]  [&lt;ffffffffa0651d6a&gt;] btrfs_create+0xf9/0x197 [btrfs]
[ 5447.818961]  [&lt;ffffffff8111f840&gt;] vfs_create+0x72/0x92
[ 5447.824090]  [&lt;ffffffff8111fa8c&gt;] do_last+0x22c/0x40b
[ 5447.829133]  [&lt;ffffffff8112076a&gt;] path_openat+0xc0/0x2ef
[ 5447.834438]  [&lt;ffffffff810c58e2&gt;] ? __perf_event_task_sched_out+0x24/0x44
[ 5447.841216]  [&lt;ffffffff8103ecdd&gt;] ? perf_event_task_sched_out+0x59/0x67
[ 5447.847846]  [&lt;ffffffff81121a79&gt;] do_filp_open+0x3d/0x87
[ 5447.853156]  [&lt;ffffffff811e126c&gt;] ? strncpy_from_user+0x43/0x4d
[ 5447.859072]  [&lt;ffffffff8111f1f5&gt;] ? getname_flags+0x2e/0x80
[ 5447.864636]  [&lt;ffffffff8111f179&gt;] ? do_getname+0x14b/0x173
[ 5447.870112]  [&lt;ffffffff8111f1b7&gt;] ? audit_getname+0x16/0x26
[ 5447.875682]  [&lt;ffffffff8112b1ab&gt;] ? spin_lock+0xe/0x10
[ 5447.880882]  [&lt;ffffffff81112d39&gt;] do_sys_open+0x69/0xae
[ 5447.886153]  [&lt;ffffffff81112db1&gt;] sys_open+0x20/0x22
[ 5447.891114]  [&lt;ffffffff813b9aab&gt;] system_call_fastpath+0x16/0x1b

Fix it by reusing the old delayed node.

Reported-by: Jim Schutt &lt;jaschut@sandia.gov&gt;
Signed-off-by: Miao Xie &lt;miaox@cn.fujitsu.com&gt;
Tested-by: Jim Schutt &lt;jaschut@sandia.gov&gt;
Signed-off-by: Chris Mason &lt;chris.mason@oracle.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6</title>
<updated>2011-06-27T02:40:31+00:00</updated>
<author>
<name>Linus Torvalds</name>
<email>torvalds@linux-foundation.org</email>
</author>
<published>2011-06-27T02:40:31+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=258e43fdb00c73d424b114ae3850accd55b27cbb'/>
<id>258e43fdb00c73d424b114ae3850accd55b27cbb</id>
<content type='text'>
* git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6:
  cifs: mark CONFIG_CIFS_NFSD_EXPORT as BROKEN
  cifs: free blkcipher in smbhash
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6:
  cifs: mark CONFIG_CIFS_NFSD_EXPORT as BROKEN
  cifs: free blkcipher in smbhash
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6</title>
<updated>2011-06-27T02:39:22+00:00</updated>
<author>
<name>Linus Torvalds</name>
<email>torvalds@linux-foundation.org</email>
</author>
<published>2011-06-27T02:39:22+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=804a007f5401f87fc6e7da1e8884dc32912e35d0'/>
<id>804a007f5401f87fc6e7da1e8884dc32912e35d0</id>
<content type='text'>
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6:
  cifs: propagate errors from cifs_get_root() to mount(2)
  cifs: tidy cifs_do_mount() up a bit
  cifs: more breakage on mount failures
  cifs: close sget() races
  cifs: pull freeing mountdata/dropping nls/freeing cifs_sb into cifs_umount()
  cifs: move cifs_umount() call into -&gt;kill_sb()
  cifs: pull cifs_mount() call up
  sanitize cifs_umount() prototype
  cifs: initialize -&gt;tlink_tree in cifs_setup_cifs_sb()
  cifs: allocate mountdata earlier
  cifs: leak on mount if we share superblock
  cifs: don't pass superblock to cifs_mount()
  cifs: don't leak nls on mount failure
  cifs: double free on mount failure
  take bdi setup/destruction into cifs_mount/cifs_umount

Acked-by: Steve French &lt;smfrench@gmail.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6:
  cifs: propagate errors from cifs_get_root() to mount(2)
  cifs: tidy cifs_do_mount() up a bit
  cifs: more breakage on mount failures
  cifs: close sget() races
  cifs: pull freeing mountdata/dropping nls/freeing cifs_sb into cifs_umount()
  cifs: move cifs_umount() call into -&gt;kill_sb()
  cifs: pull cifs_mount() call up
  sanitize cifs_umount() prototype
  cifs: initialize -&gt;tlink_tree in cifs_setup_cifs_sb()
  cifs: allocate mountdata earlier
  cifs: leak on mount if we share superblock
  cifs: don't pass superblock to cifs_mount()
  cifs: don't leak nls on mount failure
  cifs: double free on mount failure
  take bdi setup/destruction into cifs_mount/cifs_umount

Acked-by: Steve French &lt;smfrench@gmail.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Btrfs: make sure to update total_bitmaps when freeing cache V3</title>
<updated>2011-06-25T13:31:06+00:00</updated>
<author>
<name>Josef Bacik</name>
<email>josef@redhat.com</email>
</author>
<published>2011-06-24T16:02:51+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=9b90f5135320bc74dc6c9a8c74d69fd4821d9282'/>
<id>9b90f5135320bc74dc6c9a8c74d69fd4821d9282</id>
<content type='text'>
A user reported this bug again where we have more bitmaps than we are supposed
to.  This is because we failed to load the free space cache, but don't update
the ctl-&gt;total_bitmaps counter when we remove entries from the tree.  This patch
fixes this problem and we should be good to go again.  Thanks,

Signed-off-by: Josef Bacik &lt;josef@redhat.com&gt;
Signed-off-by: Chris Mason &lt;chris.mason@oracle.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
A user reported this bug again where we have more bitmaps than we are supposed
to.  This is because we failed to load the free space cache, but don't update
the ctl-&gt;total_bitmaps counter when we remove entries from the tree.  This patch
fixes this problem and we should be good to go again.  Thanks,

Signed-off-by: Josef Bacik &lt;josef@redhat.com&gt;
Signed-off-by: Chris Mason &lt;chris.mason@oracle.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Btrfs: fix type mismatch in find_free_extent()</title>
<updated>2011-06-25T13:31:06+00:00</updated>
<author>
<name>Ilya Dryomov</name>
<email>idryomov@gmail.com</email>
</author>
<published>2011-06-18T20:26:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=e0f5406727f1dfdc47b8ba4a0ff6eae4b0b5ed4c'/>
<id>e0f5406727f1dfdc47b8ba4a0ff6eae4b0b5ed4c</id>
<content type='text'>
data parameter should be u64 because a full-sized chunk flags field is
passed instead of 0/1 for distinguishing data from metadata.  All
underlying functions expect u64.

Signed-off-by: Ilya Dryomov &lt;idryomov@gmail.com&gt;
Signed-off-by: Chris Mason &lt;chris.mason@oracle.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
data parameter should be u64 because a full-sized chunk flags field is
passed instead of 0/1 for distinguishing data from metadata.  All
underlying functions expect u64.

Signed-off-by: Ilya Dryomov &lt;idryomov@gmail.com&gt;
Signed-off-by: Chris Mason &lt;chris.mason@oracle.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>cifs: propagate errors from cifs_get_root() to mount(2)</title>
<updated>2011-06-24T22:39:43+00:00</updated>
<author>
<name>Al Viro</name>
<email>viro@zeniv.linux.org.uk</email>
</author>
<published>2011-06-17T14:02:59+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=9403c9c598e91d473c0582066e47ed2289292e45'/>
<id>9403c9c598e91d473c0582066e47ed2289292e45</id>
<content type='text'>
... instead of just failing with -EINVAL

Acked-by: Pavel Shilovsky &lt;piastryyy@gmail.com&gt;
Reviewed-by: Jeff Layton &lt;jlayton@redhat.com&gt;
Signed-off-by: Al Viro &lt;viro@zeniv.linux.org.uk&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
... instead of just failing with -EINVAL

Acked-by: Pavel Shilovsky &lt;piastryyy@gmail.com&gt;
Reviewed-by: Jeff Layton &lt;jlayton@redhat.com&gt;
Signed-off-by: Al Viro &lt;viro@zeniv.linux.org.uk&gt;
</pre>
</div>
</content>
</entry>
</feed>
