code:bflush - ikarishinjieva/unixV6-code-analyze-chs GitHub Wiki
- 将带有延迟写标识且对应于指定设备(或NODEV)的缓存块写回该设备
- 传入1个参数dev,为指定设备号
5223
5224 /* make sure all write-behind blocks
5225 * on dev (or NODEV for all)
5226 * are flushed out.
5227 * (from umount and update)
5228 */
5229 bflush(dev)
5230 {
5231 register struct buf *bp;
5232
5233 loop:
5234 spl6();
5235 for (bp = bfreelist.av_forw; bp != &bfreelist;
5237 if (bp->b_flags&B_DELWRI &&
5238 (dev == NODEV||dev == bp->b_dev)) {
5239 bp->b_flags =| B_ASYNC;
- 遍历自由队列,寻找带有延迟写标识,且其对应设备号为NODEV或是dev(函数传入参数)的缓存块
5240 notavil(bp);
5241 bwrite(bp);
5242 goto loop;
- 对于找到的缓存块,置异步写标识
- 将其从自由队列中取出
- 然后写回相应设备
5243 }
5244 }
5245 spl0();
5246 }
5247 /* ------------------------- */