<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux.git/fs/btrfs, branch v3.16</title>
<subtitle>Linux kernel source tree</subtitle>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/'/>
<entry>
<title>Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs</title>
<updated>2014-07-21T03:21:05+00:00</updated>
<author>
<name>Linus Torvalds</name>
<email>torvalds@linux-foundation.org</email>
</author>
<published>2014-07-21T03:21:05+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=da83fc6e0f379bf80d68d34cca38788a046a71f4'/>
<id>da83fc6e0f379bf80d68d34cca38788a046a71f4</id>
<content type='text'>
Pull btrfs fixes from Chris Mason:
 "We have two more fixes in my for-linus branch.

  I was hoping to also include a fix for a btrfs deadlock with
  compression enabled, but we're still nailing that one down"

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs:
  btrfs: test for valid bdev before kobj removal in btrfs_rm_device
  Btrfs: fix abnormal long waiting in fsync
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Pull btrfs fixes from Chris Mason:
 "We have two more fixes in my for-linus branch.

  I was hoping to also include a fix for a btrfs deadlock with
  compression enabled, but we're still nailing that one down"

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs:
  btrfs: test for valid bdev before kobj removal in btrfs_rm_device
  Btrfs: fix abnormal long waiting in fsync
</pre>
</div>
</content>
</entry>
<entry>
<title>btrfs: test for valid bdev before kobj removal in btrfs_rm_device</title>
<updated>2014-07-19T18:49:44+00:00</updated>
<author>
<name>Eric Sandeen</name>
<email>sandeen@redhat.com</email>
</author>
<published>2014-07-07T17:34:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=0bfaa9c5cb479cebc24979b384374fe47500b4c9'/>
<id>0bfaa9c5cb479cebc24979b384374fe47500b4c9</id>
<content type='text'>
commit 99994cd btrfs: dev delete should remove sysfs entry
added a btrfs_kobj_rm_device, which dereferences device-&gt;bdev...
right after we check whether device-&gt;bdev might be NULL.

I don't honestly know if it's possible to have a NULL device-&gt;bdev
here, but assuming that it is (given the test), we need to move
the kobject removal to be under that test.

(Coverity spotted this)

Signed-off-by: Eric Sandeen &lt;sandeen@redhat.com&gt;
Signed-off-by: Chris Mason &lt;clm@fb.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit 99994cd btrfs: dev delete should remove sysfs entry
added a btrfs_kobj_rm_device, which dereferences device-&gt;bdev...
right after we check whether device-&gt;bdev might be NULL.

I don't honestly know if it's possible to have a NULL device-&gt;bdev
here, but assuming that it is (given the test), we need to move
the kobject removal to be under that test.

(Coverity spotted this)

Signed-off-by: Eric Sandeen &lt;sandeen@redhat.com&gt;
Signed-off-by: Chris Mason &lt;clm@fb.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Btrfs: fix abnormal long waiting in fsync</title>
<updated>2014-07-19T18:49:44+00:00</updated>
<author>
<name>Liu Bo</name>
<email>bo.li.liu@oracle.com</email>
</author>
<published>2014-07-17T08:08:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=98ce2deda23a303682a4253f3016a1436f4b2735'/>
<id>98ce2deda23a303682a4253f3016a1436f4b2735</id>
<content type='text'>
xfstests generic/127 detected this problem.

With commit 7fc34a62ca4434a79c68e23e70ed26111b7a4cf8, now fsync will only flush
data within the passed range.  This is the cause of the above problem,
-- btrfs's fsync has a stage called 'sync log' which will wait for all the
ordered extents it've recorded to finish.

In xfstests/generic/127, with mixed operations such as truncate, fallocate,
punch hole, and mapwrite, we get some pre-allocated extents, and mapwrite will
mmap, and then msync.  And I find that msync will wait for quite a long time
(about 20s in my case), thanks to ftrace, it turns out that the previous
fallocate calls 'btrfs_wait_ordered_range()' to flush dirty pages, but as the
range of dirty pages may be larger than 'btrfs_wait_ordered_range()' wants,
there can be some ordered extents created but not getting corresponding pages
flushed, then they're left in memory until we fsync which runs into the
stage 'sync log', and fsync will just wait for the system writeback thread
to flush those pages and get ordered extents finished, so the latency is
inevitable.

This adds a flush similar to btrfs_start_ordered_extent() in
btrfs_wait_logged_extents() to fix that.

Reviewed-by: Miao Xie &lt;miaox@cn.fujitsu.com&gt;
Signed-off-by: Liu Bo &lt;bo.li.liu@oracle.com&gt;
Signed-off-by: Chris Mason &lt;clm@fb.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
xfstests generic/127 detected this problem.

With commit 7fc34a62ca4434a79c68e23e70ed26111b7a4cf8, now fsync will only flush
data within the passed range.  This is the cause of the above problem,
-- btrfs's fsync has a stage called 'sync log' which will wait for all the
ordered extents it've recorded to finish.

In xfstests/generic/127, with mixed operations such as truncate, fallocate,
punch hole, and mapwrite, we get some pre-allocated extents, and mapwrite will
mmap, and then msync.  And I find that msync will wait for quite a long time
(about 20s in my case), thanks to ftrace, it turns out that the previous
fallocate calls 'btrfs_wait_ordered_range()' to flush dirty pages, but as the
range of dirty pages may be larger than 'btrfs_wait_ordered_range()' wants,
there can be some ordered extents created but not getting corresponding pages
flushed, then they're left in memory until we fsync which runs into the
stage 'sync log', and fsync will just wait for the system writeback thread
to flush those pages and get ordered extents finished, so the latency is
inevitable.

This adds a flush similar to btrfs_start_ordered_extent() in
btrfs_wait_logged_extents() to fix that.

Reviewed-by: Miao Xie &lt;miaox@cn.fujitsu.com&gt;
Signed-off-by: Liu Bo &lt;bo.li.liu@oracle.com&gt;
Signed-off-by: Chris Mason &lt;clm@fb.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs</title>
<updated>2014-07-04T15:53:53+00:00</updated>
<author>
<name>Linus Torvalds</name>
<email>torvalds@linux-foundation.org</email>
</author>
<published>2014-07-04T15:53:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=b82207b8e8bffae5b2df8c054a35b0994cbb9896'/>
<id>b82207b8e8bffae5b2df8c054a35b0994cbb9896</id>
<content type='text'>
Pull btrfs fixes from Chris Mason:
 "We've queued up a few fixes in my for-linus branch"

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs:
  Btrfs: fix crash when starting transaction
  Btrfs: fix btrfs_print_leaf for skinny metadata
  Btrfs: fix race of using total_bytes_pinned
  btrfs: use E2BIG instead of EIO if compression does not help
  btrfs: remove stale comment from btrfs_flush_all_pending_stuffs
  Btrfs: fix use-after-free when cloning a trailing file hole
  btrfs: fix null pointer dereference in btrfs_show_devname when name is null
  btrfs: fix null pointer dereference in clone_fs_devices when name is null
  btrfs: fix nossd and ssd_spread mount option regression
  Btrfs: fix race between balance recovery and root deletion
  Btrfs: atomically set inode-&gt;i_flags in btrfs_update_iflags
  btrfs: only unlock block in verify_parent_transid if we locked it
  Btrfs: assert send doesn't attempt to start transactions
  btrfs compression: reuse recently used workspace
  Btrfs: fix crash when mounting raid5 btrfs with missing disks
  btrfs: create sprout should rename fsid on the sysfs as well
  btrfs: dev replace should replace the sysfs entry
  btrfs: dev add should add its sysfs entry
  btrfs: dev delete should remove sysfs entry
  btrfs: rename add_device_membership to btrfs_kobj_add_device
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Pull btrfs fixes from Chris Mason:
 "We've queued up a few fixes in my for-linus branch"

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs:
  Btrfs: fix crash when starting transaction
  Btrfs: fix btrfs_print_leaf for skinny metadata
  Btrfs: fix race of using total_bytes_pinned
  btrfs: use E2BIG instead of EIO if compression does not help
  btrfs: remove stale comment from btrfs_flush_all_pending_stuffs
  Btrfs: fix use-after-free when cloning a trailing file hole
  btrfs: fix null pointer dereference in btrfs_show_devname when name is null
  btrfs: fix null pointer dereference in clone_fs_devices when name is null
  btrfs: fix nossd and ssd_spread mount option regression
  Btrfs: fix race between balance recovery and root deletion
  Btrfs: atomically set inode-&gt;i_flags in btrfs_update_iflags
  btrfs: only unlock block in verify_parent_transid if we locked it
  Btrfs: assert send doesn't attempt to start transactions
  btrfs compression: reuse recently used workspace
  Btrfs: fix crash when mounting raid5 btrfs with missing disks
  btrfs: create sprout should rename fsid on the sysfs as well
  btrfs: dev replace should replace the sysfs entry
  btrfs: dev add should add its sysfs entry
  btrfs: dev delete should remove sysfs entry
  btrfs: rename add_device_membership to btrfs_kobj_add_device
</pre>
</div>
</content>
</entry>
<entry>
<title>Btrfs: fix crash when starting transaction</title>
<updated>2014-07-03T14:04:18+00:00</updated>
<author>
<name>Filipe Manana</name>
<email>fdmanana@gmail.com</email>
</author>
<published>2014-06-24T16:46:58+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=abdd2e80a57e5f7278f47913315065f0a3d78d20'/>
<id>abdd2e80a57e5f7278f47913315065f0a3d78d20</id>
<content type='text'>
Often when starting a transaction we commit the currently running transaction,
which can end up writing block group caches when the current process has its
journal_info set to NULL (and not to a transaction). This makes our assertion
at btrfs_check_data_free_space() (current_journal != NULL) fail, resulting
in a crash/hang. Therefore fix it by setting journal_info.

Two different traces of this issue follow below.

1)

    [51502.241936] BTRFS: assertion failed: current-&gt;journal_info, file: fs/btrfs/extent-tree.c, line: 3670
    [51502.242213] ------------[ cut here ]------------
    [51502.242493] kernel BUG at fs/btrfs/ctree.h:3964!
    [51502.242669] invalid opcode: 0000 [#1] SMP DEBUG_PAGEALLOC
    (...)
    [51502.244010] Call Trace:
    [51502.244010]  [&lt;ffffffffa02bc025&gt;] btrfs_check_data_free_space+0x395/0x3a0 [btrfs]
    [51502.244010]  [&lt;ffffffffa02c3bdc&gt;] btrfs_write_dirty_block_groups+0x4ac/0x640 [btrfs]
    [51502.244010]  [&lt;ffffffffa0357a6a&gt;] commit_cowonly_roots+0x164/0x226 [btrfs]
    [51502.244010]  [&lt;ffffffffa02d53cd&gt;] btrfs_commit_transaction+0x4ed/0xab0 [btrfs]
    [51502.244010]  [&lt;ffffffff8168ec7b&gt;] ? _raw_spin_unlock+0x2b/0x40
    [51502.244010]  [&lt;ffffffffa02d6259&gt;] start_transaction+0x459/0x620 [btrfs]
    [51502.244010]  [&lt;ffffffffa02d67ab&gt;] btrfs_start_transaction+0x1b/0x20 [btrfs]
    [51502.244010]  [&lt;ffffffffa02d73e1&gt;] __unlink_start_trans+0x31/0xe0 [btrfs]
    [51502.244010]  [&lt;ffffffffa02dea67&gt;] btrfs_unlink+0x37/0xc0 [btrfs]
    [51502.244010]  [&lt;ffffffff811bb054&gt;] ? do_unlinkat+0x114/0x2a0
    [51502.244010]  [&lt;ffffffff811baebc&gt;] vfs_unlink+0xcc/0x150
    [51502.244010]  [&lt;ffffffff811bb1a0&gt;] do_unlinkat+0x260/0x2a0
    [51502.244010]  [&lt;ffffffff811a9ef4&gt;] ? filp_close+0x64/0x90
    [51502.244010]  [&lt;ffffffff810aaea6&gt;] ? trace_hardirqs_on_caller+0x16/0x1e0
    [51502.244010]  [&lt;ffffffff81349cab&gt;] ? trace_hardirqs_on_thunk+0x3a/0x3f
    [51502.244010]  [&lt;ffffffff811be9eb&gt;] SyS_unlinkat+0x1b/0x40
    [51502.244010]  [&lt;ffffffff81698452&gt;] system_call_fastpath+0x16/0x1b
    [51502.244010] Code: 0b 55 48 89 e5 0f 0b 55 48 89 e5 0f 0b 55 89 f1 48 c7 c2 71 13 36 a0 48 89 fe 31 c0 48 c7 c7 b8 43 36 a0 48 89 e5 e8 5d b0 32 e1 &lt;0f&gt; 0b 0f 1f 44 00 00 55 b9 11 00 00 00 48 89 e5 41 55 49 89 f5
    [51502.244010] RIP  [&lt;ffffffffa03575da&gt;] assfail.constprop.88+0x1e/0x20 [btrfs]

2)

    [25405.097230] BTRFS: assertion failed: current-&gt;journal_info, file: fs/btrfs/extent-tree.c, line: 3670
    [25405.097488] ------------[ cut here ]------------
    [25405.097767] kernel BUG at fs/btrfs/ctree.h:3964!
    [25405.097940] invalid opcode: 0000 [#1] SMP DEBUG_PAGEALLOC
    (...)
    [25405.100008] Call Trace:
    [25405.100008]  [&lt;ffffffffa02bc025&gt;] btrfs_check_data_free_space+0x395/0x3a0 [btrfs]
    [25405.100008]  [&lt;ffffffffa02c3bdc&gt;] btrfs_write_dirty_block_groups+0x4ac/0x640 [btrfs]
    [25405.100008]  [&lt;ffffffffa035755a&gt;] commit_cowonly_roots+0x164/0x226 [btrfs]
    [25405.100008]  [&lt;ffffffffa02d53cd&gt;] btrfs_commit_transaction+0x4ed/0xab0 [btrfs]
    [25405.100008]  [&lt;ffffffff8109c170&gt;] ? bit_waitqueue+0xc0/0xc0
    [25405.100008]  [&lt;ffffffffa02d6259&gt;] start_transaction+0x459/0x620 [btrfs]
    [25405.100008]  [&lt;ffffffffa02d67ab&gt;] btrfs_start_transaction+0x1b/0x20 [btrfs]
    [25405.100008]  [&lt;ffffffffa02e3407&gt;] btrfs_create+0x47/0x210 [btrfs]
    [25405.100008]  [&lt;ffffffffa02d74cc&gt;] ? btrfs_permission+0x3c/0x80 [btrfs]
    [25405.100008]  [&lt;ffffffff811bc63b&gt;] vfs_create+0x9b/0x130
    [25405.100008]  [&lt;ffffffff811bcf19&gt;] do_last+0x849/0xe20
    [25405.100008]  [&lt;ffffffff811b9409&gt;] ? link_path_walk+0x79/0x820
    [25405.100008]  [&lt;ffffffff811bd5b5&gt;] path_openat+0xc5/0x690
    [25405.100008]  [&lt;ffffffff810ab07d&gt;] ? trace_hardirqs_on+0xd/0x10
    [25405.100008]  [&lt;ffffffff811cdcd2&gt;] ? __alloc_fd+0x32/0x1d0
    [25405.100008]  [&lt;ffffffff811be2a3&gt;] do_filp_open+0x43/0xa0
    [25405.100008]  [&lt;ffffffff811cddf1&gt;] ? __alloc_fd+0x151/0x1d0
    [25405.100008]  [&lt;ffffffff811abcfc&gt;] do_sys_open+0x13c/0x230
    [25405.100008]  [&lt;ffffffff810aaea6&gt;] ? trace_hardirqs_on_caller+0x16/0x1e0
    [25405.100008]  [&lt;ffffffff811abe12&gt;] SyS_open+0x22/0x30
    [25405.100008]  [&lt;ffffffff81698452&gt;] system_call_fastpath+0x16/0x1b
    [25405.100008] Code: 0b 55 48 89 e5 0f 0b 55 48 89 e5 0f 0b 55 89 f1 48 c7 c2 51 13 36 a0 48 89 fe 31 c0 48 c7 c7 d0 43 36 a0 48 89 e5 e8 6d b5 32 e1 &lt;0f&gt; 0b 0f 1f 44 00 00 55 b9 11 00 00 00 48 89 e5 41 55 49 89 f5
    [25405.100008] RIP  [&lt;ffffffffa03570ca&gt;] assfail.constprop.88+0x1e/0x20 [btrfs]

Signed-off-by: Filipe David Borba Manana &lt;fdmanana@gmail.com&gt;
Signed-off-by: Chris Mason &lt;clm@fb.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Often when starting a transaction we commit the currently running transaction,
which can end up writing block group caches when the current process has its
journal_info set to NULL (and not to a transaction). This makes our assertion
at btrfs_check_data_free_space() (current_journal != NULL) fail, resulting
in a crash/hang. Therefore fix it by setting journal_info.

Two different traces of this issue follow below.

1)

    [51502.241936] BTRFS: assertion failed: current-&gt;journal_info, file: fs/btrfs/extent-tree.c, line: 3670
    [51502.242213] ------------[ cut here ]------------
    [51502.242493] kernel BUG at fs/btrfs/ctree.h:3964!
    [51502.242669] invalid opcode: 0000 [#1] SMP DEBUG_PAGEALLOC
    (...)
    [51502.244010] Call Trace:
    [51502.244010]  [&lt;ffffffffa02bc025&gt;] btrfs_check_data_free_space+0x395/0x3a0 [btrfs]
    [51502.244010]  [&lt;ffffffffa02c3bdc&gt;] btrfs_write_dirty_block_groups+0x4ac/0x640 [btrfs]
    [51502.244010]  [&lt;ffffffffa0357a6a&gt;] commit_cowonly_roots+0x164/0x226 [btrfs]
    [51502.244010]  [&lt;ffffffffa02d53cd&gt;] btrfs_commit_transaction+0x4ed/0xab0 [btrfs]
    [51502.244010]  [&lt;ffffffff8168ec7b&gt;] ? _raw_spin_unlock+0x2b/0x40
    [51502.244010]  [&lt;ffffffffa02d6259&gt;] start_transaction+0x459/0x620 [btrfs]
    [51502.244010]  [&lt;ffffffffa02d67ab&gt;] btrfs_start_transaction+0x1b/0x20 [btrfs]
    [51502.244010]  [&lt;ffffffffa02d73e1&gt;] __unlink_start_trans+0x31/0xe0 [btrfs]
    [51502.244010]  [&lt;ffffffffa02dea67&gt;] btrfs_unlink+0x37/0xc0 [btrfs]
    [51502.244010]  [&lt;ffffffff811bb054&gt;] ? do_unlinkat+0x114/0x2a0
    [51502.244010]  [&lt;ffffffff811baebc&gt;] vfs_unlink+0xcc/0x150
    [51502.244010]  [&lt;ffffffff811bb1a0&gt;] do_unlinkat+0x260/0x2a0
    [51502.244010]  [&lt;ffffffff811a9ef4&gt;] ? filp_close+0x64/0x90
    [51502.244010]  [&lt;ffffffff810aaea6&gt;] ? trace_hardirqs_on_caller+0x16/0x1e0
    [51502.244010]  [&lt;ffffffff81349cab&gt;] ? trace_hardirqs_on_thunk+0x3a/0x3f
    [51502.244010]  [&lt;ffffffff811be9eb&gt;] SyS_unlinkat+0x1b/0x40
    [51502.244010]  [&lt;ffffffff81698452&gt;] system_call_fastpath+0x16/0x1b
    [51502.244010] Code: 0b 55 48 89 e5 0f 0b 55 48 89 e5 0f 0b 55 89 f1 48 c7 c2 71 13 36 a0 48 89 fe 31 c0 48 c7 c7 b8 43 36 a0 48 89 e5 e8 5d b0 32 e1 &lt;0f&gt; 0b 0f 1f 44 00 00 55 b9 11 00 00 00 48 89 e5 41 55 49 89 f5
    [51502.244010] RIP  [&lt;ffffffffa03575da&gt;] assfail.constprop.88+0x1e/0x20 [btrfs]

2)

    [25405.097230] BTRFS: assertion failed: current-&gt;journal_info, file: fs/btrfs/extent-tree.c, line: 3670
    [25405.097488] ------------[ cut here ]------------
    [25405.097767] kernel BUG at fs/btrfs/ctree.h:3964!
    [25405.097940] invalid opcode: 0000 [#1] SMP DEBUG_PAGEALLOC
    (...)
    [25405.100008] Call Trace:
    [25405.100008]  [&lt;ffffffffa02bc025&gt;] btrfs_check_data_free_space+0x395/0x3a0 [btrfs]
    [25405.100008]  [&lt;ffffffffa02c3bdc&gt;] btrfs_write_dirty_block_groups+0x4ac/0x640 [btrfs]
    [25405.100008]  [&lt;ffffffffa035755a&gt;] commit_cowonly_roots+0x164/0x226 [btrfs]
    [25405.100008]  [&lt;ffffffffa02d53cd&gt;] btrfs_commit_transaction+0x4ed/0xab0 [btrfs]
    [25405.100008]  [&lt;ffffffff8109c170&gt;] ? bit_waitqueue+0xc0/0xc0
    [25405.100008]  [&lt;ffffffffa02d6259&gt;] start_transaction+0x459/0x620 [btrfs]
    [25405.100008]  [&lt;ffffffffa02d67ab&gt;] btrfs_start_transaction+0x1b/0x20 [btrfs]
    [25405.100008]  [&lt;ffffffffa02e3407&gt;] btrfs_create+0x47/0x210 [btrfs]
    [25405.100008]  [&lt;ffffffffa02d74cc&gt;] ? btrfs_permission+0x3c/0x80 [btrfs]
    [25405.100008]  [&lt;ffffffff811bc63b&gt;] vfs_create+0x9b/0x130
    [25405.100008]  [&lt;ffffffff811bcf19&gt;] do_last+0x849/0xe20
    [25405.100008]  [&lt;ffffffff811b9409&gt;] ? link_path_walk+0x79/0x820
    [25405.100008]  [&lt;ffffffff811bd5b5&gt;] path_openat+0xc5/0x690
    [25405.100008]  [&lt;ffffffff810ab07d&gt;] ? trace_hardirqs_on+0xd/0x10
    [25405.100008]  [&lt;ffffffff811cdcd2&gt;] ? __alloc_fd+0x32/0x1d0
    [25405.100008]  [&lt;ffffffff811be2a3&gt;] do_filp_open+0x43/0xa0
    [25405.100008]  [&lt;ffffffff811cddf1&gt;] ? __alloc_fd+0x151/0x1d0
    [25405.100008]  [&lt;ffffffff811abcfc&gt;] do_sys_open+0x13c/0x230
    [25405.100008]  [&lt;ffffffff810aaea6&gt;] ? trace_hardirqs_on_caller+0x16/0x1e0
    [25405.100008]  [&lt;ffffffff811abe12&gt;] SyS_open+0x22/0x30
    [25405.100008]  [&lt;ffffffff81698452&gt;] system_call_fastpath+0x16/0x1b
    [25405.100008] Code: 0b 55 48 89 e5 0f 0b 55 48 89 e5 0f 0b 55 89 f1 48 c7 c2 51 13 36 a0 48 89 fe 31 c0 48 c7 c7 d0 43 36 a0 48 89 e5 e8 6d b5 32 e1 &lt;0f&gt; 0b 0f 1f 44 00 00 55 b9 11 00 00 00 48 89 e5 41 55 49 89 f5
    [25405.100008] RIP  [&lt;ffffffffa03570ca&gt;] assfail.constprop.88+0x1e/0x20 [btrfs]

Signed-off-by: Filipe David Borba Manana &lt;fdmanana@gmail.com&gt;
Signed-off-by: Chris Mason &lt;clm@fb.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Btrfs: fix btrfs_print_leaf for skinny metadata</title>
<updated>2014-07-03T14:04:16+00:00</updated>
<author>
<name>Josef Bacik</name>
<email>jbacik@fb.com</email>
</author>
<published>2014-07-02T17:20:48+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=be2c765dff9e5584965f78853c2addd2bb926946'/>
<id>be2c765dff9e5584965f78853c2addd2bb926946</id>
<content type='text'>
We wouldn't actuall print the extent information if we had a skinny metadata
item, this fixes that.  Thanks,

Signed-off-by: Josef Bacik &lt;jbacik@fb.com&gt;
Signed-off-by: Chris Mason &lt;clm@fb.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
We wouldn't actuall print the extent information if we had a skinny metadata
item, this fixes that.  Thanks,

Signed-off-by: Josef Bacik &lt;jbacik@fb.com&gt;
Signed-off-by: Chris Mason &lt;clm@fb.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Btrfs: fix race of using total_bytes_pinned</title>
<updated>2014-07-03T14:04:15+00:00</updated>
<author>
<name>Liu Bo</name>
<email>bo.li.liu@oracle.com</email>
</author>
<published>2014-07-02T08:58:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=d288db5dc0110c8e0732d099aaf7a05e2ea0e0c8'/>
<id>d288db5dc0110c8e0732d099aaf7a05e2ea0e0c8</id>
<content type='text'>
This percpu counter @total_bytes_pinned is introduced to skip unnecessary
operations of 'commit transaction', it accounts for those space we may free
but are stuck in delayed refs.

And we zero out @space_info-&gt;total_bytes_pinned every transaction period so
we have a better idea of how much space we'll actually free up by committing
this transaction.  However, we do the 'zero out' part a little earlier, before
we actually unpin space, so we end up returning ENOSPC when we actually have
free space that's just unpinned from committing transaction.

xfstests/generic/074 complained then.

This fixes it by actually accounting the percpu pinned number when 'unpin',
and since it's protected by space_info-&gt;lock, the race is gone now.

Signed-off-by: Liu Bo &lt;bo.li.liu@oracle.com&gt;
Reviewed-by: Miao Xie &lt;miaox@cn.fujitsu.com&gt;
Signed-off-by: Chris Mason &lt;clm@fb.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This percpu counter @total_bytes_pinned is introduced to skip unnecessary
operations of 'commit transaction', it accounts for those space we may free
but are stuck in delayed refs.

And we zero out @space_info-&gt;total_bytes_pinned every transaction period so
we have a better idea of how much space we'll actually free up by committing
this transaction.  However, we do the 'zero out' part a little earlier, before
we actually unpin space, so we end up returning ENOSPC when we actually have
free space that's just unpinned from committing transaction.

xfstests/generic/074 complained then.

This fixes it by actually accounting the percpu pinned number when 'unpin',
and since it's protected by space_info-&gt;lock, the race is gone now.

Signed-off-by: Liu Bo &lt;bo.li.liu@oracle.com&gt;
Reviewed-by: Miao Xie &lt;miaox@cn.fujitsu.com&gt;
Signed-off-by: Chris Mason &lt;clm@fb.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>btrfs: use E2BIG instead of EIO if compression does not help</title>
<updated>2014-07-03T14:04:13+00:00</updated>
<author>
<name>David Sterba</name>
<email>dsterba@suse.cz</email>
</author>
<published>2014-06-20T09:43:20+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=130d5b415a091e493ac1508b9d27bbb85ba7b8c0'/>
<id>130d5b415a091e493ac1508b9d27bbb85ba7b8c0</id>
<content type='text'>
Return codes got updated in 60e1975acb48fc3d74a3422b21dde74c977ac3d5
(btrfs: return errno instead of -1 from compression)
lzo wrapper returns E2BIG in this case, do the same for zlib.

Signed-off-by: David Sterba &lt;dsterba@suse.cz&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Return codes got updated in 60e1975acb48fc3d74a3422b21dde74c977ac3d5
(btrfs: return errno instead of -1 from compression)
lzo wrapper returns E2BIG in this case, do the same for zlib.

Signed-off-by: David Sterba &lt;dsterba@suse.cz&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>btrfs: remove stale comment from btrfs_flush_all_pending_stuffs</title>
<updated>2014-07-03T14:04:12+00:00</updated>
<author>
<name>David Sterba</name>
<email>dsterba@suse.cz</email>
</author>
<published>2014-06-20T09:31:44+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=0a4eaea892a479aeebccde65986b27cfb6e33a78'/>
<id>0a4eaea892a479aeebccde65986b27cfb6e33a78</id>
<content type='text'>
Commit fcebe4562dec83b3f8d3088d77584727b09130b2 (Btrfs: rework qgroup
accounting) removed the qgroup accounting after delayed refs.

Signed-off-by: David Sterba &lt;dsterba@suse.cz&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Commit fcebe4562dec83b3f8d3088d77584727b09130b2 (Btrfs: rework qgroup
accounting) removed the qgroup accounting after delayed refs.

Signed-off-by: David Sterba &lt;dsterba@suse.cz&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Btrfs: fix use-after-free when cloning a trailing file hole</title>
<updated>2014-07-03T14:04:10+00:00</updated>
<author>
<name>Filipe Manana</name>
<email>fdmanana@gmail.com</email>
</author>
<published>2014-06-29T20:45:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=14f5979633a67de81b9bd4a36a0eb99125728f9b'/>
<id>14f5979633a67de81b9bd4a36a0eb99125728f9b</id>
<content type='text'>
The transaction handle was being used after being freed.

Cc: Chris Mason &lt;clm@fb.com&gt;
Signed-off-by: Filipe David Borba Manana &lt;fdmanana@gmail.com&gt;
Signed-off-by: Chris Mason &lt;clm@fb.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The transaction handle was being used after being freed.

Cc: Chris Mason &lt;clm@fb.com&gt;
Signed-off-by: Filipe David Borba Manana &lt;fdmanana@gmail.com&gt;
Signed-off-by: Chris Mason &lt;clm@fb.com&gt;
</pre>
</div>
</content>
</entry>
</feed>
