Lines Matching refs:fsopts
162 ffs_prep_opts(fsinfo_t *fsopts)
209 fsopts->fs_specific = ffs_opts;
210 fsopts->fs_options = copy_opts(ffs_options);
214 ffs_cleanup_opts(fsinfo_t *fsopts)
216 free(fsopts->fs_specific);
217 free(fsopts->fs_options);
221 ffs_parse_opts(const char *option, fsinfo_t *fsopts)
223 ffs_opt_t *ffs_opts = fsopts->fs_specific;
224 option_t *ffs_options = fsopts->fs_options;
230 assert(fsopts != NULL);
262 ffs_makefs(const char *image, const char *dir, fsnode *root, fsinfo_t *fsopts)
270 assert(fsopts != NULL);
278 ffs_validate(dir, root, fsopts);
282 image, (long long)fsopts->size, (long long)fsopts->inodes);
286 if (ffs_create_image(image, fsopts) == -1)
290 fsopts->curinode = UFS_ROOTINO;
298 if (! ffs_populate_dir(dir, root, fsopts))
307 superblock = fsopts->superblock;
315 ffs_write_superblock(fsopts->superblock, fsopts);
316 if (close(fsopts->fd) == -1)
318 fsopts->fd = -1;
326 ffs_validate(const char *dir, fsnode *root, fsinfo_t *fsopts)
332 ffs_opt_t *ffs_opts = fsopts->fs_specific;
336 assert(fsopts != NULL);
341 ffs_dump_fsinfo(fsopts);
345 if (fsopts->sectorsize == -1)
346 fsopts->sectorsize = DFL_SECSIZE;
348 ffs_opts->fsize = MAX(DFL_FRAGSIZE, fsopts->sectorsize);
355 /* fsopts->density is set below */
374 ffs_size_dir(root, fsopts);
375 fsopts->inodes += UFS_ROOTINO; /* include first two inodes */
379 (long long)fsopts->size, (long long)fsopts->inodes);
382 fsopts->size += fsopts->freeblocks;
383 fsopts->inodes += fsopts->freefiles;
384 if (fsopts->freefilepc > 0)
385 fsopts->inodes =
386 fsopts->inodes * (100 + fsopts->freefilepc) / 100;
387 if (fsopts->freeblockpc > 0)
388 fsopts->size =
389 fsopts->size * (100 + fsopts->freeblockpc) / 100;
397 fsopts->size += (SBLOCK_UFS1 + SBLOCKSIZE) * ncg;
400 fsopts->size += ncg * DINODE1_SIZE *
401 roundup(fsopts->inodes / ncg,
404 fsopts->size += ncg * DINODE2_SIZE *
405 roundup(fsopts->inodes / ncg,
410 fsopts->size =
411 fsopts->size * (100 + ffs_opts->minfree) / 100;
416 if (fsopts->size < fsopts->minsize) /* ensure meets minimum size */
417 fsopts->size = fsopts->minsize;
420 fsopts->size = roundup(fsopts->size, ffs_opts->bsize);
424 ffs_opts->density = fsopts->size / fsopts->inodes + 1;
428 ffs_dump_fsinfo(fsopts);
430 dir, (long long)fsopts->size, (long long)fsopts->inodes);
433 if (fsopts->maxsize > 0 && fsopts->size > fsopts->maxsize) {
436 dir, (long long)fsopts->size, (long long)fsopts->maxsize);
447 printf("fsopts at %p\n", f);
472 ffs_create_image(const char *image, fsinfo_t *fsopts)
485 assert (fsopts != NULL);
488 if (fsopts->offset == 0)
490 if ((fsopts->fd = open(image, oflags, 0666)) == -1) {
497 if (fstatvfs(fsopts->fd, &sfs) == -1) {
506 bufrem = fsopts->size;
508 if (fsopts->sparse) {
509 if (ftruncate(fsopts->fd, bufrem) == -1) {
511 fsopts->sparse = 0;
518 if (fsopts->offset != 0)
519 if (lseek(fsopts->fd, fsopts->offset, SEEK_SET) == -1) {
524 if ((debug & DEBUG_FS_CREATE_IMAGE) && fsopts->sparse == 0)
531 i = write(fsopts->fd, buf, MIN(bufsize, bufrem));
554 fs = ffs_mkfs(image, fsopts, tstamp);
555 fsopts->superblock = (void *)fs;
559 t = (time_t)((struct fs *)fsopts->superblock)->fs_time;
561 fsopts->superblock, ctime(&t));
569 if ((off_t)(fs->fs_cstotal.cs_nifree + UFS_ROOTINO) < fsopts->inodes) {
574 (long long)fsopts->inodes);
577 return (fsopts->fd);
582 ffs_size_dir(fsnode *root, fsinfo_t *fsopts)
587 ffs_opt_t *ffs_opts = fsopts->fs_specific;
590 assert(fsopts != NULL);
595 (long long)fsopts->size, (long long)fsopts->inodes);
617 fsopts->size += roundup((x), ffs_opts->fsize); \
633 fsopts->inodes++;
648 ffs_size_dir(node->child, fsopts);
654 (long long)fsopts->size, (long long)fsopts->inodes);
659 fsnode *root, fsinfo_t *fsopts)
664 ffs_opt_t *ffs_opts = fsopts->fs_specific;
694 ufs_rw32(cur->inode->st.st_rdev, fsopts->needswap);
709 fsnode *root, fsinfo_t *fsopts)
747 ufs_rw64(cur->inode->st.st_rdev, fsopts->needswap);
760 ffs_populate_dir(const char *dir, fsnode *root, fsinfo_t *fsopts)
767 ffs_opt_t *ffs_opts = fsopts->fs_specific;
771 assert(fsopts != NULL);
788 cur->inode->ino = fsopts->curinode;
789 fsopts->curinode++;
792 ffs_make_dirbuf(&dirbuf, cur->name, cur, fsopts);
796 fsopts);
809 ffs_dump_dirbuf(&dirbuf, dir, fsopts);
831 root, fsopts);
834 root, fsopts);
845 ffs_write_file(&din, cur->inode->ino, membuf, fsopts);
847 ffs_write_file(&din, cur->inode->ino, path, fsopts);
850 ffs_write_inode(&din, cur->inode->ino, fsopts);
865 if (! ffs_populate_dir(path, cur->child, fsopts))
880 ffs_write_file(union dinode *din, uint32_t ino, void *buf, fsinfo_t *fsopts)
888 ffs_opt_t *ffs_opts = fsopts->fs_specific;
889 struct vnode vp = { fsopts, NULL };
893 assert (fsopts != NULL);
901 in.i_fs = (struct fs *)fsopts->superblock;
983 ffs_write_inode(&in.i_din, in.i_number, fsopts);
994 ffs_dump_dirbuf(dirbuf_t *dbuf, const char *dir, const fsinfo_t *fsopts)
1000 const int needswap = fsopts->needswap;
1001 const ffs_opt_t *ffs_opts = fsopts->fs_specific;
1028 const fsinfo_t *fsopts)
1034 const int needswap = fsopts->needswap;
1035 const ffs_opt_t *ffs_opts = fsopts->fs_specific;
1093 ffs_write_inode(union dinode *dp, uint32_t ino, const fsinfo_t *fsopts)
1104 ffs_opt_t *ffs_opts = fsopts->fs_specific;
1108 assert (fsopts != NULL);
1111 fs = (struct fs *)fsopts->superblock;
1119 fsopts);
1121 if (!cg_chkmagic(cgp, fsopts->needswap))
1125 assert (isclr(cg_inosused(cgp, fsopts->needswap), cgino));
1138 setbit(cg_inosused(cgp, fsopts->needswap), cgino);
1139 ufs_add32(cgp->cg_cs.cs_nifree, -1, fsopts->needswap);
1143 ufs_add32(cgp->cg_cs.cs_ndir, 1, fsopts->needswap);
1151 initediblk = ufs_rw32(cgp->cg_initediblk, fsopts->needswap);
1154 initediblk < ufs_rw32(cgp->cg_niblk, fsopts->needswap)) {
1163 fs->fs_bsize, buf, fsopts);
1165 cgp->cg_initediblk = ufs_rw32(initediblk, fsopts->needswap);
1170 fsopts);
1174 ffs_rdfs(d, fs->fs_bsize, buf, fsopts);
1175 if (fsopts->needswap) {
1188 ffs_wtfs(d, fs->fs_bsize, buf, fsopts);