diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c index 5b892500309087b78875918608fa3289578a5a04..b88f6221b48bcda92c66b6e5ebcd1e08ab7924ea 100644 --- a/fs/btrfs/inode.c +++ b/fs/btrfs/inode.c @@ -2240,6 +2240,11 @@ static noinline int relink_extent_backref(struct btrfs_path *path, return PTR_ERR(root); } + if (btrfs_root_readonly(root)) { + srcu_read_unlock(&fs_info->subvol_srcu, index); + return 0; + } + /* step 2: get inode */ key.objectid = backref->inum; key.type = BTRFS_INODE_ITEM_KEY;