return waited;
}
-static int bdrv_check_byte_request(BlockDriverState *bs, int64_t offset,
- size_t size)
+static int bdrv_check_byte_request(int64_t offset, size_t size)
{
if (size > BDRV_REQUEST_MAX_BYTES) {
return -EIO;
}
- if (!bdrv_is_inserted(bs)) {
- return -ENOMEDIUM;
- }
-
if (offset < 0) {
return -EIO;
}
trace_bdrv_co_preadv(bs, offset, bytes, flags);
- ret = bdrv_check_byte_request(bs, offset, bytes);
+ if (!bdrv_is_inserted(bs)) {
+ return -ENOMEDIUM;
+ }
+
+ ret = bdrv_check_byte_request(offset, bytes);
if (ret < 0) {
return ret;
}
trace_bdrv_co_pwritev(child->bs, offset, bytes, flags);
- if (!bs->drv) {
+ if (!bdrv_is_inserted(bs)) {
return -ENOMEDIUM;
}
- ret = bdrv_check_byte_request(bs, offset, bytes);
+ ret = bdrv_check_byte_request(offset, bytes);
if (ret < 0) {
return ret;
}
assert(!(read_flags & BDRV_REQ_NO_FALLBACK));
assert(!(write_flags & BDRV_REQ_NO_FALLBACK));
- if (!dst || !dst->bs) {
+ if (!dst || !dst->bs || !bdrv_is_inserted(dst->bs)) {
return -ENOMEDIUM;
}
- ret = bdrv_check_byte_request(dst->bs, dst_offset, bytes);
+ ret = bdrv_check_byte_request(dst_offset, bytes);
if (ret) {
return ret;
}
return bdrv_co_pwrite_zeroes(dst, dst_offset, bytes, write_flags);
}
- if (!src || !src->bs) {
+ if (!src || !src->bs || !bdrv_is_inserted(src->bs)) {
return -ENOMEDIUM;
}
- ret = bdrv_check_byte_request(src->bs, src_offset, bytes);
+ ret = bdrv_check_byte_request(src_offset, bytes);
if (ret) {
return ret;
}