Thanks for the input Darren, but I'm still confused about DNODE atomicity ... 
it's difficult to imagine that a change that is made anyplace in the zpool 
would require copy operations all the way back up to the uberblock (e.g. if 
some single file in one of many file systems in a zpool was suddenly changed, 
making a new copy of all of the interceeding objects in the tree back to the 
uberblock would seem to be an untenable amount of work even though it may all 
be carried out in memory and not involve any IO, although if the zpool itself 
was under snapshot control this would have to happen) ... the DNODE 
implementation appears to include its own checksum field (self-checksumming), 
and controlling 
DNODEs (those that lead to decendent collections of DNODEs) are always of the 
known type DMU_OT_DNODE and so their block pointers do not have to checksum the 
DNODEs they point to (unlike all other block pointers that do cehcksum the data 
they point to) ... this would allow for inplace updates of a DNODE, without the 
need to continue further up the tree ... since all objects are controlled by a 
DNODE, updates to an object's data can stop at its DNODE if that DNODE is not 
under some snapshot or clone control ... if this is not the case, than 'any' 
modification in the zpool would require copying up to the uberblock
 
 
This message posted from opensolaris.org
_______________________________________________
zfs-discuss mailing list
zfs-discuss@opensolaris.org
http://mail.opensolaris.org/mailman/listinfo/zfs-discuss

Reply via email to