+ bp->b_flags &= ~B_DONE;
+ if (bp->b_dev == NODEV)
+ goto allocit;
+
+ /*
+ * Search cache for any buffers that overlap the one that we
+ * are trying to allocate. Overlapping buffers must be marked
+ * invalid, after being written out if they are dirty. (indicated
+ * by B_DELWRI) A disk block must be mapped by at most one buffer
+ * at any point in time. Care must be taken to avoid deadlocking
+ * when two buffer are trying to get the same set of disk blocks.
+ */
+ start = bp->b_blkno;
+ last = start + (size / DEV_BSIZE) - 1;