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

Function brelvp

freebsd/kern/vfs_subr.c:2476–2503  ·  view source on GitHub ↗

* Disassociate a buffer from a vnode. */

Source from the content-addressed store, hash-verified

2474 * Disassociate a buffer from a vnode.
2475 */
2476void
2477brelvp(struct buf *bp)
2478{
2479 struct bufobj *bo;
2480 struct vnode *vp;
2481
2482 CTR3(KTR_BUF, "brelvp(%p) vp %p flags %X", bp, bp->b_vp, bp->b_flags);
2483 KASSERT(bp->b_vp != NULL, ("brelvp: NULL"));
2484
2485 /*
2486 * Delete from old vnode list, if on one.
2487 */
2488 vp = bp->b_vp; /* XXX */
2489 bo = bp->b_bufobj;
2490 BO_LOCK(bo);
2491 buf_vlist_remove(bp);
2492 if ((bo->bo_flag & BO_ONWORKLST) && bo->bo_dirty.bv_cnt == 0) {
2493 bo->bo_flag &= ~BO_ONWORKLST;
2494 mtx_lock(&sync_mtx);
2495 LIST_REMOVE(bo, bo_synclist);
2496 syncer_worklist_len--;
2497 mtx_unlock(&sync_mtx);
2498 }
2499 bp->b_vp = NULL;
2500 bp->b_bufobj = NULL;
2501 BO_UNLOCK(bo);
2502 vdrop(vp);
2503}
2504
2505/*
2506 * Add an item to the syncer work queue.

Callers 1

brelseFunction · 0.85

Calls 4

buf_vlist_removeFunction · 0.85
vdropFunction · 0.85
mtx_lockFunction · 0.70
mtx_unlockFunction · 0.70

Tested by

no test coverage detected