mbox series

[00/20] New ->fiemap infrastructure and ->bmap removal

Message ID 20181030131823.29040-1-cmaiolino@redhat.com (mailing list archive)
Headers show
Series New ->fiemap infrastructure and ->bmap removal | expand

Message

Carlos Maiolino Oct. 30, 2018, 1:18 p.m. UTC
Hi.

This the first version of the complete series with the goal to remove ->bmap
interface completely, in lieu of FIEMAP.

The first 3 patches of this series has been previously posted, and the following
patches is a rework based on a previous RFC, and some suggestions from
Christoph, regarding a new interface for ->fiemap.

I tried to split the patches in a way to avoid a build breakage between any
patch, and also, tried to split individual filesystem changes on individual
patches as possible.

I'd like to raise attention specifically to Btrfs case, which is the only
filesystem who access fiemap_extent_info structure directly, so, it couldn't be
completely reworked (maybe if I had used a different organization of the
patches), As is pointed out in patch description of patch:
"Use FIEMAP for FIBMAP calls", there is room for several code structure
optimizations there, but the functionality is already there, and believe it is
way better to post it now, and discuss the design, than keep working on several
micro improvements when the design isn't decided.

I'd love to hear what you guys have to say, suggestions, comments, etc.

I'd like to also mention that, there are some secondary goals regarding this
patchset, like the ability to detect overflow in FIBMAP for example, which I
didn't forget, but I don't think it adds anything interesting to the overall
design, of the new structure of ->fiemap and removal of ->bmap, but I'll work on
that, once the design is decided and implemented.

I've tested these patches exhaustively on Ext4 and XFS (which are the
filesystems I'm mostly familiar with), and did some testing on Btrfs due its
peculiar usage of fiemap_extent_info directly, and everything is properly
working, including survival of several xfstests runs.

Thanks in advance for any comments.

Carlos Maiolino (20):
  fs: Enable bmap() function to properly return errors
  cachefiles: drop direct usage of ->bmap method.
  ecryptfs: drop direct calls to ->bmap
  iomap: Rename fiemap_ctx to fiemap_iomap_ctx
  fs: Introduce fiemap_ctx data structure
  iomap: Update iomap_fiemap to use new fiemap_ctx structure
  fiemap: Move fiemap flags to fiemap_ctx
  ext4: Remove direct usage of fiemap_extent_info
  f2fs: Remove direct usage of fiemap_extent_info
  Btrfs: Remove direct usage of fiemap_extent_info
  nilfs2: Remove direct usage of fiemap_extent_info
  ocfs2: Remove direct usage of fiemap_extent_info
  iomap: Remove direct usage of fiemap_extent_info
  fiemap: Use fiemap_ctx as fiemap_fill_next_extent argument
  fiemap: Start using new callback from fiemap_ctx
  fibmap: Use bmap instead of ->bmap method in ioctl_fibmap
  fiemap: Get rid of fiemap_extent_info
  Use FIEMAP for FIBMAP calls
  xfs: Get rid of ->bmap
  ext4: Get rid of ->bmap interface

 drivers/md/md-bitmap.c |  16 ++--
 fs/bad_inode.c         |   4 +-
 fs/btrfs/extent_io.c   |  27 +++----
 fs/btrfs/extent_io.h   |   3 +-
 fs/btrfs/inode.c       |   7 +-
 fs/cachefiles/rdwr.c   |  27 +++----
 fs/ecryptfs/mmap.c     |  16 ++--
 fs/ext2/ext2.h         |   3 +-
 fs/ext2/inode.c        |   6 +-
 fs/ext4/ext4.h         |   5 +-
 fs/ext4/extents.c      |  28 +++----
 fs/ext4/inline.c       |   4 +-
 fs/ext4/inode.c        |  73 ------------------
 fs/f2fs/data.c         |  27 +++----
 fs/f2fs/f2fs.h         |   7 +-
 fs/f2fs/inline.c       |   8 +-
 fs/gfs2/inode.c        |   7 +-
 fs/hpfs/file.c         |   4 +-
 fs/inode.c             |  57 ++++++++++----
 fs/ioctl.c             | 164 ++++++++++++++++++++++++++---------------
 fs/iomap.c             |  25 ++++---
 fs/jbd2/journal.c      |  22 ++++--
 fs/nilfs2/inode.c      |  21 +++---
 fs/nilfs2/nilfs.h      |   3 +-
 fs/ocfs2/extent_map.c  |  17 ++---
 fs/ocfs2/extent_map.h  |   3 +-
 fs/overlayfs/inode.c   |   7 +-
 fs/xfs/xfs_aops.c      |  24 ------
 fs/xfs/xfs_iops.c      |  16 ++--
 fs/xfs/xfs_trace.h     |   1 -
 include/linux/fs.h     |  41 ++++++-----
 include/linux/iomap.h  |   5 +-
 mm/page_io.c           |  11 ++-
 33 files changed, 338 insertions(+), 351 deletions(-)