Lines Matching defs:fsopts
154 ffs_prep_opts(fsinfo_t *fsopts)
201 fsopts->fs_specific = ffs_opts;
202 fsopts->fs_options = copy_opts(ffs_options);
206 ffs_cleanup_opts(fsinfo_t *fsopts)
208 free(fsopts->fs_specific);
209 free(fsopts->fs_options);
213 ffs_parse_opts(const char *option, fsinfo_t *fsopts)
215 ffs_opt_t *ffs_opts = fsopts->fs_specific;
216 option_t *ffs_options = fsopts->fs_options;
222 assert(fsopts != NULL);
254 ffs_makefs(const char *image, const char *dir, fsnode *root, fsinfo_t *fsopts)
262 assert(fsopts != NULL);
270 ffs_validate(dir, root, fsopts);
274 image, (long long)fsopts->size, (long long)fsopts->inodes);
278 if (ffs_create_image(image, fsopts) == -1)
282 fsopts->curinode = UFS_ROOTINO;
290 if (! ffs_populate_dir(dir, root, fsopts))
299 superblock = fsopts->superblock;
307 ffs_write_superblock(fsopts->superblock, fsopts);
308 if (close(fsopts->fd) == -1)
310 fsopts->fd = -1;
318 ffs_validate(const char *dir, fsnode *root, fsinfo_t *fsopts)
324 ffs_opt_t *ffs_opts = fsopts->fs_specific;
328 assert(fsopts != NULL);
333 ffs_dump_fsinfo(fsopts);
337 if (fsopts->sectorsize == -1)
338 fsopts->sectorsize = DFL_SECSIZE;
340 ffs_opts->fsize = MAX(DFL_FRAGSIZE, fsopts->sectorsize);
347 /* fsopts->density is set below */
366 ffs_size_dir(root, fsopts);
367 fsopts->inodes += UFS_ROOTINO; /* include first two inodes */
371 (long long)fsopts->size, (long long)fsopts->inodes);
374 fsopts->size += fsopts->freeblocks;
375 fsopts->inodes += fsopts->freefiles;
376 if (fsopts->freefilepc > 0)
377 fsopts->inodes =
378 fsopts->inodes * (100 + fsopts->freefilepc) / 100;
379 if (fsopts->freeblockpc > 0)
380 fsopts->size =
381 fsopts->size * (100 + fsopts->freeblockpc) / 100;
389 fsopts->size += (SBLOCK_UFS1 + SBLOCKSIZE) * ncg;
392 fsopts->size += ncg * DINODE1_SIZE *
393 roundup(fsopts->inodes / ncg,
396 fsopts->size += ncg * DINODE2_SIZE *
397 roundup(fsopts->inodes / ncg,
402 fsopts->size =
403 fsopts->size * (100 + ffs_opts->minfree) / 100;
408 if (fsopts->size < fsopts->minsize) /* ensure meets minimum size */
409 fsopts->size = fsopts->minsize;
412 fsopts->size = roundup(fsopts->size, ffs_opts->bsize);
416 ffs_opts->density = fsopts->size / fsopts->inodes + 1;
420 ffs_dump_fsinfo(fsopts);
422 dir, (long long)fsopts->size, (long long)fsopts->inodes);
425 if (fsopts->maxsize > 0 && fsopts->size > fsopts->maxsize) {
428 dir, (long long)fsopts->size, (long long)fsopts->maxsize);
439 printf("fsopts at %p\n", f);
464 ffs_create_image(const char *image, fsinfo_t *fsopts)
477 assert (fsopts != NULL);
480 if (fsopts->offset == 0)
482 if ((fsopts->fd = open(image, oflags, 0666)) == -1) {
489 if (fstatvfs(fsopts->fd, &sfs) == -1) {
498 bufrem = fsopts->size;
500 if (fsopts->sparse) {
501 if (ftruncate(fsopts->fd, bufrem) == -1) {
503 fsopts->sparse = 0;
510 if (fsopts->offset != 0)
511 if (lseek(fsopts->fd, fsopts->offset, SEEK_SET) == -1) {
516 if ((debug & DEBUG_FS_CREATE_IMAGE) && fsopts->sparse == 0)
523 i = write(fsopts->fd, buf, MIN(bufsize, bufrem));
546 fs = ffs_mkfs(image, fsopts, tstamp);
547 fsopts->superblock = (void *)fs;
551 t = (time_t)((struct fs *)fsopts->superblock)->fs_time;
553 fsopts->superblock, ctime(&t));
561 if ((off_t)(fs->fs_cstotal.cs_nifree + UFS_ROOTINO) < fsopts->inodes) {
566 (long long)fsopts->inodes);
569 return (fsopts->fd);
574 ffs_size_dir(fsnode *root, fsinfo_t *fsopts)
579 ffs_opt_t *ffs_opts = fsopts->fs_specific;
582 assert(fsopts != NULL);
587 (long long)fsopts->size, (long long)fsopts->inodes);
608 fsopts->size += roundup((x), ffs_opts->fsize); \
624 fsopts->inodes++;
638 ffs_size_dir(node->child, fsopts);
644 (long long)fsopts->size, (long long)fsopts->inodes);
649 fsnode *root, fsinfo_t *fsopts)
683 ufs_rw32(cur->inode->st.st_rdev, fsopts->needswap);
697 fsnode *root, fsinfo_t *fsopts)
735 ufs_rw64(cur->inode->st.st_rdev, fsopts->needswap);
748 ffs_populate_dir(const char *dir, fsnode *root, fsinfo_t *fsopts)
755 ffs_opt_t *ffs_opts = fsopts->fs_specific;
759 assert(fsopts != NULL);
776 cur->inode->ino = fsopts->curinode;
777 fsopts->curinode++;
780 ffs_make_dirbuf(&dirbuf, cur->name, cur, fsopts->needswap);
784 fsopts->needswap);
797 ffs_dump_dirbuf(&dirbuf, dir, fsopts->needswap);
819 root, fsopts);
822 root, fsopts);
833 ffs_write_file(&din, cur->inode->ino, membuf, fsopts);
835 ffs_write_file(&din, cur->inode->ino, path, fsopts);
838 ffs_write_inode(&din, cur->inode->ino, fsopts);
853 if (! ffs_populate_dir(path, cur->child, fsopts))
868 ffs_write_file(union dinode *din, uint32_t ino, void *buf, fsinfo_t *fsopts)
876 ffs_opt_t *ffs_opts = fsopts->fs_specific;
877 struct vnode vp = { fsopts, NULL };
881 assert (fsopts != NULL);
889 in.i_fs = (struct fs *)fsopts->superblock;
971 ffs_write_inode(&in.i_din, in.i_number, fsopts);
1060 ffs_write_inode(union dinode *dp, uint32_t ino, const fsinfo_t *fsopts)
1071 ffs_opt_t *ffs_opts = fsopts->fs_specific;
1075 assert (fsopts != NULL);
1078 fs = (struct fs *)fsopts->superblock;
1086 fsopts);
1088 if (!cg_chkmagic(cgp, fsopts->needswap))
1092 assert (isclr(cg_inosused(cgp, fsopts->needswap), cgino));
1105 setbit(cg_inosused(cgp, fsopts->needswap), cgino);
1106 ufs_add32(cgp->cg_cs.cs_nifree, -1, fsopts->needswap);
1110 ufs_add32(cgp->cg_cs.cs_ndir, 1, fsopts->needswap);
1118 initediblk = ufs_rw32(cgp->cg_initediblk, fsopts->needswap);
1121 initediblk < ufs_rw32(cgp->cg_niblk, fsopts->needswap)) {
1130 fs->fs_bsize, buf, fsopts);
1132 cgp->cg_initediblk = ufs_rw32(initediblk, fsopts->needswap);
1137 fsopts);
1141 ffs_rdfs(d, fs->fs_bsize, buf, fsopts);
1142 if (fsopts->needswap) {
1155 ffs_wtfs(d, fs->fs_bsize, buf, fsopts);