Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 23 Dec 2009 10:12:44 +0100
From:      Patrick Proniewski <patpro@patpro.net>
To:        freebsd-fs@freebsd.org
Subject:   snapshot implementation 
Message-ID:  <32CA2B73-3412-49DD-9401-4773CC73BED0@patpro.net>

next in thread | raw e-mail | index | archive | help

--Apple-Mail-1--215476577
Content-Type: text/plain;
	charset=US-ASCII;
	format=flowed;
	delsp=yes
Content-Transfer-Encoding: 7bit

Hello,

I'm playing a little bit with freebsd snapshots (on UFS, freebsd 6.4).  
And I can't find the answer to one of my questions.
If I understand correctly:
- at time=0 a snapshot contains nothing but a bit/block map, and every  
block in the block map is either a pointer to "not used" or "not  
copied".
The pointer to "not used" is used when the corresponding block on the  
live file system is empty. The pointer "not copied" is used when the  
corresponding block on the live FS has not changed since time=0.
- at time>0 every non-empty block on the live FS that is to be  
modified, is first copied in the snapshot, and then, the pending  
modification is committed. The pointer in the snapshot's block map  
changes from "not copied" to the address of the copied block in the  
snapshot.
But what about empty blocks? I can't find any information about them.
It seems logical to me that empty blocks receiving new data on the  
live FS will stay as pointers to "not used" in the snapshot, instead  
of pointing to an empty block that would be copied in the snapshot and  
grow it's size. I've not found any piece of documentation that clarify  
this.

By the way, I'm also interested in ZFS: is the snapshot technology  
available in ZFS the same as the one available in UFS?

thanks,
patpro


--Apple-Mail-1--215476577--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?32CA2B73-3412-49DD-9401-4773CC73BED0>