Thanks very much for the reply. Best regards
2018-05-30 0:32 GMT+08:00 Matthew Ahrens <mahr...@delphix.com>: > > > On Mon, May 28, 2018 at 8:51 PM, frostyplanet via openzfs-developer < > developer@lists.open-zfs.org> wrote: > >> Greetings, I am currently learning ZFS code, having some questions about >> spacemap writing and condensing. Is there some people can enlighten me on >> the big picture (because I could not find articles about these elsewhere ): >> > > You might find the following talks informative on this subject: > > ZFS overview and read / write code walkthrough: > https://www.youtube.com/watch?v=ptY6-K78McY > > Part of this is about spacemap on-disk format: > https://www.youtube.com/watch?v=uJGkyMxdNFE > > Log spacemap: > https://www.youtube.com/watch?v=jj2IxRkl5bQ > > > >> >> 1) Space map store on disk as dnode, writing dnode blocks again needs >> allocation and free, is this a feed back loop and how to break this >> cycling dependence ? >> > > Yes, we call this "sync to convergence". The cycle is broken by > overwriting the block in place, thus not requiring any change of the > allocation information. This is safe since we are only overwriting blocks > that were allocated in the current txg, so if we crash it's as if nothing > happened. > > >> >> 2) During disk space near full situation, is it possible some syncing >> will fail becauses of cannot allocate to space map appending writes ? (I >> have seen some posts about failure to delete files on a full disk) >> > > No, we reserve some free space so that this can't happen. It isn't really > related to file deletion, which may fail due to a (since fixed) bug in the > space checking code, or if we are extremely low on space (in which case you > can still "zfs destroy" to free up space). See also zfs_space_check_t in > dsl_synctask.h. > > >> >> 3) Is it possible to condense a spacemap even if disk space not enough to >> allocate a new space? >> > > If there's zero allocatable space, then you've hit a bug in ZFS, and your > pool is now permanently read-only. Normally there is always enough free > space to condense a spacemap. > > --matt > > > *openzfs <https://openzfs.topicbox.com/latest>* / openzfs-developer > <https://openzfs.topicbox.com/groups/developer/members> / Permalink > <https://openzfs.topicbox.com/groups/developer/discussions/Td20524f29bfb36ea-Mc09706bb1d1dc7999b00fba7> > Delivery > options <https://openzfs.topicbox.com/groups> > ------------------------------------------ openzfs: openzfs-developer Permalink: https://openzfs.topicbox.com/groups/developer/discussions/Td20524f29bfb36ea-M72f6c55e835a16c287eddd94 Delivery options: https://openzfs.topicbox.com/groups