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-7.0-rc4-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux

Pull btrfs fixes from David Sterba:

- fix logging of new dentries when logging parent directory and there
are conflicting inodes (e.g. deleted directory)

- avoid taking big device lock for zone setup, this is not necessary
during mount

- tune message verbosity when auto-reclaiming zones when low on space

- fix slightly misleading message of root item check

* tag 'for-7.0-rc4-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux:
btrfs: tree-checker: fix misleading root drop_level error message
btrfs: log new dentries when logging parent dir of a conflicting inode
btrfs: don't take device_list_mutex when querying zone info
btrfs: pass 'verbose' parameter to btrfs_relocate_block_group

+12 -4
+1 -1
fs/btrfs/tree-checker.c
··· 1284 1284 } 1285 1285 if (unlikely(btrfs_root_drop_level(&ri) >= BTRFS_MAX_LEVEL)) { 1286 1286 generic_err(leaf, slot, 1287 - "invalid root level, have %u expect [0, %u]", 1287 + "invalid root drop_level, have %u expect [0, %u]", 1288 1288 btrfs_root_drop_level(&ri), BTRFS_MAX_LEVEL - 1); 1289 1289 return -EUCLEAN; 1290 1290 }
+6
fs/btrfs/tree-log.c
··· 6195 6195 struct btrfs_root *root, 6196 6196 struct btrfs_log_ctx *ctx) 6197 6197 { 6198 + const bool orig_log_new_dentries = ctx->log_new_dentries; 6198 6199 int ret = 0; 6199 6200 6200 6201 /* ··· 6257 6256 * dir index key range logged for the directory. So we 6258 6257 * must make sure the deletion is recorded. 6259 6258 */ 6259 + ctx->log_new_dentries = false; 6260 6260 ret = btrfs_log_inode(trans, inode, LOG_INODE_ALL, ctx); 6261 + if (!ret && ctx->log_new_dentries) 6262 + ret = log_new_dir_dentries(trans, inode, ctx); 6263 + 6261 6264 btrfs_add_delayed_iput(inode); 6262 6265 if (ret) 6263 6266 break; ··· 6296 6291 break; 6297 6292 } 6298 6293 6294 + ctx->log_new_dentries = orig_log_new_dentries; 6299 6295 ctx->logging_conflict_inodes = false; 6300 6296 if (ret) 6301 6297 free_conflicting_inodes(ctx);
+1 -1
fs/btrfs/volumes.c
··· 3587 3587 3588 3588 /* step one, relocate all the extents inside this chunk */ 3589 3589 btrfs_scrub_pause(fs_info); 3590 - ret = btrfs_relocate_block_group(fs_info, chunk_offset, true); 3590 + ret = btrfs_relocate_block_group(fs_info, chunk_offset, verbose); 3591 3591 btrfs_scrub_continue(fs_info); 3592 3592 if (ret) { 3593 3593 /*
+4 -2
fs/btrfs/zoned.c
··· 337 337 if (!btrfs_fs_incompat(fs_info, ZONED)) 338 338 return 0; 339 339 340 - mutex_lock(&fs_devices->device_list_mutex); 340 + /* 341 + * No need to take the device_list mutex here, we're still in the mount 342 + * path and devices cannot be added to or removed from the list yet. 343 + */ 341 344 list_for_each_entry(device, &fs_devices->devices, dev_list) { 342 345 /* We can skip reading of zone info for missing devices */ 343 346 if (!device->bdev) ··· 350 347 if (ret) 351 348 break; 352 349 } 353 - mutex_unlock(&fs_devices->device_list_mutex); 354 350 355 351 return ret; 356 352 }