Lines Matching refs:sr

2085 snf_enque(snf_req_t *sr, mblk_t *mp)  in snf_enque()  argument
2088 mutex_enter(&sr->sr_lock); in snf_enque()
2089 if (sr->sr_mp_head == NULL) { in snf_enque()
2090 sr->sr_mp_head = sr->sr_mp_tail = mp; in snf_enque()
2091 cv_signal(&sr->sr_cv); in snf_enque()
2093 sr->sr_mp_tail->b_next = mp; in snf_enque()
2094 sr->sr_mp_tail = mp; in snf_enque()
2096 sr->sr_qlen += MBLKL(mp); in snf_enque()
2097 while ((sr->sr_qlen > sr->sr_hiwat) && in snf_enque()
2098 (sr->sr_write_error == 0)) { in snf_enque()
2100 cv_wait(&sr->sr_cv, &sr->sr_lock); in snf_enque()
2102 mutex_exit(&sr->sr_lock); in snf_enque()
2109 snf_deque(snf_req_t *sr) in snf_deque() argument
2113 mutex_enter(&sr->sr_lock); in snf_deque()
2121 if (((sr->sr_read_error & ~SR_READ_DONE) != 0) || in snf_deque()
2122 ((sr->sr_read_error & SR_READ_DONE) && in snf_deque()
2123 sr->sr_mp_head == NULL)) { in snf_deque()
2124 mutex_exit(&sr->sr_lock); in snf_deque()
2141 while ((sr->sr_read_error == 0) && (sr->sr_mp_head == NULL)) { in snf_deque()
2143 cv_wait(&sr->sr_cv, &sr->sr_lock); in snf_deque()
2146 if (((sr->sr_read_error & ~SR_READ_DONE) == 0) && in snf_deque()
2147 (sr->sr_mp_head != NULL)) { in snf_deque()
2148 mp = sr->sr_mp_head; in snf_deque()
2149 sr->sr_mp_head = mp->b_next; in snf_deque()
2150 sr->sr_qlen -= MBLKL(mp); in snf_deque()
2151 if (sr->sr_qlen < sr->sr_lowat) in snf_deque()
2152 cv_signal(&sr->sr_cv); in snf_deque()
2153 mutex_exit(&sr->sr_lock); in snf_deque()
2158 mutex_exit(&sr->sr_lock); in snf_deque()
2166 snf_async_read(snf_req_t *sr) in snf_async_read() argument
2181 fp = sr->sr_fp; in snf_async_read()
2182 size = sr->sr_file_size; in snf_async_read()
2183 fileoff = sr->sr_file_off; in snf_async_read()
2191 vp = sr->sr_vp; in snf_async_read()
2211 while ((size != 0) && (sr->sr_write_error == 0)) { in snf_async_read()
2213 iosize = (int)MIN(sr->sr_maxpsz, size); in snf_async_read()
2246 snf_enque(sr, mp); in snf_async_read()
2252 mutex_enter(&sr->sr_lock); in snf_async_read()
2253 sr->sr_read_error = error; in snf_async_read()
2254 sr->sr_read_error |= SR_READ_DONE; in snf_async_read()
2255 cv_signal(&sr->sr_cv); in snf_async_read()
2256 mutex_exit(&sr->sr_lock); in snf_async_read()
2262 snf_req_t *sr; in snf_async_thread() local
2274 while ((sr = snfq->snfq_req_head) == NULL) { in snf_async_thread()
2290 snfq->snfq_req_head = sr->sr_next; in snf_async_thread()
2293 snf_async_read(sr); in snf_async_thread()
2303 snf_req_t *sr; in create_thread() local
2306 sr = (snf_req_t *)kmem_zalloc(sizeof (snf_req_t), KM_SLEEP); in create_thread()
2308 sr->sr_vp = vp; in create_thread()
2309 sr->sr_fp = fp; in create_thread()
2317 sr->sr_maxpsz = MIN(MAXBSIZE, stp->sd_qn_maxpsz); in create_thread()
2319 sr->sr_maxpsz = MAXBSIZE; in create_thread()
2322 sr->sr_operation = operation; in create_thread()
2323 sr->sr_file_off = fileoff; in create_thread()
2324 sr->sr_file_size = size; in create_thread()
2325 sr->sr_hiwat = sendfile_req_hiwat; in create_thread()
2326 sr->sr_lowat = sendfile_req_lowat; in create_thread()
2327 mutex_init(&sr->sr_lock, NULL, MUTEX_DEFAULT, NULL); in create_thread()
2328 cv_init(&sr->sr_cv, NULL, CV_DEFAULT, NULL); in create_thread()
2343 snfq->snfq_req_head = snfq->snfq_req_tail = sr; in create_thread()
2346 snfq->snfq_req_tail->sr_next = sr; in create_thread()
2347 snfq->snfq_req_tail = sr; in create_thread()
2351 return (sr); in create_thread()
2358 snf_req_t *sr; in snf_direct_io() local
2373 if ((sr = create_thread(READ_OP, vp, rfp, fileoff, size)) == NULL) in snf_direct_io()
2381 while ((mp = snf_deque(sr)) != NULL) { in snf_direct_io()
2401 mutex_enter(&sr->sr_lock); in snf_direct_io()
2402 sr->sr_write_error = error; in snf_direct_io()
2404 cv_signal(&sr->sr_cv); in snf_direct_io()
2407 while (!(sr->sr_read_error & SR_READ_DONE)) { in snf_direct_io()
2408 cv_wait(&sr->sr_cv, &sr->sr_lock); in snf_direct_io()
2412 error = (sr->sr_read_error & ~SR_READ_DONE); in snf_direct_io()
2417 mp = sr->sr_mp_head; in snf_direct_io()
2425 mutex_exit(&sr->sr_lock); in snf_direct_io()
2426 kmem_free(sr, sizeof (snf_req_t)); in snf_direct_io()