#include <sys/ioctl.h>
#include <linux/fs.h>
#include <errno.h>
-#include <asm/unistd.h>
+#include <unistd.h>
#include <libaio.h>
#include "checkers.h"
if (r < 0 ) {
LOG(3, "async io getevents returned %li (errno=%s)", r,
strerror(errno));
+ ct->running = 0;
rc = PATH_UNCHECKED;
} else if (r < 1L) {
if (ct->running > timeout_secs || sync) {
+ struct iocb *ios[1] = { &ct->io };
+
LOG(3, "abort check on timeout");
+ r = io_cancel(ct->ioctx, ios[0], &event);
+ /*
+ * Only reset ct->running if we really
+ * could abort the pending I/O
+ */
+ if (r)
+ LOG(3, "io_cancel error %i", errno);
+ else
+ ct->running = 0;
rc = PATH_DOWN;
} else {
LOG(3, "async io pending");