Lines Matching defs:zfs

48 #include "zfs.h"
74 zfs_opt_t *zfs;
78 zfs = aligned_alloc(align, roundup2(sizeof(*zfs), align));
79 if (zfs == NULL)
81 memset(zfs, 0, sizeof(*zfs));
84 { '\0', "bootfs", &zfs->bootfs, OPT_STRPTR,
86 { '\0', "mssize", &zfs->mssize, OPT_INT64,
88 { '\0', "poolname", &zfs->poolname, OPT_STRPTR,
90 { '\0', "rootpath", &zfs->rootpath, OPT_STRPTR,
92 { '\0', "ashift", &zfs->ashift, OPT_INT32,
94 { '\0', "verify-txgs", &zfs->verify_txgs, OPT_BOOL,
96 { '\0', "nowarn", &zfs->nowarn, OPT_BOOL,
101 STAILQ_INIT(&zfs->datasetdescs);
103 fsopts->fs_specific = zfs;
110 zfs_opt_t *zfs;
115 zfs = fsopts->fs_specific;
130 STAILQ_INSERT_TAIL(&zfs->datasetdescs, dsdesc, next);
142 zfs_opt_t *zfs;
145 zfs = fsopts->fs_specific;
148 assert(zfs->ashift != 0);
153 vdevsize = rounddown2(fsopts->maxsize, 1 << zfs->ashift);
158 1 << zfs->ashift);
175 mssize = zfs->mssize;
197 zfs->asize = asize;
198 zfs->vdevsize = vdevsize;
199 zfs->mssize = mssize;
200 zfs->msshift = flsll(mssize) - 1;
201 zfs->mscount = asize / mssize;
210 zfs_opt_t *zfs;
212 zfs = fsopts->fs_specific;
219 if (zfs->poolname == NULL)
221 if (!isalpha(zfs->poolname[0]))
223 for (size_t i = 0, len = strlen(zfs->poolname); i < len; i++) {
224 if (!isalnum(zfs->poolname[i]) && zfs->poolname[i] != '_')
226 zfs->poolname[i]);
228 if (strcmp(zfs->poolname, "mirror") == 0 ||
229 strcmp(zfs->poolname, "raidz") == 0 ||
230 strcmp(zfs->poolname, "draid") == 0) {
232 zfs->poolname);
235 if (zfs->rootpath == NULL)
236 easprintf(&zfs->rootpath, "/%s", zfs->poolname);
237 if (zfs->rootpath[0] != '/')
238 errx(1, "mountpoint `%s' must be absolute", zfs->rootpath);
240 if (zfs->ashift == 0)
241 zfs->ashift = 12;
250 zfs_opt_t *zfs;
252 zfs = fsopts->fs_specific;
253 free(zfs->rootpath);
254 free(zfs->bootfs);
255 free(__DECONST(void *, zfs->poolname));
256 STAILQ_FOREACH_SAFE(d, &zfs->datasetdescs, next, tmp) {
260 free(zfs);
296 pool_config_nvcreate(zfs_opt_t *zfs)
304 nvlist_add_string(poolnv, ZPOOL_CONFIG_POOL_NAME, zfs->poolname);
305 nvlist_add_uint64(poolnv, ZPOOL_CONFIG_POOL_GUID, zfs->poolguid);
306 nvlist_add_uint64(poolnv, ZPOOL_CONFIG_TOP_GUID, zfs->vdevguid);
307 nvlist_add_uint64(poolnv, ZPOOL_CONFIG_GUID, zfs->vdevguid);
318 pool_disk_vdev_config_nvcreate(zfs_opt_t *zfs)
322 assert(zfs->objarrid != 0);
326 nvlist_add_uint64(diskvdevnv, ZPOOL_CONFIG_ASHIFT, zfs->ashift);
327 nvlist_add_uint64(diskvdevnv, ZPOOL_CONFIG_ASIZE, zfs->asize);
328 nvlist_add_uint64(diskvdevnv, ZPOOL_CONFIG_GUID, zfs->vdevguid);
334 zfs->objarrid);
336 zfs->msshift);
342 pool_root_vdev_config_nvcreate(zfs_opt_t *zfs)
346 diskvdevnv = pool_disk_vdev_config_nvcreate(zfs);
350 nvlist_add_uint64(rootvdevnv, ZPOOL_CONFIG_GUID, zfs->poolguid);
368 pool_init_objdir_config(zfs_opt_t *zfs, zfs_zap_t *objdir)
377 dnode = objset_dnode_bonus_alloc(zfs->mos, DMU_OT_PACKED_NVLIST,
380 poolconfig = pool_config_nvcreate(zfs);
382 vdevconfig = pool_root_vdev_config_nvcreate(zfs);
391 configloc = objset_space_alloc(zfs, zfs->mos, &configblksz);
395 vdev_pwrite_dnode_data(zfs, dnode, configbuf, configblksz, configloc);
413 pool_init_objdir_bplists(zfs_opt_t *zfs __unused, zfs_zap_t *objdir)
417 (void)objset_dnode_bonus_alloc(zfs->mos, DMU_OT_BPOBJ, DMU_OT_BPOBJ_HDR,
421 (void)objset_dnode_bonus_alloc(zfs->mos, DMU_OT_BPOBJ, DMU_OT_BPOBJ_HDR,
431 pool_init_objdir_feature_maps(zfs_opt_t *zfs, zfs_zap_t *objdir)
436 dnode = objset_dnode_alloc(zfs->mos, DMU_OTN_ZAP_METADATA, &dnid);
438 zap_write(zfs, zap_alloc(zfs->mos, dnode));
440 dnode = objset_dnode_alloc(zfs->mos, DMU_OTN_ZAP_METADATA, &dnid);
442 zap_write(zfs, zap_alloc(zfs->mos, dnode));
444 dnode = objset_dnode_alloc(zfs->mos, DMU_OTN_ZAP_METADATA, &dnid);
446 zap_write(zfs, zap_alloc(zfs->mos, dnode));
450 pool_init_objdir_dsl(zfs_opt_t *zfs, zfs_zap_t *objdir)
453 dsl_dir_id(zfs->rootdsldir));
457 pool_init_objdir_poolprops(zfs_opt_t *zfs, zfs_zap_t *objdir)
462 dnode = objset_dnode_alloc(zfs->mos, DMU_OT_POOL_PROPS, &id);
465 zfs->poolprops = zap_alloc(zfs->mos, dnode);
473 pool_init_objdir(zfs_opt_t *zfs)
478 objdir = objset_dnode_lookup(zfs->mos, DMU_POOL_DIRECTORY_OBJECT);
480 zap = zap_alloc(zfs->mos, objdir);
481 pool_init_objdir_config(zfs, zap);
482 pool_init_objdir_bplists(zfs, zap);
483 pool_init_objdir_feature_maps(zfs, zap);
484 pool_init_objdir_dsl(zfs, zap);
485 pool_init_objdir_poolprops(zfs, zap);
486 zap_write(zfs, zap);
540 * L-> space map n (zfs->mscount)
546 pool_init(zfs_opt_t *zfs)
550 zfs->poolguid = randomguid();
551 zfs->vdevguid = randomguid();
553 zfs->mos = objset_alloc(zfs, DMU_OST_META);
555 (void)objset_dnode_alloc(zfs->mos, DMU_OT_OBJECT_DIRECTORY, &dnid);
558 (void)objset_dnode_alloc(zfs->mos, DMU_OT_OBJECT_ARRAY, &zfs->objarrid);
560 dsl_init(zfs);
562 pool_init_objdir(zfs);
566 pool_labels_write(zfs_opt_t *zfs)
578 poolconfig = pool_config_nvcreate(zfs);
579 vdevconfig = pool_disk_vdev_config_nvcreate(zfs);
595 uoff += (1 << zfs->ashift)) {
609 if (!zfs->verify_txgs)
611 ub->ub_guid_sum = zfs->poolguid + zfs->vdevguid;
619 objset_root_blkptr_copy(zfs->mos, &ub->ub_rootbp);
627 vdev_label_write(zfs, i, label);
633 pool_fini(zfs_opt_t *zfs)
635 zap_write(zfs, zfs->poolprops);
636 dsl_write(zfs);
637 objset_write(zfs, zfs->mos);
638 pool_labels_write(zfs);
642 dnode_cursor_init(zfs_opt_t *zfs, zfs_objset_t *os, dnode_phys_t *dnode,
653 blksz = MIN(MAXBLOCKSIZE, MAX(1 << zfs->ashift,
679 c->indloc = objset_space_alloc(zfs, os, &c->indspace);
689 _dnode_cursor_flush(zfs_opt_t *zfs, struct dnode_cursor *c, unsigned int levels)
728 vdev_pwrite_dnode_indir(zfs, c->dnode, level, fill, buf, blksz,
737 dnode_cursor_next(zfs_opt_t *zfs, struct dnode_cursor *c, off_t off)
758 _dnode_cursor_flush(zfs, c, levels);
767 dnode_cursor_finish(zfs_opt_t *zfs, struct dnode_cursor *c)
774 _dnode_cursor_flush(zfs, c, levels);
782 zfs_opt_t *zfs;
785 zfs = fsopts->fs_specific;
799 vdev_init(zfs, image);
800 pool_init(zfs);
801 fs_build(zfs, dirfd, root);
802 pool_fini(zfs);
803 vdev_fini(zfs);