Lines Matching defs:c

4  * Copyright (c) 2022 The FreeBSD Foundation
228 errx(1, "invalid character '%c' in pool name",
649 struct dnode_cursor *c;
680 c = ecalloc(1, sizeof(*c));
682 c->indspace = nindblks * MAXBLOCKSIZE;
683 c->indloc = objset_space_alloc(zfs, os, &c->indspace);
685 c->dnode = dnode;
686 c->dataoff = 0;
687 c->datablksz = blksz;
689 return (c);
693 _dnode_cursor_flush(zfs_opt_t *zfs, struct dnode_cursor *c, unsigned int levels)
701 assert(levels <= c->dnode->dn_nlevels - 1U);
704 blkid = (c->dataoff / c->datablksz) / BLKPTR_PER_INDIR;
706 buf = c->inddir[level - 1];
708 if (level == c->dnode->dn_nlevels - 1U) {
709 pbp = &c->dnode->dn_blkptr[0];
715 &c->inddir[level][iblkid * sizeof(blkptr_t)];
722 loc = c->indloc;
723 c->indloc += blksz;
724 assert(c->indspace >= blksz);
725 c->indspace -= blksz;
732 vdev_pwrite_dnode_indir(zfs, c->dnode, level, fill, buf, blksz,
741 dnode_cursor_next(zfs_opt_t *zfs, struct dnode_cursor *c, off_t off)
746 if (c->dnode->dn_nlevels == 1) {
748 return (&c->dnode->dn_blkptr[0]);
751 assert(off % c->datablksz == 0);
755 blkid = off / c->datablksz;
756 for (levels = 0; levels < c->dnode->dn_nlevels - 1U; levels++) {
762 _dnode_cursor_flush(zfs, c, levels);
765 c->dataoff = off;
766 l1id = (off / c->datablksz) & (BLKPTR_PER_INDIR - 1);
767 return ((blkptr_t *)&c->inddir[0][l1id * sizeof(blkptr_t)]);
771 dnode_cursor_finish(zfs_opt_t *zfs, struct dnode_cursor *c)
775 assert(c->dnode->dn_nlevels > 0);
776 levels = c->dnode->dn_nlevels - 1;
778 _dnode_cursor_flush(zfs, c, levels);
779 assert(c->indspace == 0);
780 free(c);