Lines Matching refs:ps

116 	struct physio_stat *ps = bp->b_private;  in physio_done()  local
128 mutex_enter(&ps->ps_lock); in physio_done()
129 is_iobuf = (bp != ps->ps_orig_bp); in physio_done()
140 KASSERT(ps->ps_endoffset != endoffset); in physio_done()
146 if (ps->ps_endoffset == -1 || endoffset < ps->ps_endoffset) { in physio_done()
149 __func__, ps, in physio_done()
150 ps->ps_error, bp->b_error, in physio_done()
151 ps->ps_endoffset, endoffset)); in physio_done()
153 ps->ps_endoffset = endoffset; in physio_done()
154 ps->ps_error = bp->b_error; in physio_done()
156 ps->ps_failed++; in physio_done()
158 ps->ps_resid += todo - done; in physio_done()
163 ps->ps_running--; in physio_done()
164 cv_signal(&ps->ps_cv); in physio_done()
165 mutex_exit(&ps->ps_lock); in physio_done()
175 struct physio_stat *ps = bp->b_private; in physio_biodone() local
179 KASSERT(ps->ps_running > 0); in physio_biodone()
190 physio_wait(struct physio_stat *ps, int n) in physio_wait() argument
193 KASSERT(mutex_owned(&ps->ps_lock)); in physio_wait()
195 while (ps->ps_running > n) in physio_wait()
196 cv_wait(&ps->ps_cv, &ps->ps_lock); in physio_wait()
225 struct physio_stat *ps; in physio() local
239 ps = kmem_zalloc(sizeof(*ps), KM_SLEEP); in physio()
243 ps->ps_orig_bp = obp; in physio()
244 ps->ps_endoffset = -1; in physio()
245 ps->ps_resid = 0; in physio()
246 mutex_init(&ps->ps_lock, MUTEX_DEFAULT, IPL_NONE); in physio()
247 cv_init(&ps->ps_cv, "physio"); in physio()
272 mutex_enter(&ps->ps_lock); in physio()
273 if (ps->ps_failed != 0) { in physio()
276 physio_wait(ps, sync ? 0 : concurrency); in physio()
277 mutex_exit(&ps->ps_lock); in physio()
290 bp->b_private = ps; in physio()
369 mutex_enter(&ps->ps_lock); in physio()
370 ps->ps_running++; in physio()
371 mutex_exit(&ps->ps_lock); in physio()
385 mutex_enter(&ps->ps_lock); in physio()
387 physio_wait(ps, 0); in physio()
388 mutex_exit(&ps->ps_lock); in physio()
390 KASSERT(ps->ps_failed || ps->ps_endoffset == -1); in physio()
397 if (ps->ps_failed != 0) { in physio()
400 delta = uio->uio_offset - ps->ps_endoffset; in physio()
406 uio->uio_resid += ps->ps_resid; in physio()
413 error = ps->ps_error; in physio()
415 mutex_destroy(&ps->ps_lock); in physio()
416 cv_destroy(&ps->ps_cv); in physio()
417 kmem_free(ps, sizeof(*ps)); in physio()