]> Git Repo - linux.git/commitdiff
Merge tag 'for-5.11-rc4-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/kdave...
authorLinus Torvalds <[email protected]>
Wed, 20 Jan 2021 22:15:33 +0000 (14:15 -0800)
committerLinus Torvalds <[email protected]>
Wed, 20 Jan 2021 22:15:33 +0000 (14:15 -0800)
Pull btrfs fixes from David Sterba:
 "A few more one line fixes for various bugs, stable material.

   - fix send when emitting clone operation from the same file and root

   - fix double free on error when cleaning backrefs

   - lockdep fix during relocation

   - handle potential error during reloc when starting transaction

   - skip running delayed refs during commit (leftover from code removal
     in this dev cycle)"

* tag 'for-5.11-rc4-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux:
  btrfs: don't clear ret in btrfs_start_dirty_block_groups
  btrfs: fix lockdep splat in btrfs_recover_relocation
  btrfs: do not double free backref nodes on error
  btrfs: don't get an EINTR during drop_snapshot for reloc
  btrfs: send: fix invalid clone operations when cloning from the same file and root
  btrfs: no need to run delayed refs after commit_fs_roots during commit

1  2 
fs/btrfs/volumes.c

diff --combined fs/btrfs/volumes.c
index b62be84833e9a84654b581bdc287e4ffe6d952f8,0c7f4f6237e8cc883476e3b2b35fffbd357e0464..0a6de859eb2226a2283076659fffe4afd22dd32b
@@@ -935,16 -935,16 +935,16 @@@ static noinline struct btrfs_device *de
                 * make sure it's the same device if the device is mounted
                 */
                if (device->bdev) {
 -                      struct block_device *path_bdev;
 +                      int error;
 +                      dev_t path_dev;
  
 -                      path_bdev = lookup_bdev(path);
 -                      if (IS_ERR(path_bdev)) {
 +                      error = lookup_bdev(path, &path_dev);
 +                      if (error) {
                                mutex_unlock(&fs_devices->device_list_mutex);
 -                              return ERR_CAST(path_bdev);
 +                              return ERR_PTR(error);
                        }
  
 -                      if (device->bdev != path_bdev) {
 -                              bdput(path_bdev);
 +                      if (device->bdev->bd_dev != path_dev) {
                                mutex_unlock(&fs_devices->device_list_mutex);
                                /*
                                 * device->fs_info may not be reliable here, so
                                                  task_pid_nr(current));
                                return ERR_PTR(-EEXIST);
                        }
 -                      bdput(path_bdev);
                        btrfs_info_in_rcu(device->fs_info,
        "devid %llu device path %s changed to %s scanned by %s (%d)",
                                          devid, rcu_str_deref(device->name),
@@@ -4317,6 -4318,8 +4317,8 @@@ int btrfs_recover_balance(struct btrfs_
                btrfs_warn(fs_info,
        "balance: cannot set exclusive op status, resume manually");
  
+       btrfs_release_path(path);
        mutex_lock(&fs_info->balance_mutex);
        BUG_ON(fs_info->balance_ctl);
        spin_lock(&fs_info->balance_lock);
This page took 0.102653 seconds and 4 git commands to generate.