Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

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

Pull btrfs fixes from David Sterba:

- fix -Warray-bounds warning, to help external patchset to make it
default treewide

- fix writeable device accounting (syzbot report)

- fix fsync and log replay after a rename and inode eviction

- fix potentially lost error code when submitting multiple bios for
compressed range

* tag 'for-5.14-rc3-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux:
btrfs: calculate number of eb pages properly in csum_tree_block
btrfs: fix rw device counting in __btrfs_free_extra_devids
btrfs: fix lost inode on log replay after mix of fsync, rename and inode eviction
btrfs: mark compressed range uptodate only if all bio succeed

+5 -4
+1 -1
fs/btrfs/compression.c
··· 352 352 btrfs_record_physical_zoned(inode, cb->start, bio); 353 353 btrfs_writepage_endio_finish_ordered(BTRFS_I(inode), NULL, 354 354 cb->start, cb->start + cb->len - 1, 355 - bio->bi_status == BLK_STS_OK); 355 + !cb->errors); 356 356 357 357 end_compressed_writeback(inode, cb); 358 358 /* note, our inode could be gone now */
+1 -1
fs/btrfs/disk-io.c
··· 209 209 static void csum_tree_block(struct extent_buffer *buf, u8 *result) 210 210 { 211 211 struct btrfs_fs_info *fs_info = buf->fs_info; 212 - const int num_pages = fs_info->nodesize >> PAGE_SHIFT; 212 + const int num_pages = num_extent_pages(buf); 213 213 const int first_page_part = min_t(u32, PAGE_SIZE, fs_info->nodesize); 214 214 SHASH_DESC_ON_STACK(shash, fs_info->csum_shash); 215 215 char *kaddr;
+2 -2
fs/btrfs/tree-log.c
··· 6503 6503 * if this inode hasn't been logged and directory we're renaming it 6504 6504 * from hasn't been logged, we don't need to log it 6505 6505 */ 6506 - if (inode->logged_trans < trans->transid && 6507 - (!old_dir || old_dir->logged_trans < trans->transid)) 6506 + if (!inode_logged(trans, inode) && 6507 + (!old_dir || !inode_logged(trans, old_dir))) 6508 6508 return; 6509 6509 6510 6510 /*
+1
fs/btrfs/volumes.c
··· 1078 1078 if (test_bit(BTRFS_DEV_STATE_WRITEABLE, &device->dev_state)) { 1079 1079 list_del_init(&device->dev_alloc_list); 1080 1080 clear_bit(BTRFS_DEV_STATE_WRITEABLE, &device->dev_state); 1081 + fs_devices->rw_devices--; 1081 1082 } 1082 1083 list_del_init(&device->dev_list); 1083 1084 fs_devices->num_devices--;