file-posix: Switch to .bdrv_co_ioctl
No real reason to keep using the callback based mechanism here when the rest of the file-posix driver is coroutine based. Changing it brings ioctls more in line with how other request types work. Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
+9
-12
@@ -48,24 +48,21 @@ static int pr_manager_worker(void *opaque)
|
||||
}
|
||||
|
||||
|
||||
BlockAIOCB *pr_manager_execute(PRManager *pr_mgr,
|
||||
AioContext *ctx, int fd,
|
||||
struct sg_io_hdr *hdr,
|
||||
BlockCompletionFunc *complete,
|
||||
void *opaque)
|
||||
int coroutine_fn pr_manager_execute(PRManager *pr_mgr, AioContext *ctx, int fd,
|
||||
struct sg_io_hdr *hdr)
|
||||
{
|
||||
PRManagerData *data = g_new(PRManagerData, 1);
|
||||
ThreadPool *pool = aio_get_thread_pool(ctx);
|
||||
PRManagerData data = {
|
||||
.pr_mgr = pr_mgr,
|
||||
.fd = fd,
|
||||
.hdr = hdr,
|
||||
};
|
||||
|
||||
trace_pr_manager_execute(fd, hdr->cmdp[0], hdr->cmdp[1], opaque);
|
||||
data->pr_mgr = pr_mgr;
|
||||
data->fd = fd;
|
||||
data->hdr = hdr;
|
||||
trace_pr_manager_execute(fd, hdr->cmdp[0], hdr->cmdp[1]);
|
||||
|
||||
/* The matching object_unref is in pr_manager_worker. */
|
||||
object_ref(OBJECT(pr_mgr));
|
||||
return thread_pool_submit_aio(pool, pr_manager_worker,
|
||||
data, complete, opaque);
|
||||
return thread_pool_submit_co(pool, pr_manager_worker, &data);
|
||||
}
|
||||
|
||||
bool pr_manager_is_connected(PRManager *pr_mgr)
|
||||
|
||||
+1
-1
@@ -1,3 +1,3 @@
|
||||
# scsi/pr-manager.c
|
||||
pr_manager_execute(int fd, int cmd, int sa, void *opaque) "fd=%d cmd=0x%02x service action=0x%02x opaque=%p"
|
||||
pr_manager_execute(int fd, int cmd, int sa) "fd=%d cmd=0x%02x service action=0x%02x"
|
||||
pr_manager_run(int fd, int cmd, int sa) "fd=%d cmd=0x%02x service action=0x%02x"
|
||||
|
||||
Reference in New Issue
Block a user