usr/src/uts/common/fs/zfs/dmu_objset.c
changeset 2885 c0259887ebbc
parent 2856 6f4d5ee1906a
child 2981 b80f5da0b8ed
equal deleted inserted replaced
2884:0a7f3f349684 2885:c0259887ebbc
    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 {