Lines Matching defs:reqp

351 	aio_req_t *reqp;
425 if ((reqp = _aio_req_alloc()) == NULL) {
431 * _aio_do_request() checks reqp->req_op to differentiate
434 reqp->req_op = mode;
435 reqp->req_resultp = resultp;
436 ap = &reqp->req_args;
442 if (_aio_hash_insert(resultp, reqp) != 0) {
443 _aio_req_free(reqp);
451 _aio_req_add(reqp, &__nextworker_rw, umode);
458 aio_req_t *reqp;
470 reqp = _aio_hash_find(resultp);
471 if (reqp == NULL) {
478 aiowp = reqp->req_worker;
480 (void) _aio_cancel_req(aiowp, reqp, &canceled, &done);
691 aio_req_t *reqp;
723 while ((reqp = *reqpp) != NULL) {
724 if (cancelall || reqp->req_args.fd == fd) {
725 *reqpp = reqp->req_next;
726 if (last == reqp) {
727 last = reqp->req_next;
729 if (_aio_done_head == reqp) {
734 _aio_set_result(reqp, -1, ECANCELED);
735 (void) _aio_hash_del(reqp->req_resultp);
736 _aio_req_free(reqp);
738 reqpp = &reqp->req_next;
739 last = reqp;
767 aio_req_t *reqp;
773 reqp = aiowp->work_tail1;
774 while (reqp != NULL) {
775 if (fd < 0 || reqp->req_args.fd == fd) {
776 if (_aio_cancel_req(aiowp, reqp, canceled, done)) {
779 * reqp is invalid; start traversing
782 reqp = aiowp->work_tail1;
786 reqp = reqp->req_next;
792 if ((reqp = aiowp->work_req) != NULL &&
793 (fd < 0 || reqp->req_args.fd == fd))
794 (void) _aio_cancel_req(aiowp, reqp, canceled, done);
803 _aio_cancel_req(aio_worker_t *aiowp, aio_req_t *reqp, int *canceled, int *done)
805 int ostate = reqp->req_state;
811 if (ostate == AIO_REQ_DONE && !POSIX_AIO(reqp) &&
812 aiowp->work_prev1 == reqp) {
821 _aio_set_result(reqp, -1, ECANCELED);
822 (void) _aio_hash_del(reqp->req_resultp);
823 reqp->req_state = AIO_REQ_CANCELED;
832 if (reqp->req_op == AIOFSYNC && reqp != aiowp->work_req) {
833 ASSERT(POSIX_AIO(reqp));
835 if (!reqp->req_head->lio_canned) {
836 reqp->req_head->lio_canned = 1;
842 reqp->req_state = AIO_REQ_CANCELED;
843 _aio_req_del(aiowp, reqp, ostate);
844 (void) _aio_hash_del(reqp->req_resultp);
846 if (reqp == aiowp->work_req) {
855 _aio_set_result(reqp, -1, ECANCELED);
859 if (!POSIX_AIO(reqp)) {
861 _aio_set_result(reqp, -1, ECANCELED);
862 _aio_req_free(reqp);
867 _aiodone(reqp, -1, ECANCELED);
874 _aio_create_worker(aio_req_t *reqp, int mode)
913 if (reqp) {
914 reqp->req_state = AIO_REQ_QUEUED;
915 reqp->req_worker = aiowp;
916 aiowp->work_head1 = reqp;
917 aiowp->work_tail1 = reqp;
918 aiowp->work_next1 = reqp;
928 if (reqp) {
929 reqp->req_state = 0;
930 reqp->req_worker = NULL;
1030 aio_req_t *reqp; /* current AIO request */
1066 while ((reqp = _aio_req_get(aiowp)) == NULL) {
1070 arg = &reqp->req_args;
1071 ASSERT(reqp->req_state == AIO_REQ_INPROGRESS ||
1072 reqp->req_state == AIO_REQ_CANCELED);
1075 switch (reqp->req_op) {
1171 if (_aio_fsync_del(aiowp, reqp))
1173 ASSERT(reqp->req_head == NULL);
1179 if (reqp->req_state == AIO_REQ_CANCELED) {
1188 if (_aio_hash_insert(reqp->req_resultp, reqp) != 0)
1209 aio_req_t *reqp;
1212 if ((reqp = aiowp->work_req) == NULL)
1216 if (reqp->req_state == AIO_REQ_CANCELED) {
1220 if (!POSIX_AIO(reqp)) {
1222 if (reqp->req_state == AIO_REQ_INPROGRESS) {
1223 reqp->req_state = AIO_REQ_DONE;
1224 _aio_set_result(reqp, retval, error);
1234 _aio_req_free(reqp);
1251 if (reqp->req_state == AIO_REQ_INPROGRESS)
1252 reqp->req_state = AIO_REQ_DONE;
1254 _aiodone(reqp, retval, error);
1260 _aio_req_mark_done(aio_req_t *reqp)
1263 if (reqp->req_largefile)
1264 ((aiocb64_t *)reqp->req_aiocbp)->aio_state = USERAIO_DONE;
1267 ((aiocb_t *)reqp->req_aiocbp)->aio_state = USERAIO_DONE;
1313 aio_req_t *reqp;
1326 while ((reqp = _aio_req_get(aiowp)) == NULL) {
1330 send_notification(&reqp->req_notify);
1331 _aio_req_free(reqp);
1343 _aiodone(aio_req_t *reqp, ssize_t retval, int error)
1345 aio_result_t *resultp = reqp->req_resultp;
1357 ASSERT(POSIX_AIO(reqp));
1368 switch (reqp->req_sigevent.sigev_notify) {
1396 if ((np.np_signo = reqp->req_sigevent.sigev_signo) != 0)
1398 np.np_user = reqp->req_sigevent.sigev_value.sival_ptr;
1400 if ((np.np_port = reqp->req_sigevent.sigev_signo) >= 0)
1402 np.np_event = reqp->req_op;
1403 if (np.np_event == AIOFSYNC && reqp->req_largefile)
1405 np.np_object = (uintptr_t)reqp->req_aiocbp;
1406 np.np_user = reqp->req_sigevent.sigev_value.sival_ptr;
1410 _aio_set_result(reqp, retval, error);
1414 head = reqp->req_head;
1415 reqp->req_head = NULL;
1418 _aio_enq_doneq(reqp);
1419 reqp = NULL;
1422 _aio_req_mark_done(reqp);
1481 if (reqp != NULL) {
1491 reqp->req_notify = np;
1492 reqp->req_op = AIONOTIFY;
1493 _aio_req_add(reqp, &__workers_no, AIONOTIFY);
1494 reqp = NULL;
1505 if (reqp != NULL)
1506 _aio_req_free(reqp);
1515 _aio_fsync_del(aio_worker_t *aiowp, aio_req_t *reqp)
1517 aio_lio_t *head = reqp->req_head;
1520 ASSERT(reqp == aiowp->work_req);
1533 _aio_req_free(reqp);
1537 reqp->req_head = NULL;
1539 reqp->req_state = AIO_REQ_CANCELED;
1550 _aio_req_free(reqp);
1594 aio_req_t *reqp;
1598 reqp = aiowp->work_prev1;
1599 reqp->req_next = NULL;
1607 if (reqp->req_state == AIO_REQ_CANCELED) {
1615 _aio_req_free(reqp);
1629 ASSERT(reqp != NULL);
1632 _aio_done_head = _aio_done_tail = reqp;
1634 _aio_done_head->req_next = reqp;
1635 _aio_done_head = reqp;
1657 aio_req_t *reqp;
1662 if ((reqp = _aio_done_tail) != NULL) {
1663 if ((_aio_done_tail = reqp->req_next) == NULL)
1667 (void) _aio_hash_del(reqp->req_resultp);
1668 resultp = reqp->req_resultp;
1669 ASSERT(reqp->req_state == AIO_REQ_DONE);
1670 _aio_req_free(reqp);
1674 if (reqp == NULL && _aio_outstand_cnt == 0) {
1693 _aio_set_result(aio_req_t *reqp, ssize_t retval, int error)
1695 aio_result_t *resultp = reqp->req_resultp;
1697 if (POSIX_AIO(reqp)) {
1713 _aio_req_add(aio_req_t *reqp, aio_worker_t **nextworker, int mode)
1721 ASSERT(reqp->req_state != AIO_REQ_DONEQ);
1722 reqp->req_next = NULL;
1777 if (_aio_create_worker(reqp, mode))
1804 if (_aio_create_worker(reqp, mode))
1825 aiowp->work_tail1 = reqp;
1826 aiowp->work_next1 = reqp;
1828 aiowp->work_head1->req_next = reqp;
1830 aiowp->work_next1 = reqp;
1832 reqp->req_state = AIO_REQ_QUEUED;
1833 reqp->req_worker = aiowp;
1834 aiowp->work_head1 = reqp;
1859 aio_req_t *reqp;
1862 if ((reqp = aiowp->work_next1) != NULL) {
1873 if (POSIX_AIO(reqp)) {
1875 aiowp->work_tail1 = reqp->req_next;
1879 aiowp->work_prev1->req_next = reqp->req_next;
1880 if (aiowp->work_head1 == reqp)
1881 aiowp->work_head1 = reqp->req_next;
1885 aiowp->work_prev1 = reqp;
1889 ASSERT(reqp != reqp->req_next);
1890 aiowp->work_next1 = reqp->req_next;
1893 switch (reqp->req_op) {
1906 reqp->req_state = AIO_REQ_INPROGRESS;
1908 aiowp->work_req = reqp;
1909 ASSERT(reqp != NULL || aiowp->work_count1 == 0);
1911 return (reqp);
1915 _aio_req_del(aio_worker_t *aiowp, aio_req_t *reqp, int ostate)
1923 if (POSIX_AIO(reqp)) {
1931 if (next == reqp) {
1963 !POSIX_AIO(reqp) && aiowp->work_done1 > 0);
1983 _aio_enq_doneq(aio_req_t *reqp)
1986 _aio_doneq = reqp;
1987 reqp->req_next = reqp->req_prev = reqp;
1989 reqp->req_next = _aio_doneq;
1990 reqp->req_prev = _aio_doneq->req_prev;
1991 _aio_doneq->req_prev->req_next = reqp;
1992 _aio_doneq->req_prev = reqp;
1994 reqp->req_state = AIO_REQ_DONEQ;
2002 _aio_req_remove(aio_req_t *reqp)
2004 if (reqp && reqp->req_state != AIO_REQ_DONEQ)
2007 if (reqp) {
2009 if (_aio_doneq == reqp)
2010 _aio_doneq = reqp->req_next;
2011 if (_aio_doneq == reqp) {
2015 aio_req_t *tmp = reqp->req_next;
2016 reqp->req_prev->req_next = tmp;
2017 tmp->req_prev = reqp->req_prev;
2019 } else if ((reqp = _aio_doneq) != NULL) {
2020 if (reqp == reqp->req_next) {
2024 reqp->req_prev->req_next = _aio_doneq = reqp->req_next;
2025 _aio_doneq->req_prev = reqp->req_prev;
2028 if (reqp) {
2030 reqp->req_next = reqp->req_prev = reqp;
2031 reqp->req_state = AIO_REQ_DONE;
2033 return (reqp);
2042 _aio_hash_insert(aio_result_t *resultp, aio_req_t *reqp)
2058 *prev = reqp;
2059 ASSERT(reqp->req_link == NULL);
2122 aio_req_t *reqp;
2172 if ((reqp = _aio_req_alloc()) == NULL) {
2180 reqp->req_head = lio_head;
2181 reqp->req_type = AIO_POSIX_REQ;
2182 reqp->req_op = mode;
2183 reqp->req_largefile = 0;
2186 reqp->req_sigevent.sigev_notify = SIGEV_NONE;
2188 reqp->req_sigevent.sigev_notify = SIGEV_SIGNAL;
2189 reqp->req_sigevent.sigev_signo =
2191 reqp->req_sigevent.sigev_value.sival_ptr =
2195 reqp->req_sigevent.sigev_notify = SIGEV_PORT;
2200 reqp->req_sigevent.sigev_signo =
2202 reqp->req_sigevent.sigev_value.sival_ptr =
2205 reqp->req_sigevent.sigev_notify = SIGEV_THREAD;
2210 reqp->req_sigevent.sigev_signo =
2212 reqp->req_sigevent.sigev_value.sival_ptr =
2216 reqp->req_resultp = &aiocbp->aio_resultp;
2217 reqp->req_aiocbp = aiocbp;
2218 ap = &reqp->req_args;
2225 _aio_hash_insert(&aiocbp->aio_resultp, reqp) != 0) {
2227 _aio_req_free(reqp);
2231 _aio_req_add(reqp, nextworker, mode);
2243 aio_req_t *reqp;
2293 if ((reqp = _aio_req_alloc()) == NULL) {
2301 reqp->req_head = lio_head;
2302 reqp->req_type = AIO_POSIX_REQ;
2303 reqp->req_op = mode;
2304 reqp->req_largefile = 1;
2307 reqp->req_sigevent.sigev_notify = SIGEV_NONE;
2309 reqp->req_sigevent.sigev_notify = SIGEV_SIGNAL;
2310 reqp->req_sigevent.sigev_signo =
2312 reqp->req_sigevent.sigev_value.sival_ptr =
2316 reqp->req_sigevent.sigev_notify = SIGEV_PORT;
2317 reqp->req_sigevent.sigev_signo =
2319 reqp->req_sigevent.sigev_value.sival_ptr =
2322 reqp->req_sigevent.sigev_notify = SIGEV_THREAD;
2323 reqp->req_sigevent.sigev_signo =
2325 reqp->req_sigevent.sigev_value.sival_ptr =
2329 reqp->req_resultp = &aiocbp->aio_resultp;
2330 reqp->req_aiocbp = aiocbp;
2331 ap = &reqp->req_args;
2338 _aio_hash_insert(&aiocbp->aio_resultp, reqp) != 0) {
2340 _aio_req_free(reqp);
2344 _aio_req_add(reqp, nextworker, mode);