From: Kevin Wolf <kwolf@redhat.com>
To: anthony@codemonkey.ws
Cc: kwolf@redhat.com, qemu-devel@nongnu.org
Subject: [Qemu-devel] [PATCH 18/20] block: avoid SIGUSR2
Date: Tue, 20 Sep 2011 13:11:50 +0200 [thread overview]
Message-ID: <1316517112-9908-19-git-send-email-kwolf@redhat.com> (raw)
In-Reply-To: <1316517112-9908-1-git-send-email-kwolf@redhat.com>
From: Frediano Ziglio <freddy77@gmail.com>
Now that iothread is always compiled sending a signal seems only an
additional step. This patch also avoid writing to two pipe (one from signal
and one in qemu_service_io).
Work with kvm enabled or disabled. strace output is more readable (less syscalls).
Signed-off-by: Frediano Ziglio <freddy77@gmail.com>
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
---
cpus.c | 5 -----
posix-aio-compat.c | 29 +++++++++--------------------
2 files changed, 9 insertions(+), 25 deletions(-)
diff --git a/cpus.c b/cpus.c
index 54c188c..d0cfe91 100644
--- a/cpus.c
+++ b/cpus.c
@@ -380,11 +380,6 @@ static int qemu_signal_init(void)
int sigfd;
sigset_t set;
- /* SIGUSR2 used by posix-aio-compat.c */
- sigemptyset(&set);
- sigaddset(&set, SIGUSR2);
- pthread_sigmask(SIG_UNBLOCK, &set, NULL);
-
/*
* SIG_IPI must be blocked in the main thread and must not be caught
* by sigwait() in the signal thread. Otherwise, the cpu thread will
diff --git a/posix-aio-compat.c b/posix-aio-compat.c
index 63a8fae..393fa4b 100644
--- a/posix-aio-compat.c
+++ b/posix-aio-compat.c
@@ -42,7 +42,6 @@ struct qemu_paiocb {
int aio_niov;
size_t aio_nbytes;
#define aio_ioctl_cmd aio_nbytes /* for QEMU_AIO_IOCTL */
- int ev_signo;
off_t aio_offset;
QTAILQ_ENTRY(qemu_paiocb) node;
@@ -308,6 +307,8 @@ static ssize_t handle_aiocb_rw(struct qemu_paiocb *aiocb)
return nbytes;
}
+static void posix_aio_notify_event(void);
+
static void *aio_thread(void *unused)
{
pid_t pid;
@@ -380,7 +381,7 @@ static void *aio_thread(void *unused)
aiocb->ret = ret;
mutex_unlock(&lock);
- if (kill(pid, aiocb->ev_signo)) die("kill failed");
+ posix_aio_notify_event();
}
cur_threads--;
@@ -547,18 +548,14 @@ static int posix_aio_flush(void *opaque)
static PosixAioState *posix_aio_state;
-static void aio_signal_handler(int signum)
+static void posix_aio_notify_event(void)
{
- if (posix_aio_state) {
- char byte = 0;
- ssize_t ret;
-
- ret = write(posix_aio_state->wfd, &byte, sizeof(byte));
- if (ret < 0 && errno != EAGAIN)
- die("write()");
- }
+ char byte = 0;
+ ssize_t ret;
- qemu_service_io();
+ ret = write(posix_aio_state->wfd, &byte, sizeof(byte));
+ if (ret < 0 && errno != EAGAIN)
+ die("write()");
}
static void paio_remove(struct qemu_paiocb *acb)
@@ -622,7 +619,6 @@ BlockDriverAIOCB *paio_submit(BlockDriverState *bs, int fd,
return NULL;
acb->aio_type = type;
acb->aio_fildes = fd;
- acb->ev_signo = SIGUSR2;
if (qiov) {
acb->aio_iov = qiov->iov;
@@ -650,7 +646,6 @@ BlockDriverAIOCB *paio_ioctl(BlockDriverState *bs, int fd,
return NULL;
acb->aio_type = QEMU_AIO_IOCTL;
acb->aio_fildes = fd;
- acb->ev_signo = SIGUSR2;
acb->aio_offset = 0;
acb->aio_ioctl_buf = buf;
acb->aio_ioctl_cmd = req;
@@ -664,7 +659,6 @@ BlockDriverAIOCB *paio_ioctl(BlockDriverState *bs, int fd,
int paio_init(void)
{
- struct sigaction act;
PosixAioState *s;
int fds[2];
int ret;
@@ -674,11 +668,6 @@ int paio_init(void)
s = g_malloc(sizeof(PosixAioState));
- sigfillset(&act.sa_mask);
- act.sa_flags = 0; /* do not restart syscalls to interrupt select() */
- act.sa_handler = aio_signal_handler;
- sigaction(SIGUSR2, &act, NULL);
-
s->first_aio = NULL;
if (qemu_pipe(fds) == -1) {
fprintf(stderr, "failed to create pipe\n");
--
1.7.6.2
next prev parent reply other threads:[~2011-09-20 11:09 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-09-20 11:11 [Qemu-devel] [PULL 00/20] Block patches Kevin Wolf
2011-09-20 11:11 ` [Qemu-devel] [PATCH 01/20] nbd: support feature negotiation Kevin Wolf
2011-09-20 11:11 ` [Qemu-devel] [PATCH 02/20] nbd: sync API definitions with upstream Kevin Wolf
2011-09-20 11:11 ` [Qemu-devel] [PATCH 03/20] nbd: support NBD_SET_FLAGS ioctl Kevin Wolf
2011-09-20 11:11 ` [Qemu-devel] [PATCH 04/20] raw-posix: Fix bdrv_flush error return values Kevin Wolf
2011-09-20 11:11 ` [Qemu-devel] [PATCH 05/20] scsi-generic: do not disable FUA Kevin Wolf
2011-09-20 11:11 ` [Qemu-devel] [PATCH 06/20] dma-helpers: rename is_write to to_dev Kevin Wolf
2011-09-20 11:11 ` [Qemu-devel] [PATCH 07/20] dma-helpers: allow including from target-independent code Kevin Wolf
2011-09-20 11:11 ` [Qemu-devel] [PATCH 08/20] dma-helpers: rewrite completion/cancellation Kevin Wolf
2011-09-20 11:11 ` [Qemu-devel] [PATCH 09/20] scsi-disk: commonize iovec creation between reads and writes Kevin Wolf
2011-09-20 11:11 ` [Qemu-devel] [PATCH 10/20] scsi-disk: lazily allocate bounce buffer Kevin Wolf
2011-09-20 11:11 ` [Qemu-devel] [PATCH 11/20] VMDK: fix leak of extent_file Kevin Wolf
2011-09-20 11:11 ` [Qemu-devel] [PATCH 12/20] posix-aio-compat: Removed unused offset variable Kevin Wolf
2011-09-20 11:11 ` [Qemu-devel] [PATCH 13/20] AHCI Port Interrupt Enable register cleaning on soft reset Kevin Wolf
2011-09-20 11:11 ` [Qemu-devel] [PATCH 14/20] rbd: ignore failures when reading from default conf location Kevin Wolf
2011-09-20 11:11 ` [Qemu-devel] [PATCH 15/20] rbd: update comment heading Kevin Wolf
2011-09-20 11:11 ` [Qemu-devel] [PATCH 16/20] rbd: call flush, if available Kevin Wolf
2011-09-20 11:11 ` [Qemu-devel] [PATCH 17/20] scsi: fix sign extension problems Kevin Wolf
2011-09-20 11:11 ` Kevin Wolf [this message]
2011-09-20 11:11 ` [Qemu-devel] [PATCH 19/20] linux-aio: remove process requests callback Kevin Wolf
2011-09-20 11:11 ` [Qemu-devel] [PATCH 20/20] rbd: allow escaping in config string Kevin Wolf
2011-09-20 20:39 ` [Qemu-devel] [PULL 00/20] Block patches Anthony Liguori
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1316517112-9908-19-git-send-email-kwolf@redhat.com \
--to=kwolf@redhat.com \
--cc=anthony@codemonkey.ws \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).