Home | History | Annotate | Download | only in chfs

Lines Matching defs:cheb

45     struct chfs_eraseblock *cheb, uint32_t size)
53 if (size > cheb->free_size) {
55 "on block (%d)\n", cheb->free_size, size, cheb->lnr);
59 chfs_change_size_free(chmp, cheb, -size);
60 chfs_change_size_dirty(chmp, cheb, size);
256 struct chfs_eraseblock *cheb, struct chfs_node_ref *nref)
262 if (!cheb)
263 cheb = &chmp->chm_blocks[nref->nref_lnr];
268 return chmp->chm_ebh->eb_size - cheb->free_size -
281 struct chfs_eraseblock *cheb;
288 cheb = &chmp->chm_blocks[nref->nref_lnr];
291 if (cheb->used_size + cheb->free_size + cheb->dirty_size +
292 cheb->unchecked_size + cheb->wasted_size != chmp->chm_ebh->eb_size) {
295 cheb->used_size, cheb->free_size, cheb->dirty_size,
296 cheb->unchecked_size, cheb->wasted_size, cheb->used_size + cheb->free_size +
297 cheb->dirty_size + cheb->unchecked_size + cheb->wasted_size,
302 len = chfs_nref_len(chmp, cheb, nref);
307 chfs_change_size_unchecked(chmp, cheb, -len);
309 chfs_change_size_used(chmp, cheb, -len);
311 KASSERT(cheb->used_size <= chmp->chm_ebh->eb_size);
313 chfs_change_size_dirty(chmp, cheb, len);
316 if (cheb->used_size + cheb->free_size + cheb->dirty_size +
317 cheb->unchecked_size + cheb->wasted_size != chmp->chm_ebh->eb_size) {
320 cheb->used_size, cheb->free_size, cheb->dirty_size,
321 cheb->unchecked_size, cheb->wasted_size, cheb->used_size + cheb->free_size +
322 cheb->dirty_size + cheb->unchecked_size + cheb->wasted_size,
335 if (cheb == chmp->chm_nextblock) {
337 } else if (!cheb->used_size && !cheb->unchecked_size) {
338 if (cheb == chmp->chm_gcblock) {
342 /* remove from a tailq, but we don't know which tailq contains this cheb
344 //TAILQ_REMOVE(&chmp->chm_dirty_queue, cheb, queue);
349 if (eb == cheb) {
350 TAILQ_REMOVE(&chmp->chm_free_queue, cheb, queue);
357 if (eb == cheb) {
358 TAILQ_REMOVE(&chmp->chm_dirty_queue, cheb, queue);
366 if (eb == cheb) {
367 TAILQ_REMOVE(&chmp->chm_very_dirty_queue, cheb, queue);
375 if (eb == cheb) {
376 TAILQ_REMOVE(&chmp->chm_clean_queue, cheb, queue);
386 cheb, queue);
389 cheb, queue);
393 } else if (cheb == chmp->chm_gcblock) {
395 } else if (cheb->dirty_size > MAX_DIRTY_TO_CLEAN &&
396 cheb->dirty_size - len <= MAX_DIRTY_TO_CLEAN) {
399 TAILQ_REMOVE(&chmp->chm_clean_queue, cheb, queue);
400 TAILQ_INSERT_TAIL(&chmp->chm_dirty_queue, cheb, queue);
401 } else if (VERY_DIRTY(chmp, cheb->dirty_size) &&
402 !VERY_DIRTY(chmp, cheb->dirty_size - len)) {
405 TAILQ_REMOVE(&chmp->chm_dirty_queue, cheb, queue);
406 TAILQ_INSERT_TAIL(&chmp->chm_very_dirty_queue, cheb, queue);
408 dbg("Leave cheb where it is\n");
422 struct chfs_eraseblock *cheb)
429 offset = chmp->chm_ebh->eb_size - cheb->free_size;
432 nref = chfs_alloc_node_ref(cheb);
440 chfs_update_eb_dirty(chmp, cheb, cheb->free_size);
442 if (cheb->dirty_size < MAX_DIRTY_TO_CLEAN) {
443 TAILQ_INSERT_TAIL(&chmp->chm_clean_queue, cheb, queue);
444 } else if (VERY_DIRTY(chmp, cheb->dirty_size)) {
445 TAILQ_INSERT_TAIL(&chmp->chm_very_dirty_queue, cheb, queue);
447 TAILQ_INSERT_TAIL(&chmp->chm_dirty_queue, cheb, queue);
544 struct chfs_eraseblock *cheb;
549 cheb = chmp->chm_nextblock;
550 if (cheb && size > cheb->free_size) {
551 dbg("size: %u > free_size: %u\n", size, cheb->free_size);
571 err = chfs_close_eraseblock(chmp, cheb);
575 cheb = NULL;
577 if (!cheb) {
581 dbg("cheb remap (free: %d)\n", chmp->chm_nr_free_blocks);
586 cheb = TAILQ_FIRST(&chmp->chm_free_queue);
587 TAILQ_REMOVE(&chmp->chm_free_queue, cheb, queue);
588 chmp->chm_nextblock = cheb;