MCPcopy Create free account
hub / github.com/F-Stack/f-stack / buf_vlist_remove

Function buf_vlist_remove

freebsd/kern/vfs_subr.c:2348–2370  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2346}
2347
2348static void
2349buf_vlist_remove(struct buf *bp)
2350{
2351 struct bufv *bv;
2352 b_xflags_t flags;
2353
2354 flags = bp->b_xflags;
2355
2356 KASSERT(bp->b_bufobj != NULL, ("No b_bufobj %p", bp));
2357 ASSERT_BO_WLOCKED(bp->b_bufobj);
2358 KASSERT((flags & (BX_VNDIRTY | BX_VNCLEAN)) != 0 &&
2359 (flags & (BX_VNDIRTY | BX_VNCLEAN)) != (BX_VNDIRTY | BX_VNCLEAN),
2360 ("%s: buffer %p has invalid queue state", __func__, bp));
2361
2362 if ((flags & BX_VNDIRTY) != 0)
2363 bv = &bp->b_bufobj->bo_dirty;
2364 else
2365 bv = &bp->b_bufobj->bo_clean;
2366 BUF_PCTRIE_REMOVE(&bv->bv_root, bp->b_lblkno);
2367 TAILQ_REMOVE(&bv->bv_hd, bp, b_bobufs);
2368 bv->bv_cnt--;
2369 bp->b_xflags &= ~(BX_VNDIRTY | BX_VNCLEAN);
2370}
2371
2372/*
2373 * Add the buffer to the sorted clean or dirty block list.

Callers 2

brelvpFunction · 0.85
reassignbufFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected