Lines Matching refs:sf

115 	struct sf_buf *sf;  in sf_buf_alloc()  local
125 LIST_FOREACH(sf, hash_list, list_entry) { in sf_buf_alloc()
126 if (sf->m == m) { in sf_buf_alloc()
127 sf->ref_count++; in sf_buf_alloc()
128 if (sf->ref_count == 1) { in sf_buf_alloc()
129 TAILQ_REMOVE(&sf_buf_freelist, sf, free_entry); in sf_buf_alloc()
134 sf_buf_shootdown(sf, flags); in sf_buf_alloc()
139 while ((sf = TAILQ_FIRST(&sf_buf_freelist)) == NULL) { in sf_buf_alloc()
154 TAILQ_REMOVE(&sf_buf_freelist, sf, free_entry); in sf_buf_alloc()
155 if (sf->m != NULL) in sf_buf_alloc()
156 LIST_REMOVE(sf, list_entry); in sf_buf_alloc()
157 LIST_INSERT_HEAD(hash_list, sf, list_entry); in sf_buf_alloc()
158 sf->ref_count = 1; in sf_buf_alloc()
159 sf->m = m; in sf_buf_alloc()
162 sf_buf_map(sf, flags); in sf_buf_alloc()
165 return (sf); in sf_buf_alloc()
175 sf_buf_free(struct sf_buf *sf) in sf_buf_free() argument
182 sf->ref_count--; in sf_buf_free()
183 if (sf->ref_count == 0) { in sf_buf_free()
184 TAILQ_INSERT_TAIL(&sf_buf_freelist, sf, free_entry); in sf_buf_free()
186 if (sf_buf_unmap(sf)) { in sf_buf_free()
187 sf->m = NULL; in sf_buf_free()
188 LIST_REMOVE(sf, list_entry); in sf_buf_free()
197 sf_buf_ref(struct sf_buf *sf) in sf_buf_ref() argument
204 KASSERT(sf->ref_count > 0, ("%s: sf %p not allocated", __func__, sf)); in sf_buf_ref()
205 sf->ref_count++; in sf_buf_ref()
217 struct sf_buf *sf; in sf_buf_process_page() local
221 LIST_FOREACH(sf, hash_list, list_entry) { in sf_buf_process_page()
222 if (sf->m == m) { in sf_buf_process_page()
223 cb(sf); in sf_buf_process_page()