Don't add a bwrite() symbol, it breaks the build when building newfs
statically. Instead, bring in a stripped down version of sbwrite(), and add the offset to every bwrite() calls.
This commit is contained in:
parent
999d258466
commit
02dda28606
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=188520
@ -101,6 +101,15 @@ static void setblock(struct fs *, unsigned char *, int);
|
|||||||
static void wtfs(ufs2_daddr_t, int, char *);
|
static void wtfs(ufs2_daddr_t, int, char *);
|
||||||
static u_int32_t newfs_random(void);
|
static u_int32_t newfs_random(void);
|
||||||
|
|
||||||
|
static int
|
||||||
|
do_sbwrite(struct uufsd *disk)
|
||||||
|
{
|
||||||
|
if (!disk->d_sblock)
|
||||||
|
disk->d_sblock = disk->d_fs.fs_sblockloc / disk->d_bsize;
|
||||||
|
return (pwrite(disk->d_fd, &disk->d_fs, SBLOCKSIZE, (off_t)((part_ofs +
|
||||||
|
disk->d_sblock) * disk->d_bsize)));
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
mkfs(struct partition *pp, char *fsys)
|
mkfs(struct partition *pp, char *fsys)
|
||||||
{
|
{
|
||||||
@ -465,14 +474,15 @@ mkfs(struct partition *pp, char *fsys)
|
|||||||
|
|
||||||
if (fsdummy.fs_magic == FS_UFS1_MAGIC) {
|
if (fsdummy.fs_magic == FS_UFS1_MAGIC) {
|
||||||
fsdummy.fs_magic = 0;
|
fsdummy.fs_magic = 0;
|
||||||
bwrite(&disk, SBLOCK_UFS1 / disk.d_bsize, chdummy, SBLOCKSIZE);
|
bwrite(&disk, part_ofs + SBLOCK_UFS1 / disk.d_bsize,
|
||||||
|
chdummy, SBLOCKSIZE);
|
||||||
for (i = 0; i < fsdummy.fs_ncg; i++)
|
for (i = 0; i < fsdummy.fs_ncg; i++)
|
||||||
bwrite(&disk, fsbtodb(&fsdummy, cgsblock(&fsdummy, i)),
|
bwrite(&disk, part_ofs + fsbtodb(&fsdummy,
|
||||||
chdummy, SBLOCKSIZE);
|
cgsblock(&fsdummy, i)), chdummy, SBLOCKSIZE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!Nflag)
|
if (!Nflag)
|
||||||
sbwrite(&disk, 0);
|
do_sbwrite(&disk);
|
||||||
if (Xflag == 1) {
|
if (Xflag == 1) {
|
||||||
printf("** Exiting on Xflag 1\n");
|
printf("** Exiting on Xflag 1\n");
|
||||||
exit(0);
|
exit(0);
|
||||||
@ -540,7 +550,7 @@ mkfs(struct partition *pp, char *fsys)
|
|||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
if (!Nflag)
|
if (!Nflag)
|
||||||
sbwrite(&disk, 0);
|
do_sbwrite(&disk);
|
||||||
for (i = 0; i < sblock.fs_cssize; i += sblock.fs_bsize)
|
for (i = 0; i < sblock.fs_cssize; i += sblock.fs_bsize)
|
||||||
wtfs(fsbtodb(&sblock, sblock.fs_csaddr + numfrags(&sblock, i)),
|
wtfs(fsbtodb(&sblock, sblock.fs_csaddr + numfrags(&sblock, i)),
|
||||||
sblock.fs_cssize - i < sblock.fs_bsize ?
|
sblock.fs_cssize - i < sblock.fs_bsize ?
|
||||||
@ -960,7 +970,7 @@ wtfs(ufs2_daddr_t bno, int size, char *bf)
|
|||||||
{
|
{
|
||||||
if (Nflag)
|
if (Nflag)
|
||||||
return;
|
return;
|
||||||
if (bwrite(&disk, bno, bf, size) < 0)
|
if (bwrite(&disk, part_ofs + bno, bf, size) < 0)
|
||||||
err(36, "wtfs: %d bytes at sector %jd", size, (intmax_t)bno);
|
err(36, "wtfs: %d bytes at sector %jd", size, (intmax_t)bno);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -152,16 +152,6 @@ static void usage(void);
|
|||||||
|
|
||||||
ufs2_daddr_t part_ofs; /* partition offset in blocks, used with files */
|
ufs2_daddr_t part_ofs; /* partition offset in blocks, used with files */
|
||||||
|
|
||||||
/*
|
|
||||||
* need to replace the library's bwrite so that sbwrite uses this one
|
|
||||||
*/
|
|
||||||
ssize_t
|
|
||||||
bwrite(struct uufsd *disk, ufs2_daddr_t blockno, const void *data, size_t size)
|
|
||||||
{
|
|
||||||
return pwrite(disk->d_fd, data, size,
|
|
||||||
(off_t)((part_ofs + blockno) * disk->d_bsize));
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
int
|
||||||
main(int argc, char *argv[])
|
main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user