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(-) -- 2.17.1