Pull btrfs updates from David Sterba: "There are some new user features and the usual load of invisible enhancements or cleanups. New features: - extend mount options to specify zlib compression level, -o compress=zlib:9 - v2 of ioctl "extent to inode mapping", addressing a usecase where we want to retrieve more but inaccurate results and do the postprocessing in userspace, aiding defragmentation or deduplication tools - populate compression heuristics logic, do data sampling and try to guess compressibility by: looking for repeated patterns, counting unique byte values and distribution, calculating Shannon entropy; this will need more benchmarking and possibly fine tuning, but the base should be good enough - enable indexing for btrfs as lower filesystem in overlayfs - speedup page cache readahead during send on large files Internal enhancements: - more sanity checks of b-tree items when reading them from disk - more EINVAL/EUCLEAN fixups, missing BLK_STS_* conversion, other errno or error handling fixes - remove some homegrown IO-related logic, that's been obsoleted by core block layer changes (batching, plug/unplug, own counters) - add ref-verify, optional debugging feature to verify extent reference accounting - simplify code handling outstanding extents, make it more clear where and how the accounting is done - make delalloc reservations per-inode, simplify the code and make the logic more straightforward - extensive cleanup of delayed refs code Notable fixes: - fix send ioctl on 32bit with 64bit kernel" * 'for-4.15' of git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux: (102 commits) btrfs: Fix bug for misused dev_t when lookup in dev state hash table. Btrfs: heuristic: add Shannon entropy calculation Btrfs: heuristic: add byte core set calculation Btrfs: heuristic: add byte set calculation Btrfs: heuristic: add detection of repeated data patterns Btrfs: heuristic: implement sampling logic Btrfs: heuristic: add bucket and sample counters and other defines Btrfs: compression: separate heuristic/compression workspaces btrfs: move btrfs_truncate_block out of trans handle btrfs: don't call btrfs_start_delalloc_roots in flushoncommit btrfs: track refs in a rb_tree instead of a list btrfs: add a comp_refs() helper btrfs: switch args for comp_*_refs btrfs: make the delalloc block rsv per inode btrfs: add tracepoints for outstanding extents mods Btrfs: rework outstanding_extents btrfs: increase output size for LOGICAL_INO_V2 ioctl btrfs: add a flags argument to LOGICAL_INO and call it LOGICAL_INO_V2 btrfs: add a flag to iterate_inodes_from_logical to find all extent refs for uncompressed extents btrfs: send: remove unused code ...
Showing the changes to include/uapi/linux (2 of 51 files). Show all
Unified · Split
| @@ -609,10 +609,14 @@ struct btrfs_ioctl_ino_path_args { · 608 unmodified lines | |||
| 609 | struct btrfs_ioctl_logical_ino_args { | 609 | struct btrfs_ioctl_logical_ino_args { |
| 610 | __u64 logical; /* in */ | 610 | __u64 logical; /* in */ |
| 611 | __u64 size; /* in */ | 611 | __u64 size; /* in */ |
| 612 | __u64 reserved[4]; | 612 | __u64 reserved[3]; /* must be 0 for now */ |
| 613 | __u64 flags; /* in, v2 only */ | ||
| 613 | /* struct btrfs_data_container *inodes; out */ | 614 | /* struct btrfs_data_container *inodes; out */ |
| 614 | __u64 inodes; | 615 | __u64 inodes; |
| 615 | }; | 616 | }; |
| 617 | /* Return every ref to the extent, not just those containing logical block. | ||
| 618 | * Requires logical == extent bytenr. */ | ||
| 619 | #define BTRFS_LOGICAL_INO_ARGS_IGNORE_OFFSET (1ULL << 0) | ||
| 616 | 620 | ||
| 617 | enum btrfs_dev_stat_values { | 621 | enum btrfs_dev_stat_values { |
| 618 | /* disk I/O failure stats */ | 622 | /* disk I/O failure stats */ |
| @@ -836,5 +840,7 @@ enum btrfs_err_code { · 217 unmodified lines | |||
| 836 | struct btrfs_ioctl_feature_flags[3]) | 840 | struct btrfs_ioctl_feature_flags[3]) |
| 837 | #define BTRFS_IOC_RM_DEV_V2 _IOW(BTRFS_IOCTL_MAGIC, 58, \ | 841 | #define BTRFS_IOC_RM_DEV_V2 _IOW(BTRFS_IOCTL_MAGIC, 58, \ |
| 838 | struct btrfs_ioctl_vol_args_v2) | 842 | struct btrfs_ioctl_vol_args_v2) |
| 843 | #define BTRFS_IOC_LOGICAL_INO_V2 _IOWR(BTRFS_IOCTL_MAGIC, 59, \ | ||
| 844 | struct btrfs_ioctl_logical_ino_args) | ||
| 839 | 845 | ||
| 840 | #endif /* _UAPI_LINUX_BTRFS_H */ | 846 | #endif /* _UAPI_LINUX_BTRFS_H */ |
| @@ -733,6 +733,7 @@ struct btrfs_balance_item { · 732 unmodified lines | |||
| 733 | #define BTRFS_FILE_EXTENT_INLINE 0 | 733 | #define BTRFS_FILE_EXTENT_INLINE 0 |
| 734 | #define BTRFS_FILE_EXTENT_REG 1 | 734 | #define BTRFS_FILE_EXTENT_REG 1 |
| 735 | #define BTRFS_FILE_EXTENT_PREALLOC 2 | 735 | #define BTRFS_FILE_EXTENT_PREALLOC 2 |
| 736 | #define BTRFS_FILE_EXTENT_TYPES 2 | ||
| 736 | 737 | ||
| 737 | struct btrfs_file_extent_item { | 738 | struct btrfs_file_extent_item { |
| 738 | /* | 739 | /* |