Lines Matching refs:sfs
114 sendfile_sync_destroy(struct sendfile_sync *sfs) in sendfile_sync_destroy() argument
116 KASSERT(sfs->count == 0, ("sendfile sync %p still busy", sfs)); in sendfile_sync_destroy()
118 cv_destroy(&sfs->cv); in sendfile_sync_destroy()
119 mtx_destroy(&sfs->mtx); in sendfile_sync_destroy()
120 free(sfs, M_SENDFILE); in sendfile_sync_destroy()
124 sendfile_sync_signal(struct sendfile_sync *sfs) in sendfile_sync_signal() argument
126 mtx_lock(&sfs->mtx); in sendfile_sync_signal()
127 KASSERT(sfs->count > 0, ("sendfile sync %p not busy", sfs)); in sendfile_sync_signal()
128 if (--sfs->count == 0) { in sendfile_sync_signal()
129 if (!sfs->waiting) { in sendfile_sync_signal()
131 sendfile_sync_destroy(sfs); in sendfile_sync_signal()
134 cv_signal(&sfs->cv); in sendfile_sync_signal()
137 mtx_unlock(&sfs->mtx); in sendfile_sync_signal()
184 struct sendfile_sync *sfs = m->m_ext.ext_arg2; in sendfile_free_mext() local
185 sendfile_sync_signal(sfs); in sendfile_free_mext()
209 struct sendfile_sync *sfs = m->m_ext.ext_arg1; in sendfile_free_mext_pg() local
210 sendfile_sync_signal(sfs); in sendfile_free_mext_pg()
758 struct sendfile_sync *sfs; in vn_sendfile() local
770 sfs = NULL; in vn_sendfile()
797 sfs = malloc(sizeof(*sfs), M_SENDFILE, M_WAITOK | M_ZERO); in vn_sendfile()
798 mtx_init(&sfs->mtx, "sendfile", NULL, MTX_DEF); in vn_sendfile()
799 cv_init(&sfs->cv, "sendfile"); in vn_sendfile()
800 sfs->waiting = true; in vn_sendfile()
1032 if (sfs != NULL) { in vn_sendfile()
1035 m0->m_ext.ext_arg1 = sfs; in vn_sendfile()
1036 mtx_lock(&sfs->mtx); in vn_sendfile()
1037 sfs->count++; in vn_sendfile()
1038 mtx_unlock(&sfs->mtx); in vn_sendfile()
1110 if (sfs != NULL) { in vn_sendfile()
1112 m0->m_ext.ext_arg2 = sfs; in vn_sendfile()
1113 mtx_lock(&sfs->mtx); in vn_sendfile()
1114 sfs->count++; in vn_sendfile()
1115 mtx_unlock(&sfs->mtx); in vn_sendfile()
1253 if (sfs != NULL) { in vn_sendfile()
1254 mtx_lock(&sfs->mtx); in vn_sendfile()
1255 if (sfs->count != 0) in vn_sendfile()
1256 error = cv_wait_sig(&sfs->cv, &sfs->mtx); in vn_sendfile()
1257 if (sfs->count == 0) { in vn_sendfile()
1258 sendfile_sync_destroy(sfs); in vn_sendfile()
1260 sfs->waiting = false; in vn_sendfile()
1261 mtx_unlock(&sfs->mtx); in vn_sendfile()