32 #include <sys/dsl_prop.h> |
32 #include <sys/dsl_prop.h> |
33 #include <sys/dsl_pool.h> |
33 #include <sys/dsl_pool.h> |
34 #include <sys/dsl_synctask.h> |
34 #include <sys/dsl_synctask.h> |
35 #include <sys/dnode.h> |
35 #include <sys/dnode.h> |
36 #include <sys/dbuf.h> |
36 #include <sys/dbuf.h> |
|
37 #include <sys/zvol.h> |
37 #include <sys/dmu_tx.h> |
38 #include <sys/dmu_tx.h> |
38 #include <sys/zio_checksum.h> |
39 #include <sys/zio_checksum.h> |
39 #include <sys/zap.h> |
40 #include <sys/zap.h> |
40 #include <sys/zil.h> |
41 #include <sys/zil.h> |
41 #include <sys/dmu_impl.h> |
42 #include <sys/dmu_impl.h> |
719 dsl_dataset_block_born(os->os_dsl_dataset, zio->io_bp, |
720 dsl_dataset_block_born(os->os_dsl_dataset, zio->io_bp, |
720 os->os_synctx); |
721 os->os_synctx); |
721 } |
722 } |
722 } |
723 } |
723 |
724 |
724 |
|
725 /* called from dsl */ |
725 /* called from dsl */ |
726 void |
726 void |
727 dmu_objset_sync(objset_impl_t *os, dmu_tx_t *tx) |
727 dmu_objset_sync(objset_impl_t *os, dmu_tx_t *tx) |
728 { |
728 { |
729 extern taskq_t *dbuf_tq; |
729 extern taskq_t *dbuf_tq; |
781 taskq_wait(dbuf_tq); |
781 taskq_wait(dbuf_tq); |
782 os->os_synctx = NULL; |
782 os->os_synctx = NULL; |
783 } |
783 } |
784 |
784 |
785 void |
785 void |
786 dmu_objset_stats(objset_t *os, dmu_objset_stats_t *dds) |
786 dmu_objset_space(objset_t *os, uint64_t *refdbytesp, uint64_t *availbytesp, |
787 { |
787 uint64_t *usedobjsp, uint64_t *availobjsp) |
788 if (os->os->os_dsl_dataset != NULL) { |
788 { |
789 dsl_dataset_stats(os->os->os_dsl_dataset, dds); |
789 dsl_dataset_space(os->os->os_dsl_dataset, refdbytesp, availbytesp, |
790 } else { |
790 usedobjsp, availobjsp); |
791 ASSERT(os->os->os_phys->os_type == DMU_OST_META); |
791 } |
792 bzero(dds, sizeof (*dds)); |
792 |
793 } |
793 uint64_t |
794 dds->dds_type = os->os->os_phys->os_type; |
794 dmu_objset_fsid_guid(objset_t *os) |
|
795 { |
|
796 return (dsl_dataset_fsid_guid(os->os->os_dsl_dataset)); |
|
797 } |
|
798 |
|
799 void |
|
800 dmu_objset_fast_stat(objset_t *os, dmu_objset_stats_t *stat) |
|
801 { |
|
802 stat->dds_type = os->os->os_phys->os_type; |
|
803 if (os->os->os_dsl_dataset) |
|
804 dsl_dataset_fast_stat(os->os->os_dsl_dataset, stat); |
|
805 } |
|
806 |
|
807 void |
|
808 dmu_objset_stats(objset_t *os, nvlist_t *nv) |
|
809 { |
|
810 ASSERT(os->os->os_dsl_dataset || |
|
811 os->os->os_phys->os_type == DMU_OST_META); |
|
812 |
|
813 if (os->os->os_dsl_dataset != NULL) |
|
814 dsl_dataset_stats(os->os->os_dsl_dataset, nv); |
|
815 |
|
816 dsl_prop_nvlist_add_uint64(nv, ZFS_PROP_TYPE, |
|
817 os->os->os_phys->os_type); |
795 } |
818 } |
796 |
819 |
797 int |
820 int |
798 dmu_objset_is_snapshot(objset_t *os) |
821 dmu_objset_is_snapshot(objset_t *os) |
799 { |
822 { |