Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 65a246c5 authored by Tsutomu Itoh's avatar Tsutomu Itoh Committed by Chris Mason
Browse files

Btrfs: return error code to caller when btrfs_del_item fails



The error code is returned instead of calling BUG_ON when
btrfs_del_item returns the error.

Signed-off-by: default avatarTsutomu Itoh <t-itoh@jp.fujitsu.com>
Signed-off-by: default avatarChris Mason <chris.mason@oracle.com>
parent b0b802d7
Loading
Loading
Loading
Loading
+6 −4
Original line number Original line Diff line number Diff line
@@ -551,10 +551,10 @@ int btrfs_del_csums(struct btrfs_trans_handle *trans,
		ret = btrfs_search_slot(trans, root, &key, path, -1, 1);
		ret = btrfs_search_slot(trans, root, &key, path, -1, 1);
		if (ret > 0) {
		if (ret > 0) {
			if (path->slots[0] == 0)
			if (path->slots[0] == 0)
				goto out;
				break;
			path->slots[0]--;
			path->slots[0]--;
		} else if (ret < 0) {
		} else if (ret < 0) {
			goto out;
			break;
		}
		}


		leaf = path->nodes[0];
		leaf = path->nodes[0];
@@ -579,7 +579,8 @@ int btrfs_del_csums(struct btrfs_trans_handle *trans,
		/* delete the entire item, it is inside our range */
		/* delete the entire item, it is inside our range */
		if (key.offset >= bytenr && csum_end <= end_byte) {
		if (key.offset >= bytenr && csum_end <= end_byte) {
			ret = btrfs_del_item(trans, root, path);
			ret = btrfs_del_item(trans, root, path);
			BUG_ON(ret);
			if (ret)
				goto out;
			if (key.offset == bytenr)
			if (key.offset == bytenr)
				break;
				break;
		} else if (key.offset < bytenr && csum_end > end_byte) {
		} else if (key.offset < bytenr && csum_end > end_byte) {
@@ -633,9 +634,10 @@ int btrfs_del_csums(struct btrfs_trans_handle *trans,
		}
		}
		btrfs_release_path(root, path);
		btrfs_release_path(root, path);
	}
	}
	ret = 0;
out:
out:
	btrfs_free_path(path);
	btrfs_free_path(path);
	return 0;
	return ret;
}
}


int btrfs_csum_file_blocks(struct btrfs_trans_handle *trans,
int btrfs_csum_file_blocks(struct btrfs_trans_handle *trans,
+5 −1
Original line number Original line Diff line number Diff line
@@ -385,7 +385,10 @@ again:
		*sequence = btrfs_root_ref_sequence(leaf, ref);
		*sequence = btrfs_root_ref_sequence(leaf, ref);


		ret = btrfs_del_item(trans, tree_root, path);
		ret = btrfs_del_item(trans, tree_root, path);
		BUG_ON(ret);
		if (ret) {
			err = ret;
			goto out;
		}
	} else
	} else
		err = -ENOENT;
		err = -ENOENT;


@@ -397,6 +400,7 @@ again:
		goto again;
		goto again;
	}
	}


out:
	btrfs_free_path(path);
	btrfs_free_path(path);
	return err;
	return err;
}
}
+7 −3
Original line number Original line Diff line number Diff line
@@ -1050,7 +1050,8 @@ static noinline int fixup_inode_link_counts(struct btrfs_trans_handle *trans,
			break;
			break;


		ret = btrfs_del_item(trans, root, path);
		ret = btrfs_del_item(trans, root, path);
		BUG_ON(ret);
		if (ret)
			goto out;


		btrfs_release_path(root, path);
		btrfs_release_path(root, path);
		inode = read_one_inode(root, key.offset);
		inode = read_one_inode(root, key.offset);
@@ -1068,8 +1069,10 @@ static noinline int fixup_inode_link_counts(struct btrfs_trans_handle *trans,
		 */
		 */
		key.offset = (u64)-1;
		key.offset = (u64)-1;
	}
	}
	ret = 0;
out:
	btrfs_release_path(root, path);
	btrfs_release_path(root, path);
	return 0;
	return ret;
}
}




@@ -2587,7 +2590,8 @@ static int drop_objectid_items(struct btrfs_trans_handle *trans,
			break;
			break;


		ret = btrfs_del_item(trans, log, path);
		ret = btrfs_del_item(trans, log, path);
		BUG_ON(ret);
		if (ret)
			break;
		btrfs_release_path(log, path);
		btrfs_release_path(log, path);
	}
	}
	btrfs_release_path(log, path);
	btrfs_release_path(log, path);
+1 −3
Original line number Original line Diff line number Diff line
@@ -967,7 +967,6 @@ static int btrfs_free_dev_extent(struct btrfs_trans_handle *trans,
	if (device->bytes_used > 0)
	if (device->bytes_used > 0)
		device->bytes_used -= btrfs_dev_extent_length(leaf, extent);
		device->bytes_used -= btrfs_dev_extent_length(leaf, extent);
	ret = btrfs_del_item(trans, root, path);
	ret = btrfs_del_item(trans, root, path);
	BUG_ON(ret);


out:
out:
	btrfs_free_path(path);
	btrfs_free_path(path);
@@ -1770,10 +1769,9 @@ static int btrfs_free_chunk(struct btrfs_trans_handle *trans,
	BUG_ON(ret);
	BUG_ON(ret);


	ret = btrfs_del_item(trans, root, path);
	ret = btrfs_del_item(trans, root, path);
	BUG_ON(ret);


	btrfs_free_path(path);
	btrfs_free_path(path);
	return 0;
	return ret;
}
}


static int btrfs_del_sys_chunk(struct btrfs_root *root, u64 chunk_objectid, u64
static int btrfs_del_sys_chunk(struct btrfs_root *root, u64 chunk_objectid, u64