| 163 | "sendfile statistics"); |
| 164 | |
| 165 | static void |
| 166 | sendfile_free_mext(struct mbuf *m) |
| 167 | { |
| 168 | struct sf_buf *sf; |
| 169 | vm_page_t pg; |
| 170 | int flags; |
| 171 | |
| 172 | KASSERT(m->m_flags & M_EXT && m->m_ext.ext_type == EXT_SFBUF, |
| 173 | ("%s: m %p !M_EXT or !EXT_SFBUF", __func__, m)); |
| 174 | |
| 175 | sf = m->m_ext.ext_arg1; |
| 176 | pg = sf_buf_page(sf); |
| 177 | flags = (m->m_ext.ext_flags & EXT_FLAG_NOCACHE) != 0 ? VPR_TRYFREE : 0; |
| 178 | |
| 179 | sf_buf_free(sf); |
| 180 | vm_page_release(pg, flags); |
| 181 | |
| 182 | if (m->m_ext.ext_flags & EXT_FLAG_SYNC) { |
| 183 | struct sendfile_sync *sfs = m->m_ext.ext_arg2; |
| 184 | sendfile_sync_signal(sfs); |
| 185 | } |
| 186 | } |
| 187 | |
| 188 | static void |
| 189 | sendfile_free_mext_pg(struct mbuf *m) |
nothing calls this directly
no test coverage detected