btrfs: move ordered_extent internal sanity checks into btrfs_split_ordered_extent
Move the three checks that are about ordered extent internal sanity checking into btrfs_split_ordered_extent instead of doing them in the higher level btrfs_extract_ordered_extent routine. Reviewed-by: Josef Bacik <josef@toxicpanda.com> Tested-by: Johannes Thumshirn <johannes.thumshirn@wdc.com> Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: David Sterba <dsterba@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
parent
53f2c20687
commit
e44ca71cfe
|
@ -2646,18 +2646,6 @@ blk_status_t btrfs_extract_ordered_extent(struct btrfs_bio *bbio)
|
|||
if (ordered->disk_num_bytes == len)
|
||||
goto out;
|
||||
|
||||
/* We cannot split once end_bio'd ordered extent */
|
||||
if (WARN_ON_ONCE(ordered->bytes_left != ordered->disk_num_bytes)) {
|
||||
ret = -EINVAL;
|
||||
goto out;
|
||||
}
|
||||
|
||||
/* We cannot split a compressed ordered extent */
|
||||
if (WARN_ON_ONCE(ordered->disk_num_bytes != ordered->num_bytes)) {
|
||||
ret = -EINVAL;
|
||||
goto out;
|
||||
}
|
||||
|
||||
ordered_end = ordered->disk_bytenr + ordered->disk_num_bytes;
|
||||
/* bio must be in one ordered extent */
|
||||
if (WARN_ON_ONCE(start < ordered->disk_bytenr || end > ordered_end)) {
|
||||
|
@ -2665,12 +2653,6 @@ blk_status_t btrfs_extract_ordered_extent(struct btrfs_bio *bbio)
|
|||
goto out;
|
||||
}
|
||||
|
||||
/* Checksum list should be empty */
|
||||
if (WARN_ON_ONCE(!list_empty(&ordered->list))) {
|
||||
ret = -EINVAL;
|
||||
goto out;
|
||||
}
|
||||
|
||||
file_len = ordered->num_bytes;
|
||||
pre = start - ordered->disk_bytenr;
|
||||
post = ordered_end - end;
|
||||
|
|
|
@ -1149,6 +1149,16 @@ int btrfs_split_ordered_extent(struct btrfs_ordered_extent *ordered, u64 pre,
|
|||
|
||||
trace_btrfs_ordered_extent_split(BTRFS_I(inode), ordered);
|
||||
|
||||
/* We cannot split once ordered extent is past end_bio. */
|
||||
if (WARN_ON_ONCE(ordered->bytes_left != ordered->disk_num_bytes))
|
||||
return -EINVAL;
|
||||
/* We cannot split a compressed ordered extent. */
|
||||
if (WARN_ON_ONCE(ordered->disk_num_bytes != ordered->num_bytes))
|
||||
return -EINVAL;
|
||||
/* Checksum list should be empty. */
|
||||
if (WARN_ON_ONCE(!list_empty(&ordered->list)))
|
||||
return -EINVAL;
|
||||
|
||||
spin_lock_irq(&tree->lock);
|
||||
/* Remove from tree once */
|
||||
node = &ordered->rb_node;
|
||||
|
|
Loading…
Reference in New Issue