Fire SIGIO when IO requests are completed
RFC PATCH 1/1 Fire SIGIO when IO requests are completed
Hi Blue Swirl,
Can you test the attached patch with sparc-softmmu? Better yet, do you have an image, or a recipe for an image that I could use to try and reproduce the problem? The sparc test code on the QEMU website just uses a ram disk so the regression isn't evident with it.
Regards,
Anthony Liguori
block-raw-posix.c +6 -0
@@ -591,6 +591,12 @@ static int posix_aio_init(void)fcntl (s->fd,F_SETFL ,O_NONBLOCK ); + { +extern void enable_sigio_timer (int fd); + +enable_sigio_timer (s->fd); + } +qemu_aio_set_fd_handler (s->fd, posix_aio_read,NULL , posix_aio_flush, s);#if defined(__linux__)
qemu-tool.c +4 -0
@@ -26,6 +26,10 @@ struct QEMUBHvoid *opaque; }; +void enable_sigio_timer (int fd) +{ +} +void term_printf (const char *fmt, ...) { }
vl.c +3 -3
@@ -1307,7 +1307,7 @@ static void host_alarm_handler(int host_signum) last_clock = ti; }#endif - if (alarm_has_dynticks(alarm_timer) || + if (1 || alarm_has_dynticks(alarm_timer) || (!use_icount && qemu_timer_expired(active_timers[QEMU_TIMER_VIRTUAL], qemu_get_clock(vm_clock))) ||
@@ -1383,7 +1383,7 @@ static uint64_t qemu_next_deadline_dyntick(void)#define RTC_FREQ 1024 -static void enable_sigio_timer (int fd) +void enable_sigio_timer (int fd) {struct sigaction act;
@@ -1393,7 +1393,7 @@ static void enable_sigio_timer(int fd) act.sa_handler = host_alarm_handler;sigaction (SIGIO , &act,NULL ); -fcntl (fd,F_SETFL ,O_ASYNC ); +fcntl (fd,F_SETFL ,O_ASYNC |fcntl (fd,F_GETFL ));fcntl (fd,F_SETOWN ,getpid ()); }
Quoted 6 lines · Anthony Liguori
Hi Blue Swirl,
Can you test the attached patch with sparc-softmmu? Better yet, do you
have an image, or a recipe for an image that I could use to try and reproduce the problem? The sparc test code on the QEMU website just uses a ram disk so the regression isn't evident with it.
For quick testing, Splack 8 installer boots in a few seconds:
ftp://ftp.splack.org/pub/splack/splack-8.0-iso/splack-24oct2k3.iso
If you want to do a full installation, I'd suggest installing using Debian 3.1 and then upgrade to 4.0.
Am 06.10.2008 um 20:32 schrieb Blue Swirl:
Quoted 2 lines
If you want to do a full installation, I'd suggest installing using Debian 3.1 and then upgrade to 4.0.
Installing 4.0r0 used to work fine, is there a regression?
Andreas
Quoted 9 lines · Andreas Färber
Am 06.10.2008 um 20:32 schrieb Blue Swirl:
Quoted 3 lines
If you want to do a full installation, I'd suggest installing using Debian 3.1 and then upgrade to 4.0.
Installing 4.0r0 used to work fine, is there a regression?
I get a crash at 7% of install (or package verification or whatever), it hasn't ever worked.
Quoted 6 lines · Anthony Liguori
Hi Blue Swirl,
Can you test the attached patch with sparc-softmmu? Better yet, do you
have an image, or a recipe for an image that I could use to try and reproduce the problem? The sparc test code on the QEMU website just uses a ram disk so the regression isn't evident with it.
Your patch fixes the slowness, great!
Please put the prototype of enable_sigio_timer to a .h file somewhere, I get a warning with -Wmissing-prototypes.
Quoted 4 lines · Blue Swirl
Quoted 2 lines · Anthony Liguori
Hi Blue Swirl,
Quoted 8 lines
Quoted 5 lines
Can you test the attached patch with sparc-softmmu? Better yet, do you
have an image, or a recipe for an image that I could use to try and reproduce the problem? The sparc test code on the QEMU website just uses a ram disk so the regression isn't evident with it.Your patch fixes the slowness, great!
Okay, I'll code up a proper fix then. That patch was just to confirm the problem.
Thanks,
Anthony Liguori
Quoted 3 lines
Please put the prototype of
enable_sigio_timerto a .h file somewhere, I get a warning with -Wmissing-prototypes.
Quoted 6 lines · Anthony Liguori
Hi Blue Swirl,
Can you test the attached patch with sparc-softmmu? Better yet, do you have an image, or a recipe for an image that I could use to try and reproduce the problem? The sparc test code on the QEMU website just uses a ram disk so the regression isn't evident with it.
Your patch works perfectly with -clock unix, but the problem is still present here with -clock dynticks.
If you want to test the problem, you can download an image file from
http://people.debian.org/~aurel32/qemu
BTW I wonder if we should also fire SIGIO on the network device.
Aurelien
Signature · 4 lines
.''`. Aurelien Jarno | GPG: 1024D/F1BCDB73 : :' : Debian developer | Electrical Engineer `. `' [email protected] | [email protected] `- people.debian.org/~aurel32 | www.aurel32.net