Lines Matching refs:zfs
82 vdev_pwrite(const zfs_opt_t *zfs, const void *buf, size_t len, off_t off) in vdev_pwrite() argument
86 assert(off >= 0 && off < zfs->asize); in vdev_pwrite()
89 off + (off_t)len < zfs->asize); in vdev_pwrite()
90 if (zfs->spacemap != NULL) { in vdev_pwrite()
97 assert(bit_ntest(zfs->spacemap, off >> zfs->ashift, in vdev_pwrite()
98 (off + len - 1) >> zfs->ashift, 1)); in vdev_pwrite()
103 n = pwrite(zfs->fd, (const char *)buf + sofar, len - sofar, in vdev_pwrite()
112 vdev_pwrite_data(zfs_opt_t *zfs, uint8_t datatype, uint8_t cksumtype, in vdev_pwrite_data() argument
122 vdev_pwrite(zfs, data, sz, loc); in vdev_pwrite_data()
126 vdev_pwrite_dnode_indir(zfs_opt_t *zfs, dnode_phys_t *dnode, uint8_t level, in vdev_pwrite_dnode_indir() argument
129 vdev_pwrite_data(zfs, dnode->dn_type, dnode->dn_checksum, level, fill, in vdev_pwrite_dnode_indir()
137 vdev_pwrite_dnode_data(zfs_opt_t *zfs, dnode_phys_t *dnode, const void *data, in vdev_pwrite_dnode_data() argument
140 vdev_pwrite_dnode_indir(zfs, dnode, 0, 1, data, sz, loc, in vdev_pwrite_dnode_data()
163 vdev_label_write(zfs_opt_t *zfs, int ind, const vdev_label_t *labelp) in vdev_label_write() argument
180 loff = zfs->vdevsize - (VDEV_LABELS - ind) * sizeof(*label); in vdev_label_write()
202 blksz = 1 << zfs->ashift; in vdev_label_write()
211 n = pwrite(zfs->fd, label, sizeof(*label), loff); in vdev_label_write()
235 vdev_space_alloc(zfs_opt_t *zfs, off_t *lenp) in vdev_space_alloc() argument
240 minblksz = 1 << zfs->ashift; in vdev_space_alloc()
256 bit_ffc_area_at(zfs->spacemap, loc, zfs->spacemapbits, nbits, in vdev_space_alloc()
266 bit_nset(zfs->spacemap, loc, loc + nbits - 1); in vdev_space_alloc()
269 return ((off_t)loc << zfs->ashift); in vdev_space_alloc()
273 vdev_spacemap_init(zfs_opt_t *zfs) in vdev_spacemap_init() argument
277 assert(powerof2(zfs->mssize)); in vdev_spacemap_init()
279 nbits = rounddown2(zfs->asize, zfs->mssize) >> zfs->ashift; in vdev_spacemap_init()
287 zfs->spacemapbits = (int)nbits; in vdev_spacemap_init()
288 zfs->spacemap = bit_alloc(zfs->spacemapbits); in vdev_spacemap_init()
289 if (zfs->spacemap == NULL) in vdev_spacemap_init()
294 vdev_spacemap_write(zfs_opt_t *zfs) in vdev_spacemap_write() argument
307 objarrblksz = sizeof(uint64_t) * zfs->mscount; in vdev_spacemap_write()
309 objarrloc = objset_space_alloc(zfs, zfs->mos, &objarrblksz); in vdev_spacemap_write()
312 objarr = objset_dnode_lookup(zfs->mos, zfs->objarrid); in vdev_spacemap_write()
319 smblksz = 1 << zfs->ashift; in vdev_spacemap_write()
325 sma = ecalloc(zfs->mscount, sizeof(*sma)); in vdev_spacemap_write()
326 for (uint64_t i = 0; i < zfs->mscount; i++) { in vdev_spacemap_write()
327 sma[i].dnode = objset_dnode_bonus_alloc(zfs->mos, in vdev_spacemap_write()
330 sma[i].loc = objset_space_alloc(zfs, zfs->mos, &smblksz); in vdev_spacemap_write()
332 spacemap = zfs->spacemap; in vdev_spacemap_write()
333 zfs->spacemap = NULL; in vdev_spacemap_write()
339 for (uint64_t i = 0; i < zfs->mscount; i++) { in vdev_spacemap_write()
355 shift = zfs->msshift - zfs->ashift; in vdev_spacemap_write()
362 bit_ffs_at(spacemap, srunb, zfs->spacemapbits, &srunb); in vdev_spacemap_write()
366 bit_ffc_at(spacemap, srunb, zfs->spacemapbits, &erunb); in vdev_spacemap_write()
385 alloc += runlen << zfs->ashift; in vdev_spacemap_write()
393 vdev_pwrite_dnode_data(zfs, sma[i].dnode, smblk, smblksz, in vdev_spacemap_write()
404 vdev_pwrite_dnode_data(zfs, objarr, objarrblk, objarrblksz, objarrloc); in vdev_spacemap_write()
407 assert(zfs->spacemap == NULL); in vdev_spacemap_write()
413 vdev_init(zfs_opt_t *zfs, const char *image) in vdev_init() argument
415 assert(zfs->ashift >= MINBLOCKSHIFT); in vdev_init()
417 zfs->fd = open(image, O_RDWR | O_CREAT | O_TRUNC, 0644); in vdev_init()
418 if (zfs->fd == -1) in vdev_init()
420 if (ftruncate(zfs->fd, zfs->vdevsize) != 0) in vdev_init()
423 vdev_spacemap_init(zfs); in vdev_init()
427 vdev_fini(zfs_opt_t *zfs) in vdev_fini() argument
429 assert(zfs->spacemap == NULL); in vdev_fini()
431 if (zfs->fd != -1) { in vdev_fini()
432 if (close(zfs->fd) != 0) in vdev_fini()
434 zfs->fd = -1; in vdev_fini()