mbox series

[U-BOOT,v2,00/30] fs: btrfs: Re-implement btrfs support using the more widely used extent buffer base code

Message ID 20200525063257.46757-1-wqu@suse.com
Headers show
Series fs: btrfs: Re-implement btrfs support using the more widely used extent buffer base code | expand

Message

Qu Wenruo May 25, 2020, 6:32 a.m. UTC
The branch can be fetched from github:
https://github.com/adam900710/u-boot/tree/btrfs_rebuild

The current btrfs code in U-boot is using a creative way to read on-disk
data.
It's pretty simple, involving the least amount of code, but pretty
different from btrfs-progs nor kernel, making it pretty hard to sync
code between different projects.

This big patchset will rework the btrfs support, to use code mostly from
btrfs-progs, thus all existing btrfs developers will feel at home.

During the rework, the following new features are added:
- More hash algorithm support
  SHA256 and XXHASH support are added.
  BLAKE2 needs more backport, will happen in a separate patchset.

- The ability to read degraded RAID1
  Although we still only support one device btrfs, the new code base
  can choose from different copies already.
  As long as new device scan interface is provided, multi-device support
  is pretty simple.

- More correct handling of compressed extents with offset
  For compressed extent with offset, we should read the whole compressed
  extent, decompress them, then copy the referred part.

There are some more features incoming, with the new code base it would
be much easier to implement:
- Data checksum support
  The check would happen in read_extent_data(), btrfs-progs has the
  needed facility to locate data csum.

- BLAKE2 support
  Need BLAKE2 library cross ported.
  For btrfs it's just several lines of modification.

- Multi-device support along wit degraded RAID support
  We only need an interface to scan one device without opening it.
  The infrastructure is already provided in this patchset.

These new features would be submitted after the patchset get merged,
since the patchset is already large, I don't want to make it more scary.

Although this patchset look horribly large, most of them are code copy
from btrfs-progs.
E.g extent-cache.[ch], rbtree-utils.[ch], btrfs_btree.h.
And ctree.h has over 1000 lines copied just for various accessors.

While for disk-io.[ch] and volumes-io.[ch], they have some small
modifications to adapt the interface of U-boot.
E.g. btrfs_device::fd is replace with blkdev_desc and disk_partition_t.

The new code for U-boot are related to the following functions:
- btrfs_readlink()
- btrfs_lookup_path()
- btrfs_read_extent_inline()
- btrfs_read_extent_reg()
- lookup_data_extent()
- btrfs_file_read()
- btrfs_list_subvols()

Thus only the following 5 patches need extra review attention:
- Patch 0017
- Patch 0019
- Patch 0023
- Patch 0024
- Patch 0025~0028

Changelog:
v2:
- Implement btrfs_list_subvols()
  In v1 it's completely removed thus would cause problem if btrfsolume
  command is compiled in.

- Rebased to latest master
  Only minor conflicts due to header changes.

- Allow next_legnth() to return value > BTRFS_NAME_LEN

Qu Wenruo (30):
  fs: btrfs: Sync btrfs_btree.h from kernel
  fs: btrfs: Add More checksum algorithm support to btrfs
  fs: btrfs: Cross-port btrfs_read_dev_super() from btrfs-progs
  fs: btrfs: Cross-port rbtree-utils from btrfs-progs
  fs: btrfs: Cross-port extent-cache.[ch] from btrfs-progs
  fs: btrfs: Cross-port extent-io.[ch] from btrfs-progs
  fs: btrfs: Cross port structure accessor into ctree.h
  fs: btrfs: Cross port volumes.[ch] from btrfs-progs
  fs: btrfs: Crossport read_tree_block() from btrfs-progs
  fs: btrfs: Rename struct btrfs_path to struct __btrfs_path
  fs: btrfs: Rename btrfs_root to __btrfs_root
  fs: btrfs: Cross port struct btrfs_root to ctree.h
  fs: btrfs: Crossport btrfs_search_slot() from btrfs-progs
  fs: btrfs: Crossport btrfs_read_sys_array() and
    btrfs_read_chunk_tree()
  fs: btrfs: Crossport open_ctree_fs_info()
  fs: btrfs: Rename path resolve related functions to avoid name
    conflicts
  fs: btrfs: Use btrfs_readlink() to implement __btrfs_readlink()
  fs: btrfs: inode: Allow next_length() to return value > BTRFS_NAME_LEN
  fs: btrfs: Implement btrfs_lookup_path()
  fs: btrfs: Use btrfs_iter_dir() to replace btrfs_readdir()
  fs: btrfs: Use btrfs_lookup_path() to implement btrfs_exists() and
    btrfs_size()
  fs: btrfs: Rename btrfs_file_read() and its callees to avoid name
    conflicts
  fs: btrfs: Introduce btrfs_read_extent_inline() and
    btrfs_read_extent_reg()
  fs: btrfs: Introduce lookup_data_extent() for later use
  fs: btrfs: Implement btrfs_file_read()
  fs: btrfs: Introduce function to reolve path in one subvolume
  fs: btrfs: Introduce function to resolve the path of one subvolume
  fs: btrfs: Imeplement btrfs_list_subvols() using new infrastructure
  fs: btrfs: Cleanup the old implementation
  MAINTAINERS: Add btrfs mail list

 MAINTAINERS                         |    1 +
 fs/btrfs/Makefile                   |    5 +-
 fs/btrfs/btrfs.c                    |  319 +++---
 fs/btrfs/btrfs.h                    |   67 +-
 fs/btrfs/btrfs_tree.h               |  766 --------------
 fs/btrfs/chunk-map.c                |  178 ----
 fs/btrfs/common/rbtree-utils.c      |   83 ++
 fs/btrfs/common/rbtree-utils.h      |   53 +
 fs/btrfs/compat.h                   |   88 ++
 fs/btrfs/compression.c              |    2 +-
 fs/btrfs/crypto/hash.c              |   55 +
 fs/btrfs/crypto/hash.h              |   17 +
 fs/btrfs/ctree.c                    |  866 ++++++++++++----
 fs/btrfs/ctree.h                    | 1453 ++++++++++++++++++++++-----
 fs/btrfs/dir-item.c                 |  192 ++--
 fs/btrfs/disk-io.c                  | 1063 ++++++++++++++++++++
 fs/btrfs/disk-io.h                  |   50 +
 fs/btrfs/extent-cache.c             |  318 ++++++
 fs/btrfs/extent-cache.h             |  104 ++
 fs/btrfs/extent-io.c                |  848 ++++++++++++++--
 fs/btrfs/extent-io.h                |  164 +++
 fs/btrfs/hash.c                     |   38 -
 fs/btrfs/inode.c                    |  892 +++++++++++-----
 fs/btrfs/kernel-shared/btrfs_tree.h | 1333 ++++++++++++++++++++++++
 fs/btrfs/root-tree.c                |   47 +
 fs/btrfs/root.c                     |   92 --
 fs/btrfs/subvolume.c                |  310 ++++--
 fs/btrfs/super.c                    |  257 -----
 fs/btrfs/volumes.c                  | 1173 +++++++++++++++++++++
 fs/btrfs/volumes.h                  |  204 ++++
 30 files changed, 8537 insertions(+), 2501 deletions(-)
 delete mode 100644 fs/btrfs/btrfs_tree.h
 delete mode 100644 fs/btrfs/chunk-map.c
 create mode 100644 fs/btrfs/common/rbtree-utils.c
 create mode 100644 fs/btrfs/common/rbtree-utils.h
 create mode 100644 fs/btrfs/compat.h
 create mode 100644 fs/btrfs/crypto/hash.c
 create mode 100644 fs/btrfs/crypto/hash.h
 create mode 100644 fs/btrfs/disk-io.c
 create mode 100644 fs/btrfs/disk-io.h
 create mode 100644 fs/btrfs/extent-cache.c
 create mode 100644 fs/btrfs/extent-cache.h
 create mode 100644 fs/btrfs/extent-io.h
 delete mode 100644 fs/btrfs/hash.c
 create mode 100644 fs/btrfs/kernel-shared/btrfs_tree.h
 create mode 100644 fs/btrfs/root-tree.c
 delete mode 100644 fs/btrfs/root.c
 delete mode 100644 fs/btrfs/super.c
 create mode 100644 fs/btrfs/volumes.c
 create mode 100644 fs/btrfs/volumes.h

Comments

Qu Wenruo June 23, 2020, 12:50 a.m. UTC | #1
Gentle ping?

Any updates?
Hopes this won't block the incoming new features too long.

Thanks,
Qu

On 2020/5/25 下午2:32, Qu Wenruo wrote:
> The branch can be fetched from github:
> https://github.com/adam900710/u-boot/tree/btrfs_rebuild
> 
> The current btrfs code in U-boot is using a creative way to read on-disk
> data.
> It's pretty simple, involving the least amount of code, but pretty
> different from btrfs-progs nor kernel, making it pretty hard to sync
> code between different projects.
> 
> This big patchset will rework the btrfs support, to use code mostly from
> btrfs-progs, thus all existing btrfs developers will feel at home.
> 
> During the rework, the following new features are added:
> - More hash algorithm support
>   SHA256 and XXHASH support are added.
>   BLAKE2 needs more backport, will happen in a separate patchset.
> 
> - The ability to read degraded RAID1
>   Although we still only support one device btrfs, the new code base
>   can choose from different copies already.
>   As long as new device scan interface is provided, multi-device support
>   is pretty simple.
> 
> - More correct handling of compressed extents with offset
>   For compressed extent with offset, we should read the whole compressed
>   extent, decompress them, then copy the referred part.
> 
> There are some more features incoming, with the new code base it would
> be much easier to implement:
> - Data checksum support
>   The check would happen in read_extent_data(), btrfs-progs has the
>   needed facility to locate data csum.
> 
> - BLAKE2 support
>   Need BLAKE2 library cross ported.
>   For btrfs it's just several lines of modification.
> 
> - Multi-device support along wit degraded RAID support
>   We only need an interface to scan one device without opening it.
>   The infrastructure is already provided in this patchset.
> 
> These new features would be submitted after the patchset get merged,
> since the patchset is already large, I don't want to make it more scary.
> 
> Although this patchset look horribly large, most of them are code copy
> from btrfs-progs.
> E.g extent-cache.[ch], rbtree-utils.[ch], btrfs_btree.h.
> And ctree.h has over 1000 lines copied just for various accessors.
> 
> While for disk-io.[ch] and volumes-io.[ch], they have some small
> modifications to adapt the interface of U-boot.
> E.g. btrfs_device::fd is replace with blkdev_desc and disk_partition_t.
> 
> The new code for U-boot are related to the following functions:
> - btrfs_readlink()
> - btrfs_lookup_path()
> - btrfs_read_extent_inline()
> - btrfs_read_extent_reg()
> - lookup_data_extent()
> - btrfs_file_read()
> - btrfs_list_subvols()
> 
> Thus only the following 5 patches need extra review attention:
> - Patch 0017
> - Patch 0019
> - Patch 0023
> - Patch 0024
> - Patch 0025~0028
> 
> Changelog:
> v2:
> - Implement btrfs_list_subvols()
>   In v1 it's completely removed thus would cause problem if btrfsolume
>   command is compiled in.
> 
> - Rebased to latest master
>   Only minor conflicts due to header changes.
> 
> - Allow next_legnth() to return value > BTRFS_NAME_LEN
> 
> Qu Wenruo (30):
>   fs: btrfs: Sync btrfs_btree.h from kernel
>   fs: btrfs: Add More checksum algorithm support to btrfs
>   fs: btrfs: Cross-port btrfs_read_dev_super() from btrfs-progs
>   fs: btrfs: Cross-port rbtree-utils from btrfs-progs
>   fs: btrfs: Cross-port extent-cache.[ch] from btrfs-progs
>   fs: btrfs: Cross-port extent-io.[ch] from btrfs-progs
>   fs: btrfs: Cross port structure accessor into ctree.h
>   fs: btrfs: Cross port volumes.[ch] from btrfs-progs
>   fs: btrfs: Crossport read_tree_block() from btrfs-progs
>   fs: btrfs: Rename struct btrfs_path to struct __btrfs_path
>   fs: btrfs: Rename btrfs_root to __btrfs_root
>   fs: btrfs: Cross port struct btrfs_root to ctree.h
>   fs: btrfs: Crossport btrfs_search_slot() from btrfs-progs
>   fs: btrfs: Crossport btrfs_read_sys_array() and
>     btrfs_read_chunk_tree()
>   fs: btrfs: Crossport open_ctree_fs_info()
>   fs: btrfs: Rename path resolve related functions to avoid name
>     conflicts
>   fs: btrfs: Use btrfs_readlink() to implement __btrfs_readlink()
>   fs: btrfs: inode: Allow next_length() to return value > BTRFS_NAME_LEN
>   fs: btrfs: Implement btrfs_lookup_path()
>   fs: btrfs: Use btrfs_iter_dir() to replace btrfs_readdir()
>   fs: btrfs: Use btrfs_lookup_path() to implement btrfs_exists() and
>     btrfs_size()
>   fs: btrfs: Rename btrfs_file_read() and its callees to avoid name
>     conflicts
>   fs: btrfs: Introduce btrfs_read_extent_inline() and
>     btrfs_read_extent_reg()
>   fs: btrfs: Introduce lookup_data_extent() for later use
>   fs: btrfs: Implement btrfs_file_read()
>   fs: btrfs: Introduce function to reolve path in one subvolume
>   fs: btrfs: Introduce function to resolve the path of one subvolume
>   fs: btrfs: Imeplement btrfs_list_subvols() using new infrastructure
>   fs: btrfs: Cleanup the old implementation
>   MAINTAINERS: Add btrfs mail list
> 
>  MAINTAINERS                         |    1 +
>  fs/btrfs/Makefile                   |    5 +-
>  fs/btrfs/btrfs.c                    |  319 +++---
>  fs/btrfs/btrfs.h                    |   67 +-
>  fs/btrfs/btrfs_tree.h               |  766 --------------
>  fs/btrfs/chunk-map.c                |  178 ----
>  fs/btrfs/common/rbtree-utils.c      |   83 ++
>  fs/btrfs/common/rbtree-utils.h      |   53 +
>  fs/btrfs/compat.h                   |   88 ++
>  fs/btrfs/compression.c              |    2 +-
>  fs/btrfs/crypto/hash.c              |   55 +
>  fs/btrfs/crypto/hash.h              |   17 +
>  fs/btrfs/ctree.c                    |  866 ++++++++++++----
>  fs/btrfs/ctree.h                    | 1453 ++++++++++++++++++++++-----
>  fs/btrfs/dir-item.c                 |  192 ++--
>  fs/btrfs/disk-io.c                  | 1063 ++++++++++++++++++++
>  fs/btrfs/disk-io.h                  |   50 +
>  fs/btrfs/extent-cache.c             |  318 ++++++
>  fs/btrfs/extent-cache.h             |  104 ++
>  fs/btrfs/extent-io.c                |  848 ++++++++++++++--
>  fs/btrfs/extent-io.h                |  164 +++
>  fs/btrfs/hash.c                     |   38 -
>  fs/btrfs/inode.c                    |  892 +++++++++++-----
>  fs/btrfs/kernel-shared/btrfs_tree.h | 1333 ++++++++++++++++++++++++
>  fs/btrfs/root-tree.c                |   47 +
>  fs/btrfs/root.c                     |   92 --
>  fs/btrfs/subvolume.c                |  310 ++++--
>  fs/btrfs/super.c                    |  257 -----
>  fs/btrfs/volumes.c                  | 1173 +++++++++++++++++++++
>  fs/btrfs/volumes.h                  |  204 ++++
>  30 files changed, 8537 insertions(+), 2501 deletions(-)
>  delete mode 100644 fs/btrfs/btrfs_tree.h
>  delete mode 100644 fs/btrfs/chunk-map.c
>  create mode 100644 fs/btrfs/common/rbtree-utils.c
>  create mode 100644 fs/btrfs/common/rbtree-utils.h
>  create mode 100644 fs/btrfs/compat.h
>  create mode 100644 fs/btrfs/crypto/hash.c
>  create mode 100644 fs/btrfs/crypto/hash.h
>  create mode 100644 fs/btrfs/disk-io.c
>  create mode 100644 fs/btrfs/disk-io.h
>  create mode 100644 fs/btrfs/extent-cache.c
>  create mode 100644 fs/btrfs/extent-cache.h
>  create mode 100644 fs/btrfs/extent-io.h
>  delete mode 100644 fs/btrfs/hash.c
>  create mode 100644 fs/btrfs/kernel-shared/btrfs_tree.h
>  create mode 100644 fs/btrfs/root-tree.c
>  delete mode 100644 fs/btrfs/root.c
>  delete mode 100644 fs/btrfs/super.c
>  create mode 100644 fs/btrfs/volumes.c
>  create mode 100644 fs/btrfs/volumes.h
>
Marek Behún June 23, 2020, 3:05 p.m. UTC | #2
Hi Qu,

when applying whole series, there are several warning spewed by git:
trailing whitespaces, new lines at EOF, spaces before tab in indent.
It is possible that this is because the code is copypasted from
btrfs-progs and this issues come from there.

Also patches 26 and 27 have almost same subject line, and one contains
a typo (reolve instead of resolve).

Sometimes in commit messages you use the work "cross-port", sometimes
it is "crossport", sometimes "cross port".

I am going to do a bigger test on this series this week, and if the
new code works correctly on all tests, I shall resend your patches with
some changes to the commit messages, but I will keep you as author of
the commits, and I shall add my Reviewed-by.

Marek


On Tue, 23 Jun 2020 08:50:57 +0800
Qu Wenruo <wqu@suse.com> wrote:

> Gentle ping?
> 
> Any updates?
> Hopes this won't block the incoming new features too long.
> 
> Thanks,
> Qu
> 
> On 2020/5/25 下午2:32, Qu Wenruo wrote:
> > The branch can be fetched from github:
> > https://github.com/adam900710/u-boot/tree/btrfs_rebuild
> > 
> > The current btrfs code in U-boot is using a creative way to read
> > on-disk data.
> > It's pretty simple, involving the least amount of code, but pretty
> > different from btrfs-progs nor kernel, making it pretty hard to sync
> > code between different projects.
> > 
> > This big patchset will rework the btrfs support, to use code mostly
> > from btrfs-progs, thus all existing btrfs developers will feel at
> > home.
> > 
> > During the rework, the following new features are added:
> > - More hash algorithm support
> >   SHA256 and XXHASH support are added.
> >   BLAKE2 needs more backport, will happen in a separate patchset.
> > 
> > - The ability to read degraded RAID1
> >   Although we still only support one device btrfs, the new code base
> >   can choose from different copies already.
> >   As long as new device scan interface is provided, multi-device
> > support is pretty simple.
> > 
> > - More correct handling of compressed extents with offset
> >   For compressed extent with offset, we should read the whole
> > compressed extent, decompress them, then copy the referred part.
> > 
> > There are some more features incoming, with the new code base it
> > would be much easier to implement:
> > - Data checksum support
> >   The check would happen in read_extent_data(), btrfs-progs has the
> >   needed facility to locate data csum.
> > 
> > - BLAKE2 support
> >   Need BLAKE2 library cross ported.
> >   For btrfs it's just several lines of modification.
> > 
> > - Multi-device support along wit degraded RAID support
> >   We only need an interface to scan one device without opening it.
> >   The infrastructure is already provided in this patchset.
> > 
> > These new features would be submitted after the patchset get merged,
> > since the patchset is already large, I don't want to make it more
> > scary.
> > 
> > Although this patchset look horribly large, most of them are code
> > copy from btrfs-progs.
> > E.g extent-cache.[ch], rbtree-utils.[ch], btrfs_btree.h.
> > And ctree.h has over 1000 lines copied just for various accessors.
> > 
> > While for disk-io.[ch] and volumes-io.[ch], they have some small
> > modifications to adapt the interface of U-boot.
> > E.g. btrfs_device::fd is replace with blkdev_desc and
> > disk_partition_t.
> > 
> > The new code for U-boot are related to the following functions:
> > - btrfs_readlink()
> > - btrfs_lookup_path()
> > - btrfs_read_extent_inline()
> > - btrfs_read_extent_reg()
> > - lookup_data_extent()
> > - btrfs_file_read()
> > - btrfs_list_subvols()
> > 
> > Thus only the following 5 patches need extra review attention:
> > - Patch 0017
> > - Patch 0019
> > - Patch 0023
> > - Patch 0024
> > - Patch 0025~0028
> > 
> > Changelog:
> > v2:
> > - Implement btrfs_list_subvols()
> >   In v1 it's completely removed thus would cause problem if
> > btrfsolume command is compiled in.
> > 
> > - Rebased to latest master
> >   Only minor conflicts due to header changes.
> > 
> > - Allow next_legnth() to return value > BTRFS_NAME_LEN
> > 
> > Qu Wenruo (30):
> >   fs: btrfs: Sync btrfs_btree.h from kernel
> >   fs: btrfs: Add More checksum algorithm support to btrfs
> >   fs: btrfs: Cross-port btrfs_read_dev_super() from btrfs-progs
> >   fs: btrfs: Cross-port rbtree-utils from btrfs-progs
> >   fs: btrfs: Cross-port extent-cache.[ch] from btrfs-progs
> >   fs: btrfs: Cross-port extent-io.[ch] from btrfs-progs
> >   fs: btrfs: Cross port structure accessor into ctree.h
> >   fs: btrfs: Cross port volumes.[ch] from btrfs-progs
> >   fs: btrfs: Crossport read_tree_block() from btrfs-progs
> >   fs: btrfs: Rename struct btrfs_path to struct __btrfs_path
> >   fs: btrfs: Rename btrfs_root to __btrfs_root
> >   fs: btrfs: Cross port struct btrfs_root to ctree.h
> >   fs: btrfs: Crossport btrfs_search_slot() from btrfs-progs
> >   fs: btrfs: Crossport btrfs_read_sys_array() and
> >     btrfs_read_chunk_tree()
> >   fs: btrfs: Crossport open_ctree_fs_info()
> >   fs: btrfs: Rename path resolve related functions to avoid name
> >     conflicts
> >   fs: btrfs: Use btrfs_readlink() to implement __btrfs_readlink()
> >   fs: btrfs: inode: Allow next_length() to return value >
> > BTRFS_NAME_LEN fs: btrfs: Implement btrfs_lookup_path()
> >   fs: btrfs: Use btrfs_iter_dir() to replace btrfs_readdir()
> >   fs: btrfs: Use btrfs_lookup_path() to implement btrfs_exists() and
> >     btrfs_size()
> >   fs: btrfs: Rename btrfs_file_read() and its callees to avoid name
> >     conflicts
> >   fs: btrfs: Introduce btrfs_read_extent_inline() and
> >     btrfs_read_extent_reg()
> >   fs: btrfs: Introduce lookup_data_extent() for later use
> >   fs: btrfs: Implement btrfs_file_read()
> >   fs: btrfs: Introduce function to reolve path in one subvolume
> >   fs: btrfs: Introduce function to resolve the path of one subvolume
> >   fs: btrfs: Imeplement btrfs_list_subvols() using new
> > infrastructure fs: btrfs: Cleanup the old implementation
> >   MAINTAINERS: Add btrfs mail list
> > 
> >  MAINTAINERS                         |    1 +
> >  fs/btrfs/Makefile                   |    5 +-
> >  fs/btrfs/btrfs.c                    |  319 +++---
> >  fs/btrfs/btrfs.h                    |   67 +-
> >  fs/btrfs/btrfs_tree.h               |  766 --------------
> >  fs/btrfs/chunk-map.c                |  178 ----
> >  fs/btrfs/common/rbtree-utils.c      |   83 ++
> >  fs/btrfs/common/rbtree-utils.h      |   53 +
> >  fs/btrfs/compat.h                   |   88 ++
> >  fs/btrfs/compression.c              |    2 +-
> >  fs/btrfs/crypto/hash.c              |   55 +
> >  fs/btrfs/crypto/hash.h              |   17 +
> >  fs/btrfs/ctree.c                    |  866 ++++++++++++----
> >  fs/btrfs/ctree.h                    | 1453
> > ++++++++++++++++++++++----- fs/btrfs/dir-item.c                 |
> > 192 ++-- fs/btrfs/disk-io.c                  | 1063
> > ++++++++++++++++++++ fs/btrfs/disk-io.h                  |   50 +
> >  fs/btrfs/extent-cache.c             |  318 ++++++
> >  fs/btrfs/extent-cache.h             |  104 ++
> >  fs/btrfs/extent-io.c                |  848 ++++++++++++++--
> >  fs/btrfs/extent-io.h                |  164 +++
> >  fs/btrfs/hash.c                     |   38 -
> >  fs/btrfs/inode.c                    |  892 +++++++++++-----
> >  fs/btrfs/kernel-shared/btrfs_tree.h | 1333 ++++++++++++++++++++++++
> >  fs/btrfs/root-tree.c                |   47 +
> >  fs/btrfs/root.c                     |   92 --
> >  fs/btrfs/subvolume.c                |  310 ++++--
> >  fs/btrfs/super.c                    |  257 -----
> >  fs/btrfs/volumes.c                  | 1173 +++++++++++++++++++++
> >  fs/btrfs/volumes.h                  |  204 ++++
> >  30 files changed, 8537 insertions(+), 2501 deletions(-)
> >  delete mode 100644 fs/btrfs/btrfs_tree.h
> >  delete mode 100644 fs/btrfs/chunk-map.c
> >  create mode 100644 fs/btrfs/common/rbtree-utils.c
> >  create mode 100644 fs/btrfs/common/rbtree-utils.h
> >  create mode 100644 fs/btrfs/compat.h
> >  create mode 100644 fs/btrfs/crypto/hash.c
> >  create mode 100644 fs/btrfs/crypto/hash.h
> >  create mode 100644 fs/btrfs/disk-io.c
> >  create mode 100644 fs/btrfs/disk-io.h
> >  create mode 100644 fs/btrfs/extent-cache.c
> >  create mode 100644 fs/btrfs/extent-cache.h
> >  create mode 100644 fs/btrfs/extent-io.h
> >  delete mode 100644 fs/btrfs/hash.c
> >  create mode 100644 fs/btrfs/kernel-shared/btrfs_tree.h
> >  create mode 100644 fs/btrfs/root-tree.c
> >  delete mode 100644 fs/btrfs/root.c
> >  delete mode 100644 fs/btrfs/super.c
> >  create mode 100644 fs/btrfs/volumes.c
> >  create mode 100644 fs/btrfs/volumes.h
> >