void (*strat)();
void (*strat) __P((struct buf *));
writedisklabel(dev, strat, lp, clp)	dev_t dev;	void (*strat)();	register struct disklabel *lp;	struct cpu_disklabel *clp;{	struct buf *bp;	int error;#ifdef DEBUG	if(disksubr_debug > 0) {		printlp(lp, "writedisklabel: bsd label");	}#endif	/* obtain buffer to read initial cpu_disklabel, for bootloader size :-) */	bp = geteblk((int)lp->d_secsize);	/* request no partition relocation by driver on I/O operations */	bp->b_dev = dev;	bp->b_blkno = LABELSECTOR;	bp->b_bcount = lp->d_secsize;	bp->b_flags = B_BUSY | B_READ;	bp->b_cylin = 0; /* contained in block 0 */	(*strat)(bp);	if ((error = biowait(bp)) != 0 ) {		/* nothing */	} else {		bcopy(bp->b_data, clp, sizeof(struct cpu_disklabel));	}	bp->b_flags = B_INVAL | B_AGE | B_READ;	brelse(bp);	if (error) {		return (error);	}	bsdtocpulabel(lp, clp);#ifdef DEBUG	if (disksubr_debug > 0) {		printclp(clp, "writedisklabel: cpu label");	}#endif	if (lp->d_magic == DISKMAGIC && lp->d_magic2 == DISKMAGIC &&	    dkcksum(lp) == 0) {		/* obtain buffer to scrozz drive with */		bp = geteblk((int)lp->d_secsize);		bcopy(clp, bp->b_data, sizeof(struct cpu_disklabel));		/* request no partition relocation by driver on I/O operations */		bp->b_dev = dev;		bp->b_blkno = 0; /* contained in block 0 */		bp->b_bcount = lp->d_secsize;		bp->b_flags = B_WRITE;		bp->b_cylin = 0; /* contained in block 0 */		(*strat)(bp);		error = biowait(bp);		bp->b_flags = B_INVAL | B_AGE | B_READ;		brelse(bp);	}	return (error); }