/*
- * $Id: aiops.cc,v 1.5 2005/04/23 16:53:18 serassio Exp $
+ * $Id: aiops.cc,v 1.6 2005/07/10 15:43:30 serassio Exp $
*
* DEBUG: section 43 AIOPS
* AUTHOR: Stewart Forster <slf@connect.com.au>
static void squidaio_do_write(squidaio_request_t *);
static void squidaio_do_close(squidaio_request_t *);
static void squidaio_do_stat(squidaio_request_t *);
-static void squidaio_do_unlink(squidaio_request_t *);
+#if USE_TRUNCATE
static void squidaio_do_truncate(squidaio_request_t *);
+#else
+static void squidaio_do_unlink(squidaio_request_t *);
+#endif
#if AIO_OPENDIR
static void *squidaio_do_opendir(squidaio_request_t *);
#endif
squidaio_do_close(request);
break;
- case _AIO_OP_UNLINK:
- squidaio_do_unlink(request);
- break;
+#if USE_TRUNCATE
case _AIO_OP_TRUNCATE:
squidaio_do_truncate(request);
break;
+#else
+
+ case _AIO_OP_UNLINK:
+ squidaio_do_unlink(request);
+ break;
+
+#endif
#if AIO_OPENDIR /* Opendir not implemented yet */
case _AIO_OP_OPENDIR:
}
+#if USE_TRUNCATE
int
-squidaio_unlink(const char *path, squidaio_result_t * resultp)
+squidaio_truncate(const char *path, off_t length, squidaio_result_t * resultp)
{
squidaio_request_t *requestp;
requestp = (squidaio_request_t *)squidaio_request_pool->alloc();
- requestp->path = squidaio_xstrdup(path);
+ requestp->path = (char *) squidaio_xstrdup(path);
+
+ requestp->offset = length;
requestp->resultp = resultp;
- requestp->request_type = _AIO_OP_UNLINK;
+ requestp->request_type = _AIO_OP_TRUNCATE;
requestp->cancelled = 0;
- resultp->result_type = _AIO_OP_UNLINK;
+ resultp->result_type = _AIO_OP_TRUNCATE;
squidaio_queue_request(requestp);
static void
-squidaio_do_unlink(squidaio_request_t * requestp)
+squidaio_do_truncate(squidaio_request_t * requestp)
{
- requestp->ret = unlink(requestp->path);
+ requestp->ret = truncate(requestp->path, requestp->offset);
requestp->err = errno;
}
+
+#else
int
-squidaio_truncate(const char *path, off_t length, squidaio_result_t * resultp)
+squidaio_unlink(const char *path, squidaio_result_t * resultp)
{
squidaio_request_t *requestp;
requestp = (squidaio_request_t *)squidaio_request_pool->alloc();
- requestp->path = (char *) squidaio_xstrdup(path);
-
- requestp->offset = length;
+ requestp->path = squidaio_xstrdup(path);
requestp->resultp = resultp;
- requestp->request_type = _AIO_OP_TRUNCATE;
+ requestp->request_type = _AIO_OP_UNLINK;
requestp->cancelled = 0;
- resultp->result_type = _AIO_OP_TRUNCATE;
+ resultp->result_type = _AIO_OP_UNLINK;
squidaio_queue_request(requestp);
static void
-squidaio_do_truncate(squidaio_request_t * requestp)
+squidaio_do_unlink(squidaio_request_t * requestp)
{
- requestp->ret = truncate(requestp->path, requestp->offset);
+ requestp->ret = unlink(requestp->path);
requestp->err = errno;
}
+#endif
#if AIO_OPENDIR
/* XXX squidaio_opendir NOT implemented yet.. */
/*
- * $Id: async_io.cc,v 1.1 2004/12/20 16:30:38 robertc Exp $
+ * $Id: async_io.cc,v 1.2 2005/07/10 15:43:30 serassio Exp $
*
* DEBUG: section 32 Asynchronous Disk I/O
* AUTHOR: Pete Bentley <pete@demon.net>
return;
} /* aioStat */
+#if USE_TRUNCATE
void
-aioUnlink(const char *path, AIOCB * callback, void *callback_data)
+aioTruncate(const char *path, off_t length, AIOCB * callback, void *callback_data)
{
squidaio_ctrl_t *ctrlp;
assert(DiskThreadsIOStrategy::Instance.initialised);
ctrlp->fd = -2;
ctrlp->done_handler = callback;
ctrlp->done_handler_data = cbdataReference(callback_data);
- ctrlp->operation = _AIO_UNLINK;
+ ctrlp->operation = _AIO_TRUNCATE;
ctrlp->result.data = ctrlp;
- squidaio_unlink(path, &ctrlp->result);
+ squidaio_truncate(path, length, &ctrlp->result);
dlinkAdd(ctrlp, &ctrlp->node, &used_list);
-} /* aioUnlink */
+} /* aioTruncate */
+#else
void
-aioTruncate(const char *path, off_t length, AIOCB * callback, void *callback_data)
+aioUnlink(const char *path, AIOCB * callback, void *callback_data)
{
squidaio_ctrl_t *ctrlp;
assert(DiskThreadsIOStrategy::Instance.initialised);
ctrlp->fd = -2;
ctrlp->done_handler = callback;
ctrlp->done_handler_data = cbdataReference(callback_data);
- ctrlp->operation = _AIO_TRUNCATE;
+ ctrlp->operation = _AIO_UNLINK;
ctrlp->result.data = ctrlp;
- squidaio_truncate(path, length, &ctrlp->result);
+ squidaio_unlink(path, &ctrlp->result);
dlinkAdd(ctrlp, &ctrlp->node, &used_list);
-} /* aioTruncate */
+} /* aioUnlink */
+
+#endif
int
aioQueueSize(void)