From owner-freebsd-fs@FreeBSD.ORG Wed Dec 23 09:12:48 2009 Return-Path: Delivered-To: freebsd-fs@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 3C6D6106568B for ; Wed, 23 Dec 2009 09:12:48 +0000 (UTC) (envelope-from patpro@patpro.net) Received: from rack.patpro.net (rack.patpro.net [193.30.227.216]) by mx1.freebsd.org (Postfix) with ESMTP id BFC6C8FC08 for ; Wed, 23 Dec 2009 09:12:47 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by rack.patpro.net (Postfix) with ESMTP id 1E6DF14 for ; Wed, 23 Dec 2009 10:12:47 +0100 (CET) X-Virus-Scanned: amavisd-new at patpro.net Received: from amavis-at-patpro.net ([127.0.0.1]) by localhost (rack.patpro.net [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id V9KIKJsr6R+S for ; Wed, 23 Dec 2009 10:12:46 +0100 (CET) Received: from [IPv6:::1] (localhost [127.0.0.1]) by rack.patpro.net (Postfix) with ESMTP for ; Wed, 23 Dec 2009 10:12:46 +0100 (CET) Message-Id: <32CA2B73-3412-49DD-9401-4773CC73BED0@patpro.net> From: Patrick Proniewski To: freebsd-fs@freebsd.org Content-Type: multipart/signed; boundary=Apple-Mail-1--215476577; micalg=sha1; protocol="application/pkcs7-signature" Mime-Version: 1.0 (Apple Message framework v936) Date: Wed, 23 Dec 2009 10:12:44 +0100 X-Mailer: Apple Mail (2.936) X-Content-Filtered-By: Mailman/MimeDel 2.1.5 Subject: snapshot implementation X-BeenThere: freebsd-fs@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Filesystems List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 23 Dec 2009 09:12:48 -0000 --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--