From owner-freebsd-fs@FreeBSD.ORG Fri Apr 21 10:26:24 2006 Return-Path: X-Original-To: freebsd-fs@FreeBSD.ORG Delivered-To: freebsd-fs@FreeBSD.ORG Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 60B5016A401 for ; Fri, 21 Apr 2006 10:26:24 +0000 (UTC) (envelope-from olli@lurza.secnetix.de) Received: from lurza.secnetix.de (lurza.secnetix.de [83.120.8.8]) by mx1.FreeBSD.org (Postfix) with ESMTP id 987D343D46 for ; Fri, 21 Apr 2006 10:26:23 +0000 (GMT) (envelope-from olli@lurza.secnetix.de) Received: from lurza.secnetix.de (hobmtu@localhost [127.0.0.1]) by lurza.secnetix.de (8.13.4/8.13.4) with ESMTP id k3LAQHEa096363 for ; Fri, 21 Apr 2006 12:26:22 +0200 (CEST) (envelope-from oliver.fromme@secnetix.de) Received: (from olli@localhost) by lurza.secnetix.de (8.13.4/8.13.1/Submit) id k3LAQH5S096362; Fri, 21 Apr 2006 12:26:17 +0200 (CEST) (envelope-from olli) Date: Fri, 21 Apr 2006 12:26:17 +0200 (CEST) Message-Id: <200604211026.k3LAQH5S096362@lurza.secnetix.de> From: Oliver Fromme To: freebsd-fs@FreeBSD.ORG In-Reply-To: <20060421012537.0949ac45.trhodes@FreeBSD.org> X-Newsgroups: list.freebsd-fs User-Agent: tin/1.8.0-20051224 ("Ronay") (UNIX) (FreeBSD/4.11-STABLE (i386)) X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-2.1.2 (lurza.secnetix.de [127.0.0.1]); Fri, 21 Apr 2006 12:26:22 +0200 (CEST) Cc: Subject: Re: How a file is deleted in ufs2? X-BeenThere: freebsd-fs@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: freebsd-fs@FreeBSD.ORG List-Id: Filesystems List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 21 Apr 2006 10:26:24 -0000 Tom Rhodes wrote: > Kris Kennaway wrote: > > Tom Rhodes wrote: > > > Bruce Evans wrote: > > > > On Mon, 10 Apr 2006, Scott Long wrote: > > > > > > > > > IOW, there is no easy way to undelete a file. > > > > > > > > This is currently true, except in the rare case where undelete(2) works. > > > > > > Oh, so it has worked for someone. I always wonder why we have this > > > functionality when I have never been able to make it work. Using > > > rm(1) that is. > > > > DESCRIPTION > > The undelete() system call attempts to recover the deleted file named by > > path. Currently, this works only when the named object is a whiteout in > > a union file system. > > What it fails to do is tell users what a "whiteout" is. At least > it was very unobvious to me while reading the manual page. It should be obvious after reading the undelete(2) manpage and the mount_unionfs(8) manpage (to which the former refers). Whiteouts are needed for UNIONFS mounts because the lower layer of such a mount is read-only, so you cannot remove files from it. When you delete a file on a UNIONFS that exists in the lower layer, a so-called whiteout is written to the upper layer which causes the file in the lower layer to become invisible and inaccessible (I think "ls -W" can be used to see the whiteout itself). In other words, such an unlink operation does not really physically delete the file. The undelete(2) function removes the whiteout, so the file becomes visible and accessible again. See "rm -W". Best regards Oliver -- Oliver Fromme, secnetix GmbH & Co. KG, Marktplatz 29, 85567 Grafing Dienstleistungen mit Schwerpunkt FreeBSD: http://www.secnetix.de/bsd Any opinions expressed in this message may be personal to the author and may not necessarily reflect the opinions of secnetix in any way. "In My Egoistical Opinion, most people's C programs should be indented six feet downward and covered with dirt." -- Blair P. Houghton