• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /freebsd-13-stable/sys/contrib/openzfs/module/zfs/

Lines Matching defs:sio

270 #define	SIO_SET_OFFSET(sio, x)		DVA_SET_OFFSET(&(sio)->sio_dva[0], x)
271 #define SIO_SET_ASIZE(sio, x) DVA_SET_ASIZE(&(sio)->sio_dva[0], x)
272 #define SIO_GET_OFFSET(sio) DVA_GET_OFFSET(&(sio)->sio_dva[0])
273 #define SIO_GET_ASIZE(sio) DVA_GET_ASIZE(&(sio)->sio_dva[0])
274 #define SIO_GET_END_OFFSET(sio) \
275 (SIO_GET_OFFSET(sio) + SIO_GET_ASIZE(sio))
276 #define SIO_GET_MUSED(sio) \
277 (sizeof (scan_io_t) + ((sio)->sio_nr_dvas * sizeof (dva_t)))
321 scan_io_t *sio);
328 /* sio->sio_nr_dvas must be set so we know which cache to free from */
330 sio_free(scan_io_t *sio)
332 ASSERT3U(sio->sio_nr_dvas, >, 0);
333 ASSERT3U(sio->sio_nr_dvas, <=, SPA_DVAS_PER_BP);
335 kmem_cache_free(sio_cache[sio->sio_nr_dvas - 1], sio);
338 /* It is up to the caller to set sio->sio_nr_dvas for freeing */
393 sio2bp(const scan_io_t *sio, blkptr_t *bp)
396 bp->blk_prop = sio->sio_blk_prop;
397 bp->blk_phys_birth = sio->sio_phys_birth;
398 bp->blk_birth = sio->sio_birth;
400 bp->blk_cksum = sio->sio_cksum;
402 ASSERT3U(sio->sio_nr_dvas, >, 0);
403 ASSERT3U(sio->sio_nr_dvas, <=, SPA_DVAS_PER_BP);
405 bcopy(sio->sio_dva, bp->blk_dva, sio->sio_nr_dvas * sizeof (dva_t));
409 bp2sio(const blkptr_t *bp, scan_io_t *sio, int dva_i)
411 sio->sio_blk_prop = bp->blk_prop;
412 sio->sio_phys_birth = bp->blk_phys_birth;
413 sio->sio_birth = bp->blk_birth;
414 sio->sio_cksum = bp->blk_cksum;
415 sio->sio_nr_dvas = BP_GET_NDVAS(bp);
418 * Copy the DVAs to the sio. We need all copies of the block so
421 * in the sio since this is the primary one that we want to issue.
423 for (int i = 0, j = dva_i; i < sio->sio_nr_dvas; i++, j++) {
424 sio->sio_dva[i] = bp->blk_dva[j % sio->sio_nr_dvas];
2568 * However, dsl_scan_sync() expects that no new sio's will
2571 * completed. This check ensures we do not issue new sio's
2828 scan_io_t *sio;
2832 while ((sio = list_head(io_list)) != NULL) {
2840 sio2bp(sio, &bp);
2841 bytes_issued += SIO_GET_ASIZE(sio);
2842 scan_exec_io(scn->scn_dp, &bp, sio->sio_flags,
2843 &sio->sio_zb, queue);
2846 sio_free(sio);
2864 scan_io_t *srch_sio, *sio, *next_sio;
2880 sio = avl_find(&queue->q_sios_by_addr, srch_sio, &idx);
2883 if (sio == NULL)
2884 sio = avl_nearest(&queue->q_sios_by_addr, idx, AVL_AFTER);
2886 while (sio != NULL && SIO_GET_OFFSET(sio) < rs_get_end(rs,
2888 ASSERT3U(SIO_GET_OFFSET(sio), >=, rs_get_start(rs,
2890 ASSERT3U(SIO_GET_END_OFFSET(sio), <=, rs_get_end(rs,
2893 next_sio = AVL_NEXT(&queue->q_sios_by_addr, sio);
2894 avl_remove(&queue->q_sios_by_addr, sio);
2895 queue->q_sio_memused -= SIO_GET_MUSED(sio);
2897 bytes_issued += SIO_GET_ASIZE(sio);
2899 list_insert_tail(list, sio);
2900 sio = next_sio;
2909 if (sio != NULL && SIO_GET_OFFSET(sio) < rs_get_end(rs,
2914 SIO_GET_OFFSET(sio), rs_get_end(rs,
2915 queue->q_exts_by_addr) - SIO_GET_OFFSET(sio));
3012 scan_io_t *sio = NULL;
3057 * queue lock. The sio queue won't be updated by
3081 while ((sio = list_head(&sio_list)) != NULL) {
3082 list_remove(&sio_list, sio);
3083 scan_io_queue_insert_impl(queue, sio);
3848 scan_io_queue_insert_impl(dsl_scan_io_queue_t *queue, scan_io_t *sio)
3851 int64_t asize = SIO_GET_ASIZE(sio);
3856 if (avl_find(&queue->q_sios_by_addr, sio, &idx) != NULL) {
3859 sio_free(sio);
3862 avl_insert(&queue->q_sios_by_addr, sio, idx);
3863 queue->q_sio_memused += SIO_GET_MUSED(sio);
3864 range_tree_add(queue->q_exts_by_addr, SIO_GET_OFFSET(sio), asize);
3878 scan_io_t *sio = sio_alloc(BP_GET_NDVAS(bp));
3883 bp2sio(bp, sio, dva_i);
3884 sio->sio_flags = zio_flags;
3885 sio->sio_zb = *zb;
3892 atomic_add_64(&scn->scn_bytes_pending, SIO_GET_ASIZE(sio));
3894 scan_io_queue_insert_impl(queue, sio);
4164 scan_io_t *sio;
4170 while ((sio = avl_destroy_nodes(&queue->q_sios_by_addr, &cookie)) !=
4173 SIO_GET_OFFSET(sio), SIO_GET_ASIZE(sio)));
4174 bytes_dequeued += SIO_GET_ASIZE(sio);
4175 queue->q_sio_memused -= SIO_GET_MUSED(sio);
4176 sio_free(sio);
4234 scan_io_t *srch_sio, *sio;
4272 sio = avl_find(&queue->q_sios_by_addr, srch_sio, &idx);
4275 if (sio != NULL) {
4276 int64_t asize = SIO_GET_ASIZE(sio);
4280 ASSERT3U(start, ==, SIO_GET_OFFSET(sio));
4282 avl_remove(&queue->q_sios_by_addr, sio);
4283 queue->q_sio_memused -= SIO_GET_MUSED(sio);
4296 sio2bp(sio, &tmpbp);
4299 sio_free(sio);