mirror of
https://github.com/mii443/qemu.git
synced 2025-08-22 15:15:46 +00:00
qemu-nbd: Use raw block driver for --offset
Instead of implementing qemu-nbd --offset in the NBD code, just put a raw block node with the requested offset on top of the user image and rely on that doing the job. This does not only simplify the nbd_export_new() interface and bring it closer to the set of options that the nbd-server-add QMP command offers, but in fact it also eliminates a potential source for bugs in the NBD code which previously had to add the offset manually in all relevant places. Signed-off-by: Kevin Wolf <kwolf@redhat.com> Reviewed-by: Max Reitz <mreitz@redhat.com> Reviewed-by: Eric Blake <eblake@redhat.com> Message-Id: <20200924152717.287415-7-kwolf@redhat.com> Acked-by: Stefan Hajnoczi <stefanha@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
@ -154,7 +154,6 @@ BlockExport *nbd_export_create(BlockExportOptions *exp_args, Error **errp)
|
||||
BlockDriverState *bs = NULL;
|
||||
BlockBackend *on_eject_blk;
|
||||
NBDExport *exp = NULL;
|
||||
int64_t len;
|
||||
AioContext *aio_context;
|
||||
|
||||
assert(exp_args->type == BLOCK_EXPORT_TYPE_NBD);
|
||||
@ -192,12 +191,6 @@ BlockExport *nbd_export_create(BlockExportOptions *exp_args, Error **errp)
|
||||
|
||||
aio_context = bdrv_get_aio_context(bs);
|
||||
aio_context_acquire(aio_context);
|
||||
len = bdrv_getlength(bs);
|
||||
if (len < 0) {
|
||||
error_setg_errno(errp, -len,
|
||||
"Failed to determine the NBD export's length");
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (!arg->has_writable) {
|
||||
arg->writable = false;
|
||||
@ -206,7 +199,7 @@ BlockExport *nbd_export_create(BlockExportOptions *exp_args, Error **errp)
|
||||
arg->writable = false;
|
||||
}
|
||||
|
||||
exp = nbd_export_new(bs, 0, len, arg->name, arg->description, arg->bitmap,
|
||||
exp = nbd_export_new(bs, arg->name, arg->description, arg->bitmap,
|
||||
!arg->writable, !arg->writable,
|
||||
NULL, false, on_eject_blk, errp);
|
||||
if (!exp) {
|
||||
|
Reference in New Issue
Block a user