History

Merge tag 'for-6.15-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux

Pull btrfs updates from David Sterba: "User visible changes: - fall back to buffered write if direct io is done on a file that requires checksums - this avoids a problem with checksum mismatch errors, observed e.g. on virtual images when writes to pages under writeback cause the checksum mismatch reports - this may lead to some performance degradation but currently the recommended setup for VM images is to use the NOCOW file attribute that also disables checksums - fast/realtime zstd levels -15 to -1 - supported by mount options (compress=zstd:-5) and defrag ioctl - improved speed, reduced compression ratio, check the commit for sample measurements - defrag ioctl extended to accept negative compression levels - subpage mode - remove warning when subpage mode is used, the feature is now reasonably complete and tested - in debug mode allow to create 2K b-tree nodes to allow testing subpage on x86_64 with 4K pages too Performance improvements: - in send, better file path caching improves runtime (on sample load by -30%) - on s390x with hardware zlib support prepare the input buffer in a better way to get the best results from the acceleration - minor speed improvement in encoded read, avoid memory allocation in synchronous mode Core: - enable stable writes on inodes, replacing manually waiting for writeback and allowing to skip that on inodes without checksums - add last checks and warnings for out-of-band dirty writes to pages, requiring a fixup ("fixup worker"), this should not be necessary since 5.8 where get_user_page() and pin_user_pages*() prevent this - long history behind that, we'll be happy to remove the whole infrastructure in the near future - more folio API conversions and preparations for large folio support - subpage cleanups and refactoring, split handling of data and metadata to allow future support for large folios - readpage works as block-by-block, no change for normal mode, this is preparation for future subpage updates - block group refcount fixes and hardening - delayed iput fixes - in zoned mode, fix zone activation on filesystem with missing devices Cleanups: - inode parameter cleanups - path auto-freeing updates - code flow simplifications in send - redundant parameter cleanups" * tag 'for-6.15-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux: (164 commits) btrfs: zoned: fix zone finishing with missing devices btrfs: zoned: fix zone activation with missing devices btrfs: remove end_no_trans label from btrfs_log_inode_parent() btrfs: simplify condition for logging new dentries at btrfs_log_inode_parent() btrfs: remove redundant else statement from btrfs_log_inode_parent() btrfs: use memcmp_extent_buffer() at replay_one_extent() btrfs: update outdated comment for overwrite_item() btrfs: use variables to store extent buffer and slot at overwrite_item() btrfs: avoid unnecessary memory allocation and copy at overwrite_item() btrfs: don't clobber ret in btrfs_validate_super() btrfs: prepare btrfs_page_mkwrite() for large folios btrfs: prepare extent_io.c for future large folio support btrfs: prepare btrfs_launcher_folio() for large folios support btrfs: replace PAGE_SIZE with folio_size for subpage.[ch] btrfs: add a size parameter to btrfs_alloc_subpage() btrfs: subpage: make btrfs_is_subpage() check against a folio btrfs: add extra warning if delayed iput is added when it's not allowed btrfs: avoid redundant path slot assignment in btrfs_search_forward() btrfs: remove unnecessary btrfs_key local variable in btrfs_search_forward() btrfs: simplify the return value handling in search_ioctl() ...

Linus Torvalds committed 1 year ago

Commit fd71def2 parents b2e7b0f 35fec1074 files · +2264 −1915Browse files

Showing the changes to include/uapi/linux (1 of 74 files). Show all

Unified · Split

include/uapi/linux/btrfs.h+13−3
@@ -615,7 +615,9 @@ struct btrfs_ioctl_clone_range_args { · 614 unmodified lines
615 */615 */
616#define BTRFS_DEFRAG_RANGE_COMPRESS 1616#define BTRFS_DEFRAG_RANGE_COMPRESS 1
617#define BTRFS_DEFRAG_RANGE_START_IO 2617#define BTRFS_DEFRAG_RANGE_START_IO 2
618#define BTRFS_DEFRAG_RANGE_COMPRESS_LEVEL 4
618#define BTRFS_DEFRAG_RANGE_FLAGS_SUPP (BTRFS_DEFRAG_RANGE_COMPRESS | \619#define BTRFS_DEFRAG_RANGE_FLAGS_SUPP (BTRFS_DEFRAG_RANGE_COMPRESS | \
620 BTRFS_DEFRAG_RANGE_COMPRESS_LEVEL | \
619 BTRFS_DEFRAG_RANGE_START_IO)621 BTRFS_DEFRAG_RANGE_START_IO)
620 622
621struct btrfs_ioctl_defrag_range_args {623struct btrfs_ioctl_defrag_range_args {
@@ -640,10 +642,18 @@ struct btrfs_ioctl_defrag_range_args { · 18 unmodified lines
640 642
641 /*643 /*
642 * which compression method to use if turning on compression644 * which compression method to use if turning on compression
643 * for this defrag operation. If unspecified, zlib will645 * for this defrag operation. If unspecified, zlib will be
644 * be used646 * used. If compression level is also being specified, set the
647 * BTRFS_DEFRAG_RANGE_COMPRESS_LEVEL flag and fill the compress
648 * member structure instead of the compress_type field.
645 */649 */
646 __u32 compress_type;650 union {
651 __u32 compress_type;
652 struct {
653 __u8 type;
654 __s8 level;
655 } compress;
656 };
647 657
648 /* spare for later */658 /* spare for later */
649 __u32 unused[4];659 __u32 unused[4];