Lines Matching defs:fsopts

151 ffs_prep_opts(fsinfo_t *fsopts)
158 fsopts->fs_specific = ffs_opts;
174 ffs_cleanup_opts(fsinfo_t *fsopts)
176 if (fsopts->fs_specific)
177 free(fsopts->fs_specific);
181 ffs_parse_opts(const char *option, fsinfo_t *fsopts)
183 ffs_opt_t *ffs_opts = fsopts->fs_specific;
213 assert(fsopts != NULL);
253 ffs_makefs(const char *image, const char *dir, fsnode *root, fsinfo_t *fsopts)
261 assert(fsopts != NULL);
269 ffs_validate(dir, root, fsopts);
273 image, (long long)fsopts->size, (long long)fsopts->inodes);
277 if (ffs_create_image(image, fsopts) == -1)
281 fsopts->curinode = ROOTINO;
289 if (! ffs_populate_dir(dir, root, fsopts))
298 superblock = fsopts->superblock;
306 ffs_write_superblock(fsopts->superblock, fsopts);
307 if (close(fsopts->fd) == -1)
309 fsopts->fd = -1;
317 ffs_validate(const char *dir, fsnode *root, fsinfo_t *fsopts)
323 ffs_opt_t *ffs_opts = fsopts->fs_specific;
327 assert(fsopts != NULL);
332 ffs_dump_fsinfo(fsopts);
336 if (fsopts->sectorsize == -1)
337 fsopts->sectorsize = DFL_SECSIZE;
339 ffs_opts->fsize = MAX(DFL_FRAGSIZE, fsopts->sectorsize);
346 /* fsopts->density is set below */
365 ffs_size_dir(root, fsopts);
366 fsopts->inodes += ROOTINO; /* include first two inodes */
370 (long long)fsopts->size, (long long)fsopts->inodes);
373 fsopts->size += fsopts->freeblocks;
374 fsopts->inodes += fsopts->freefiles;
375 if (fsopts->freefilepc > 0)
376 fsopts->inodes =
377 fsopts->inodes * (100 + fsopts->freefilepc) / 100;
378 if (fsopts->freeblockpc > 0)
379 fsopts->size =
380 fsopts->size * (100 + fsopts->freeblockpc) / 100;
388 fsopts->size += (SBLOCK_UFS1 + SBLOCKSIZE) * ncg;
391 fsopts->size += ncg * DINODE1_SIZE *
392 roundup(fsopts->inodes / ncg,
395 fsopts->size += ncg * DINODE2_SIZE *
396 roundup(fsopts->inodes / ncg,
401 fsopts->size =
402 fsopts->size * (100 + ffs_opts->minfree) / 100;
407 if (fsopts->size < fsopts->minsize) /* ensure meets minimum size */
408 fsopts->size = fsopts->minsize;
411 fsopts->size = roundup(fsopts->size, ffs_opts->bsize);
415 ffs_opts->density = fsopts->size / fsopts->inodes + 1;
419 ffs_dump_fsinfo(fsopts);
421 dir, (long long)fsopts->size, (long long)fsopts->inodes);
423 sectorsize = fsopts->sectorsize; /* XXX - see earlier */
426 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)
475 assert (fsopts != NULL);
478 if ((fsopts->fd = open(image, O_RDWR | O_CREAT | O_TRUNC, 0666))
486 if (fstatvfs(fsopts->fd, &sfs) == -1) {
495 bufrem = fsopts->size;
496 if (fsopts->sparse) {
497 if (ftruncate(fsopts->fd, bufrem) == -1) {
499 fsopts->sparse = 0;
502 if (fsopts->sparse) {
517 i = write(fsopts->fd, buf, MIN(bufsize, bufrem));
532 fs = ffs_mkfs(image, fsopts);
533 fsopts->superblock = (void *)fs;
537 t = (time_t)((struct fs *)fsopts->superblock)->fs_time;
539 fsopts->superblock, ctime(&t));
547 if (fs->fs_cstotal.cs_nifree + ROOTINO < fsopts->inodes) {
552 (long long)fsopts->inodes);
555 return (fsopts->fd);
560 ffs_size_dir(fsnode *root, fsinfo_t *fsopts)
565 ffs_opt_t *ffs_opts = fsopts->fs_specific;
568 assert(fsopts != NULL);
573 (long long)fsopts->size, (long long)fsopts->inodes);
594 fsopts->size += roundup((x), ffs_opts->fsize); \
610 fsopts->inodes++;
624 ffs_size_dir(node->child, fsopts);
630 (long long)fsopts->size, (long long)fsopts->inodes);
635 fsnode *root, fsinfo_t *fsopts)
669 ufs_rw32(cur->inode->st.st_rdev, fsopts->needswap);
683 fsnode *root, fsinfo_t *fsopts)
721 ufs_rw64(cur->inode->st.st_rdev, fsopts->needswap);
734 ffs_populate_dir(const char *dir, fsnode *root, fsinfo_t *fsopts)
741 ffs_opt_t *ffs_opts = fsopts->fs_specific;
745 assert(fsopts != NULL);
762 cur->inode->ino = fsopts->curinode;
763 fsopts->curinode++;
766 ffs_make_dirbuf(&dirbuf, cur->name, cur, fsopts->needswap);
770 fsopts->needswap);
783 ffs_dump_dirbuf(&dirbuf, dir, fsopts->needswap);
807 root, fsopts);
810 root, fsopts);
821 ffs_write_file(&din, cur->inode->ino, membuf, fsopts);
824 (cur->contents) ? cur->contents : path, fsopts);
827 ffs_write_inode(&din, cur->inode->ino, fsopts);
842 if (! ffs_populate_dir(path, cur->child, fsopts))
857 ffs_write_file(union dinode *din, uint32_t ino, void *buf, fsinfo_t *fsopts)
865 ffs_opt_t *ffs_opts = fsopts->fs_specific;
869 assert (fsopts != NULL);
877 in.i_fs = (struct fs *)fsopts->superblock;
898 in.i_fd = fsopts->fd;
961 ffs_write_inode(&in.i_din, in.i_number, fsopts);
1051 ffs_write_inode(union dinode *dp, uint32_t ino, const fsinfo_t *fsopts)
1062 ffs_opt_t *ffs_opts = fsopts->fs_specific;
1066 assert (fsopts != NULL);
1069 fs = (struct fs *)fsopts->superblock;
1077 fsopts);
1079 if (!cg_chkmagic_swap(cgp, fsopts->needswap))
1082 assert (isclr(cg_inosused_swap(cgp, fsopts->needswap), cgino));
1098 setbit(cg_inosused_swap(cgp, fsopts->needswap), cgino);
1099 ufs_add32(cgp->cg_cs.cs_nifree, -1, fsopts->needswap);
1103 ufs_add32(cgp->cg_cs.cs_ndir, 1, fsopts->needswap);
1111 initediblk = ufs_rw32(cgp->cg_initediblk, fsopts->needswap);
1113 initediblk < ufs_rw32(cgp->cg_niblk, fsopts->needswap)) {
1123 fs->fs_bsize, buf, fsopts);
1125 cgp->cg_initediblk = ufs_rw32(initediblk, fsopts->needswap);
1130 fsopts);
1134 ffs_rdfs(d, fs->fs_bsize, buf, fsopts);
1135 if (fsopts->needswap) {
1148 ffs_wtfs(d, fs->fs_bsize, buf, fsopts);