<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/fs/btrfs/raid56.c, branch linux-4.3.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-4.3.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-4.3.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2015-09-05T22:14:43Z</updated>
<entry>
<title>Merge branch 'for-linus-4.3' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs</title>
<updated>2015-09-05T22:14:43Z</updated>
<author>
<name>Linus Torvalds</name>
</author>
<published>2015-09-05T22:14:43Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=22365979ab15f8500254cb90037b0b4c17554739'/>
<id>urn:sha1:22365979ab15f8500254cb90037b0b4c17554739</id>
<content type='text'>
Pull btrfs updates from Chris Mason:
 "This has Jeff Mahoney's long standing trim patch that fixes corners
  where trims were missing.  Omar has some raid5/6 fixes, especially for
  using scrub and device replace when devices are missing.

  Zhao Lie continues cleaning and fixing things, this series fixes some
  really hard to hit corners in xfstests.  I had to pull it last merge
  window due to some deadlocks, but those are now resolved.

  I added support for Tejun's new blkio controllers.  It seems to work
  well for single devices, we'll expand to multi-device as well"

* 'for-linus-4.3' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs: (47 commits)
  btrfs: fix compile when block cgroups are not enabled
  Btrfs: fix file read corruption after extent cloning and fsync
  Btrfs: check if previous transaction aborted to avoid fs corruption
  btrfs: use __GFP_NOFAIL in alloc_btrfs_bio
  btrfs: Prevent from early transaction abort
  btrfs: Remove unused arguments in tree-log.c
  btrfs: Remove useless condition in start_log_trans()
  Btrfs: add support for blkio controllers
  Btrfs: remove unused mutex from struct 'btrfs_fs_info'
  Btrfs: fix parity scrub of RAID 5/6 with missing device
  Btrfs: fix device replace of a missing RAID 5/6 device
  Btrfs: add RAID 5/6 BTRFS_RBIO_REBUILD_MISSING operation
  Btrfs: count devices correctly in readahead during RAID 5/6 replace
  Btrfs: remove misleading handling of missing device scrub
  btrfs: fix clone / extent-same deadlocks
  Btrfs: fix defrag to merge tail file extent
  Btrfs: fix warning in backref walking
  btrfs: Add WARN_ON() for double lock in btrfs_tree_lock()
  btrfs: Remove root argument in extent_data_ref_count()
  btrfs: Fix wrong comment of btrfs_alloc_tree_block()
  ...
</content>
</entry>
<entry>
<title>Btrfs: add RAID 5/6 BTRFS_RBIO_REBUILD_MISSING operation</title>
<updated>2015-08-09T14:34:26Z</updated>
<author>
<name>Omar Sandoval</name>
</author>
<published>2015-06-19T18:52:50Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=b4ee1782686d5b7a97826d67fdeaefaedbca23ce'/>
<id>urn:sha1:b4ee1782686d5b7a97826d67fdeaefaedbca23ce</id>
<content type='text'>
The current RAID 5/6 recovery code isn't quite prepared to handle
missing devices. In particular, it expects a bio that we previously
attempted to use in the read path, meaning that it has valid pages
allocated. However, missing devices have a NULL blkdev, and we can't
call bio_add_page() on a bio with a NULL blkdev. We could do manual
manipulation of bio-&gt;bi_io_vec, but that's pretty gross. So instead, add
a separate path that allows us to manually add pages to the rbio.

Signed-off-by: Omar Sandoval &lt;osandov@fb.com&gt;
Signed-off-by: Chris Mason &lt;clm@fb.com&gt;
</content>
</entry>
<entry>
<title>block: add a bi_error field to struct bio</title>
<updated>2015-07-29T14:55:15Z</updated>
<author>
<name>Christoph Hellwig</name>
</author>
<published>2015-07-20T13:29:37Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=4246a0b63bd8f56a1469b12eafeb875b1041a451'/>
<id>urn:sha1:4246a0b63bd8f56a1469b12eafeb875b1041a451</id>
<content type='text'>
Currently we have two different ways to signal an I/O error on a BIO:

 (1) by clearing the BIO_UPTODATE flag
 (2) by returning a Linux errno value to the bi_end_io callback

The first one has the drawback of only communicating a single possible
error (-EIO), and the second one has the drawback of not beeing persistent
when bios are queued up, and are not passed along from child to parent
bio in the ever more popular chaining scenario.  Having both mechanisms
available has the additional drawback of utterly confusing driver authors
and introducing bugs where various I/O submitters only deal with one of
them, and the others have to add boilerplate code to deal with both kinds
of error returns.

So add a new bi_error field to store an errno value directly in struct
bio and remove the existing mechanisms to clean all this up.

Signed-off-by: Christoph Hellwig &lt;hch@lst.de&gt;
Reviewed-by: Hannes Reinecke &lt;hare@suse.de&gt;
Reviewed-by: NeilBrown &lt;neilb@suse.com&gt;
Signed-off-by: Jens Axboe &lt;axboe@fb.com&gt;
</content>
</entry>
<entry>
<title>Merge branch 'cleanups-post-3.19' of git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux into for-linus-4.1</title>
<updated>2015-03-25T17:52:48Z</updated>
<author>
<name>Chris Mason</name>
</author>
<published>2015-03-25T17:52:48Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=fc4c3c872f44bf425963feba57eb9c3f8ac2d7eb'/>
<id>urn:sha1:fc4c3c872f44bf425963feba57eb9c3f8ac2d7eb</id>
<content type='text'>
Signed-off-by: Chris Mason &lt;clm@fb.com&gt;

Conflicts:
	fs/btrfs/disk-io.c
</content>
</entry>
<entry>
<title>btrfs: cleanup, use kmalloc_array/kcalloc array helpers</title>
<updated>2015-03-03T16:23:58Z</updated>
<author>
<name>David Sterba</name>
</author>
<published>2015-02-20T17:00:26Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=31e818fe7375d60de9953051f7bd1615cebc3681'/>
<id>urn:sha1:31e818fe7375d60de9953051f7bd1615cebc3681</id>
<content type='text'>
Convert kmalloc(nr * size, ..) to kmalloc_array that does additional
overflow checks, the zeroing variant is kcalloc.

Signed-off-by: David Sterba &lt;dsterba@suse.cz&gt;
</content>
</entry>
<entry>
<title>Btrfs: switch to kvfree() helper</title>
<updated>2015-02-16T17:48:43Z</updated>
<author>
<name>Wang Shilong</name>
</author>
<published>2014-11-22T13:13:10Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=f749303bda20392e1d4a10adda84524365afd0e6'/>
<id>urn:sha1:f749303bda20392e1d4a10adda84524365afd0e6</id>
<content type='text'>
A new helper kvfree() in mm/utils.c will do this.

Signed-off-by: Wang Shilong &lt;wangshilong1991@gmail.com&gt;
Signed-off-by: David Sterba &lt;dsterba@suse.cz&gt;
</content>
</entry>
<entry>
<title>Btrfs: Include map_type in raid_bio</title>
<updated>2015-01-22T02:06:49Z</updated>
<author>
<name>Zhao Lei</name>
</author>
<published>2015-01-20T07:11:43Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=10f11900167a83e0c229c4c27e73e720ebd55b5c'/>
<id>urn:sha1:10f11900167a83e0c229c4c27e73e720ebd55b5c</id>
<content type='text'>
Corrent code use many kinds of "clever" way to determine operation
target's raid type, as:
  raid_map != NULL
  or
  raid_map[MAX_NR] == RAID[56]_Q_STRIPE

To make code easy to maintenance, this patch put raid type into
bbio, and we can always get raid type from bbio with a "stupid"
way.

Signed-off-by: Zhao Lei &lt;zhaolei@cn.fujitsu.com&gt;
Signed-off-by: Miao Xie &lt;miaox@cn.fujitsu.com&gt;
Signed-off-by: Chris Mason &lt;clm@fb.com&gt;
</content>
</entry>
<entry>
<title>Btrfs: add ref_count and free function for btrfs_bio</title>
<updated>2015-01-22T02:06:48Z</updated>
<author>
<name>Zhao Lei</name>
</author>
<published>2015-01-20T07:11:34Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=6e9606d2a2dce098c1739fb3cd82a1c34fd73d3a'/>
<id>urn:sha1:6e9606d2a2dce098c1739fb3cd82a1c34fd73d3a</id>
<content type='text'>
1: ref_count is simple than current RBIO_HOLD_BBIO_MAP_BIT flag
   to keep btrfs_bio's memory in raid56 recovery implement.
2: free function for bbio will make code clean and flexible, plus
   forced data type checking in compile.

Changelog v1-&gt;v2:
 Rename following by David Sterba's suggestion:
 put_btrfs_bio() -&gt; btrfs_put_bio()
 get_btrfs_bio() -&gt; btrfs_get_bio()
 bbio-&gt;ref_count -&gt; bbio-&gt;refs

Signed-off-by: Zhao Lei &lt;zhaolei@cn.fujitsu.com&gt;
Signed-off-by: Miao Xie &lt;miaox@cn.fujitsu.com&gt;
Signed-off-by: Chris Mason &lt;clm@fb.com&gt;
</content>
</entry>
<entry>
<title>Btrfs: Make raid_map array be inlined in btrfs_bio structure</title>
<updated>2015-01-22T02:06:47Z</updated>
<author>
<name>Zhao Lei</name>
</author>
<published>2015-01-20T07:11:33Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=8e5cfb55d3f7dc764cd7f4c966d4c2687eaf7569'/>
<id>urn:sha1:8e5cfb55d3f7dc764cd7f4c966d4c2687eaf7569</id>
<content type='text'>
It can make code more simple and clear, we need not care about
free bbio and raid_map together.

Signed-off-by: Miao Xie &lt;miaox@cn.fujitsu.com&gt;
Signed-off-by: Zhao Lei &lt;zhaolei@cn.fujitsu.com&gt;
Signed-off-by: Chris Mason &lt;clm@fb.com&gt;
</content>
</entry>
<entry>
<title>Btrfs, raid56: fix use-after-free problem in the final device replace procedure on raid56</title>
<updated>2014-12-03T02:18:47Z</updated>
<author>
<name>Miao Xie</name>
</author>
<published>2014-11-25T08:39:28Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=4245215d6a8dba1a51c50533b6667919687c0b89'/>
<id>urn:sha1:4245215d6a8dba1a51c50533b6667919687c0b89</id>
<content type='text'>
The commit c404e0dc (Btrfs: fix use-after-free in the finishing
procedure of the device replace) fixed a use-after-free problem
which happened when removing the source device at the end of device
replace, but at that time, btrfs didn't support device replace
on raid56, so we didn't fix the problem on the raid56 profile.
Currently, we implemented device replace for raid56, so we need
kick that problem out before we enable that function for raid56.

The fix method is very simple, we just increase the bio per-cpu
counter before we submit a raid56 io, and decrease the counter
when the raid56 io ends.

Signed-off-by: Miao Xie &lt;miaox@cn.fujitsu.com&gt;
</content>
</entry>
</feed>
