return bdrv_co_getlength(blk_bs(blk));
}
-/* return 0 as number of sectors if no device present or error */
-void coroutine_fn blk_co_get_geometry(BlockBackend *blk,
- uint64_t *nb_sectors_ptr)
+int64_t coroutine_fn blk_co_nb_sectors(BlockBackend *blk)
{
BlockDriverState *bs = blk_bs(blk);
GRAPH_RDLOCK_GUARD();
if (!bs) {
- *nb_sectors_ptr = 0;
+ return -ENOMEDIUM;
} else {
- int64_t nb_sectors = bdrv_co_nb_sectors(bs);
- *nb_sectors_ptr = nb_sectors < 0 ? 0 : nb_sectors;
+ return bdrv_co_nb_sectors(bs);
}
}
-int64_t coroutine_fn blk_co_nb_sectors(BlockBackend *blk)
+/* return 0 as number of sectors if no device present or error */
+void coroutine_fn blk_co_get_geometry(BlockBackend *blk,
+ uint64_t *nb_sectors_ptr)
{
- IO_CODE();
- GRAPH_RDLOCK_GUARD();
-
- if (!blk_co_is_available(blk)) {
- return -ENOMEDIUM;
- }
-
- return bdrv_co_nb_sectors(blk_bs(blk));
+ int64_t ret = blk_co_nb_sectors(blk);
+ *nb_sectors_ptr = ret < 0 ? 0 : ret;
}
BlockAIOCB *blk_aio_preadv(BlockBackend *blk, int64_t offset,