Lines Matching refs:sf

114 	struct sf_buf *sf;  in sf_buf_alloc()  local
124 LIST_FOREACH(sf, hash_list, list_entry) { in sf_buf_alloc()
125 if (sf->m == m) { in sf_buf_alloc()
126 sf->ref_count++; in sf_buf_alloc()
127 if (sf->ref_count == 1) { in sf_buf_alloc()
128 TAILQ_REMOVE(&sf_buf_freelist, sf, free_entry); in sf_buf_alloc()
133 sf_buf_shootdown(sf, flags); in sf_buf_alloc()
138 while ((sf = TAILQ_FIRST(&sf_buf_freelist)) == NULL) { in sf_buf_alloc()
153 TAILQ_REMOVE(&sf_buf_freelist, sf, free_entry); in sf_buf_alloc()
154 if (sf->m != NULL) in sf_buf_alloc()
155 LIST_REMOVE(sf, list_entry); in sf_buf_alloc()
156 LIST_INSERT_HEAD(hash_list, sf, list_entry); in sf_buf_alloc()
157 sf->ref_count = 1; in sf_buf_alloc()
158 sf->m = m; in sf_buf_alloc()
161 sf_buf_map(sf, flags); in sf_buf_alloc()
164 return (sf); in sf_buf_alloc()
174 sf_buf_free(struct sf_buf *sf) in sf_buf_free() argument
181 sf->ref_count--; in sf_buf_free()
182 if (sf->ref_count == 0) { in sf_buf_free()
183 TAILQ_INSERT_TAIL(&sf_buf_freelist, sf, free_entry); in sf_buf_free()
185 if (sf_buf_unmap(sf)) { in sf_buf_free()
186 sf->m = NULL; in sf_buf_free()
187 LIST_REMOVE(sf, list_entry); in sf_buf_free()
196 sf_buf_ref(struct sf_buf *sf) in sf_buf_ref() argument
203 KASSERT(sf->ref_count > 0, ("%s: sf %p not allocated", __func__, sf)); in sf_buf_ref()
204 sf->ref_count++; in sf_buf_ref()
216 struct sf_buf *sf; in sf_buf_process_page() local
220 LIST_FOREACH(sf, hash_list, list_entry) { in sf_buf_process_page()
221 if (sf->m == m) { in sf_buf_process_page()
222 cb(sf); in sf_buf_process_page()