usr/src/uts/common/fs/zfs/dnode.c
changeset 14234 189ec27885ae
parent 14122 6a5a2f4a47db
child 14247 dceb17481b99
equal deleted inserted replaced
14233:4b808fda2aac 14234:189ec27885ae
   113 	dn->dn_newuid = 0;
   113 	dn->dn_newuid = 0;
   114 	dn->dn_newgid = 0;
   114 	dn->dn_newgid = 0;
   115 	dn->dn_id_flags = 0;
   115 	dn->dn_id_flags = 0;
   116 
   116 
   117 	dn->dn_dbufs_count = 0;
   117 	dn->dn_dbufs_count = 0;
       
   118 	dn->dn_unlisted_l0_blkid = 0;
   118 	list_create(&dn->dn_dbufs, sizeof (dmu_buf_impl_t),
   119 	list_create(&dn->dn_dbufs, sizeof (dmu_buf_impl_t),
   119 	    offsetof(dmu_buf_impl_t, db_link));
   120 	    offsetof(dmu_buf_impl_t, db_link));
   120 
   121 
   121 	dn->dn_moved = 0;
   122 	dn->dn_moved = 0;
   122 	return (0);
   123 	return (0);
   165 	ASSERT0(dn->dn_newuid);
   166 	ASSERT0(dn->dn_newuid);
   166 	ASSERT0(dn->dn_newgid);
   167 	ASSERT0(dn->dn_newgid);
   167 	ASSERT0(dn->dn_id_flags);
   168 	ASSERT0(dn->dn_id_flags);
   168 
   169 
   169 	ASSERT0(dn->dn_dbufs_count);
   170 	ASSERT0(dn->dn_dbufs_count);
       
   171 	ASSERT0(dn->dn_unlisted_l0_blkid);
   170 	list_destroy(&dn->dn_dbufs);
   172 	list_destroy(&dn->dn_dbufs);
   171 }
   173 }
   172 
   174 
   173 void
   175 void
   174 dnode_init(void)
   176 dnode_init(void)
   470 	dn->dn_olduid = 0;
   472 	dn->dn_olduid = 0;
   471 	dn->dn_oldgid = 0;
   473 	dn->dn_oldgid = 0;
   472 	dn->dn_newuid = 0;
   474 	dn->dn_newuid = 0;
   473 	dn->dn_newgid = 0;
   475 	dn->dn_newgid = 0;
   474 	dn->dn_id_flags = 0;
   476 	dn->dn_id_flags = 0;
       
   477 	dn->dn_unlisted_l0_blkid = 0;
   475 
   478 
   476 	dmu_zfetch_rele(&dn->dn_zfetch);
   479 	dmu_zfetch_rele(&dn->dn_zfetch);
   477 	kmem_cache_free(dnode_cache, dn);
   480 	kmem_cache_free(dnode_cache, dn);
   478 	arc_space_return(sizeof (dnode_t), ARC_SPACE_OTHER);
   481 	arc_space_return(sizeof (dnode_t), ARC_SPACE_OTHER);
   479 }
   482 }
   700 	ASSERT(refcount_count(&odn->dn_tx_holds) == 0);
   703 	ASSERT(refcount_count(&odn->dn_tx_holds) == 0);
   701 	refcount_transfer(&ndn->dn_holds, &odn->dn_holds);
   704 	refcount_transfer(&ndn->dn_holds, &odn->dn_holds);
   702 	ASSERT(list_is_empty(&ndn->dn_dbufs));
   705 	ASSERT(list_is_empty(&ndn->dn_dbufs));
   703 	list_move_tail(&ndn->dn_dbufs, &odn->dn_dbufs);
   706 	list_move_tail(&ndn->dn_dbufs, &odn->dn_dbufs);
   704 	ndn->dn_dbufs_count = odn->dn_dbufs_count;
   707 	ndn->dn_dbufs_count = odn->dn_dbufs_count;
       
   708 	ndn->dn_unlisted_l0_blkid = odn->dn_unlisted_l0_blkid;
   705 	ndn->dn_bonus = odn->dn_bonus;
   709 	ndn->dn_bonus = odn->dn_bonus;
   706 	ndn->dn_have_spill = odn->dn_have_spill;
   710 	ndn->dn_have_spill = odn->dn_have_spill;
   707 	ndn->dn_zio = odn->dn_zio;
   711 	ndn->dn_zio = odn->dn_zio;
   708 	ndn->dn_oldused = odn->dn_oldused;
   712 	ndn->dn_oldused = odn->dn_oldused;
   709 	ndn->dn_oldflags = odn->dn_oldflags;
   713 	ndn->dn_oldflags = odn->dn_oldflags;
   734 	odn->dn_dbuf = NULL;
   738 	odn->dn_dbuf = NULL;
   735 	odn->dn_handle = NULL;
   739 	odn->dn_handle = NULL;
   736 	list_create(&odn->dn_dbufs, sizeof (dmu_buf_impl_t),
   740 	list_create(&odn->dn_dbufs, sizeof (dmu_buf_impl_t),
   737 	    offsetof(dmu_buf_impl_t, db_link));
   741 	    offsetof(dmu_buf_impl_t, db_link));
   738 	odn->dn_dbufs_count = 0;
   742 	odn->dn_dbufs_count = 0;
       
   743 	odn->dn_unlisted_l0_blkid = 0;
   739 	odn->dn_bonus = NULL;
   744 	odn->dn_bonus = NULL;
   740 	odn->dn_zfetch.zf_dnode = NULL;
   745 	odn->dn_zfetch.zf_dnode = NULL;
   741 
   746 
   742 	/*
   747 	/*
   743 	 * Set the low bit of the objset pointer to ensure that dnode_move()
   748 	 * Set the low bit of the objset pointer to ensure that dnode_move()
  1521 	rw_enter(&dn->dn_struct_rwlock, RW_WRITER);
  1526 	rw_enter(&dn->dn_struct_rwlock, RW_WRITER);
  1522 	blksz = dn->dn_datablksz;
  1527 	blksz = dn->dn_datablksz;
  1523 	blkshift = dn->dn_datablkshift;
  1528 	blkshift = dn->dn_datablkshift;
  1524 	epbs = dn->dn_indblkshift - SPA_BLKPTRSHIFT;
  1529 	epbs = dn->dn_indblkshift - SPA_BLKPTRSHIFT;
  1525 
  1530 
  1526 	if (len == -1ULL) {
  1531 	if (len == DMU_OBJECT_END) {
  1527 		len = UINT64_MAX - off;
  1532 		len = UINT64_MAX - off;
  1528 		trunc = TRUE;
  1533 		trunc = TRUE;
  1529 	}
  1534 	}
  1530 
  1535 
  1531 	/*
  1536 	/*