Lines Matching refs:zfs

68 static zfs_dsl_dir_t *dsl_dir_alloc(zfs_opt_t *zfs, const char *name);
69 static zfs_dsl_dataset_t *dsl_dataset_alloc(zfs_opt_t *zfs, zfs_dsl_dir_t *dir);
99 dsl_dir_get_mountpoint(zfs_opt_t *zfs, zfs_dsl_dir_t *dir) in dsl_dir_get_mountpoint() argument
136 assert(strstr(mountpoint, zfs->rootpath) == mountpoint); in dsl_dir_get_mountpoint()
155 dsl_dir_set_prop(zfs_opt_t *zfs, zfs_dsl_dir_t *dir, const char *key, in dsl_dir_set_prop() argument
170 if (strcmp(val, zfs->rootpath) != 0 && in dsl_dir_set_prop()
171 strcmp(zfs->rootpath, "/") != 0 && in dsl_dir_set_prop()
172 (strstr(val, zfs->rootpath) != val || in dsl_dir_set_prop()
173 val[strlen(zfs->rootpath)] != '/')) { in dsl_dir_set_prop()
175 "the root path `%s'", val, zfs->rootpath); in dsl_dir_set_prop()
235 dsl_metadir_alloc(zfs_opt_t *zfs, const char *name) in dsl_metadir_alloc() argument
240 (void)easprintf(&path, "%s/%s", zfs->poolname, name); in dsl_metadir_alloc()
241 dir = dsl_dir_alloc(zfs, path); in dsl_metadir_alloc()
247 dsl_origindir_init(zfs_opt_t *zfs) in dsl_origindir_init() argument
252 zfs->origindsldir = dsl_metadir_alloc(zfs, "$ORIGIN"); in dsl_origindir_init()
253 zfs->originds = dsl_dataset_alloc(zfs, zfs->origindsldir); in dsl_origindir_init()
254 zfs->snapds = dsl_dataset_alloc(zfs, zfs->origindsldir); in dsl_origindir_init()
256 clones = objset_dnode_alloc(zfs->mos, DMU_OT_DSL_CLONES, &clonesid); in dsl_origindir_init()
257 zfs->cloneszap = zap_alloc(zfs->mos, clones); in dsl_origindir_init()
258 zfs->origindsldir->phys->dd_clones = clonesid; in dsl_origindir_init()
262 dsl_init(zfs_opt_t *zfs) in dsl_init() argument
270 zfs->rootdsldir = dsl_dir_alloc(zfs, NULL); in dsl_init()
272 zfs->rootds = dsl_dataset_alloc(zfs, zfs->rootdsldir); in dsl_init()
273 zfs->rootdsldir->headds = zfs->rootds; in dsl_init()
275 zfs->mosdsldir = dsl_metadir_alloc(zfs, "$MOS"); in dsl_init()
276 zfs->freedsldir = dsl_metadir_alloc(zfs, "$FREE"); in dsl_init()
277 dsl_origindir_init(zfs); in dsl_init()
283 STAILQ_FOREACH(d, &zfs->datasetdescs, next) { in dsl_init()
289 if (strcmp(dsname, zfs->poolname) == 0) { in dsl_init()
294 dir = zfs->rootdsldir; in dsl_init()
299 if (strstr(dsname, zfs->poolname) != dsname || in dsl_init()
301 (size_t)(next - dsname) != strlen(zfs->poolname)) { in dsl_init()
303 dsname, zfs->poolname); in dsl_init()
305 dir = dsl_dir_alloc(zfs, dsname); in dsl_init()
306 dir->headds = dsl_dataset_alloc(zfs, dir); in dsl_init()
316 dsl_dir_set_prop(zfs, dir, key, val); in dsl_init()
324 if (nvpair_find(zfs->rootdsldir->propsnv, "compression") == NULL) { in dsl_init()
325 (void)nvlist_add_uint64(zfs->rootdsldir->propsnv, in dsl_init()
328 if (nvpair_find(zfs->rootdsldir->propsnv, "mountpoint") == NULL) { in dsl_init()
329 (void)nvlist_add_string(zfs->rootdsldir->propsnv, "mountpoint", in dsl_init()
330 zfs->rootpath); in dsl_init()
347 dsl_dir_foreach_post(zfs_opt_t *zfs, zfs_dsl_dir_t *dsldir, in dsl_dir_foreach_post() argument
353 dsl_dir_foreach_post(zfs, cdsldir, cb, arg); in dsl_dir_foreach_post()
355 cb(zfs, dsldir, arg); in dsl_dir_foreach_post()
362 dsl_dir_foreach(zfs_opt_t *zfs, zfs_dsl_dir_t *dsldir, in dsl_dir_foreach() argument
365 dsl_dir_foreach_post(zfs, dsldir, cb, arg); in dsl_dir_foreach()
385 dsl_dir_alloc(zfs_opt_t *zfs, const char *name) in dsl_dir_alloc() argument
395 dnode = objset_dnode_bonus_alloc(zfs->mos, DMU_OT_DSL_DIR, in dsl_dir_alloc()
399 dnode = objset_dnode_alloc(zfs->mos, DMU_OT_DSL_PROPS, &propsid); in dsl_dir_alloc()
400 dir->propszap = zap_alloc(zfs->mos, dnode); in dsl_dir_alloc()
402 dnode = objset_dnode_alloc(zfs->mos, DMU_OT_DSL_DIR_CHILD_MAP, in dsl_dir_alloc()
404 dir->childzap = zap_alloc(zfs->mos, dnode); in dsl_dir_alloc()
416 dir->name = estrdup(zfs->poolname); in dsl_dir_alloc()
417 dir->fullname = estrdup(zfs->poolname); in dsl_dir_alloc()
421 assert(zfs->rootdsldir == NULL); in dsl_dir_alloc()
422 zfs->rootdsldir = dir; in dsl_dir_alloc()
432 STAILQ_INSERT_HEAD(&l, zfs->rootdsldir, next); in dsl_dir_alloc()
473 dsl_dir_root_finalize(zfs_opt_t *zfs, uint64_t bytes) in dsl_dir_root_finalize() argument
475 dsl_dir_size_add(zfs->mosdsldir, bytes); in dsl_dir_root_finalize()
476 zfs->mosdsldir->phys->dd_used_breakdown[DD_USED_HEAD] += bytes; in dsl_dir_root_finalize()
478 dsl_dir_size_add(zfs->rootdsldir, bytes); in dsl_dir_root_finalize()
479 zfs->rootdsldir->phys->dd_used_breakdown[DD_USED_CHILD] += bytes; in dsl_dir_root_finalize()
526 dsl_dir_finalize(zfs_opt_t *zfs, zfs_dsl_dir_t *dir, void *arg __unused) in dsl_dir_finalize() argument
535 zap_write(zfs, dir->propszap); in dsl_dir_finalize()
536 zap_write(zfs, dir->childzap); in dsl_dir_finalize()
545 snapnames = objset_dnode_alloc(zfs->mos, DMU_OT_DSL_DS_SNAP_MAP, in dsl_dir_finalize()
547 zap_write(zfs, zap_alloc(zfs->mos, snapnames)); in dsl_dir_finalize()
550 dir->phys->dd_clone_parent_obj = zfs->snapds->dsid; in dsl_dir_finalize()
551 headds->phys->ds_prev_snap_obj = zfs->snapds->dsid; in dsl_dir_finalize()
555 zfs->snapds->phys->ds_num_children++; in dsl_dir_finalize()
556 zap_add_uint64_self(zfs->cloneszap, headds->dsid); in dsl_dir_finalize()
572 if (dir == zfs->rootdsldir && cdir == zfs->mosdsldir) in dsl_dir_finalize()
584 dsl_write(zfs_opt_t *zfs) in dsl_write() argument
595 dsl_dir_foreach_post(zfs, zfs->rootdsldir, dsl_dir_finalize, NULL); in dsl_write()
597 snapnames = objset_dnode_alloc(zfs->mos, DMU_OT_DSL_DS_SNAP_MAP, in dsl_write()
599 snapnameszap = zap_alloc(zfs->mos, snapnames); in dsl_write()
600 zap_add_uint64(snapnameszap, "$ORIGIN", zfs->snapds->dsid); in dsl_write()
601 zap_write(zfs, snapnameszap); in dsl_write()
603 zfs->origindsldir->phys->dd_head_dataset_obj = zfs->originds->dsid; in dsl_write()
604 zfs->originds->phys->ds_prev_snap_obj = zfs->snapds->dsid; in dsl_write()
605 zfs->originds->phys->ds_snapnames_zapobj = snapmapid; in dsl_write()
607 zfs->snapds->phys->ds_next_snap_obj = zfs->originds->dsid; in dsl_write()
608 assert(zfs->snapds->phys->ds_num_children > 0); in dsl_write()
609 zfs->snapds->phys->ds_num_children++; in dsl_write()
611 zap_write(zfs, zfs->cloneszap); in dsl_write()
617 dsl_dir_dataset_write(zfs_opt_t *zfs, zfs_objset_t *os, zfs_dsl_dir_t *dir) in dsl_dir_dataset_write() argument
620 objset_write(zfs, os); in dsl_dir_dataset_write()
636 dsl_dataset_alloc(zfs_opt_t *zfs, zfs_dsl_dir_t *dir) in dsl_dataset_alloc() argument
644 dnode = objset_dnode_bonus_alloc(zfs->mos, DMU_OT_DSL_DATASET, in dsl_dataset_alloc()
648 dnode = objset_dnode_bonus_alloc(zfs->mos, DMU_OT_DEADLIST, in dsl_dataset_alloc()
650 zap_write(zfs, zap_alloc(zfs->mos, dnode)); in dsl_dataset_alloc()
655 if (ds != zfs->snapds) in dsl_dataset_alloc()