From owner-freebsd-stable@FreeBSD.ORG Wed Jun 9 22:44:05 2004 Return-Path: Delivered-To: freebsd-stable@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 8965116A4D0 for ; Wed, 9 Jun 2004 22:44:05 +0000 (GMT) Received: from gen129.n001.c02.escapebox.net (gen129.n001.c02.escapebox.net [213.73.91.129]) by mx1.FreeBSD.org (Postfix) with ESMTP id 3731843D4C for ; Wed, 9 Jun 2004 22:44:05 +0000 (GMT) (envelope-from gemini@geminix.org) Message-ID: <40C792B2.8030401@geminix.org> Date: Thu, 10 Jun 2004 00:44:02 +0200 From: Uwe Doering Organization: Private UNIX Site User-Agent: Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.6) Gecko/20040119 X-Accept-Language: en-us, en MIME-Version: 1.0 To: freebsd-stable@freebsd.org References: <200406080903.i5893AO01551@Mail.NOSPAM.DynDNS.dK> <40C70CF0.5080304@geminix.org> <200406091830.i59IU3W50283@Mail.NOSPAM.DynDNS.dK> In-Reply-To: <200406091830.i59IU3W50283@Mail.NOSPAM.DynDNS.dK> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Received: from gemini by geminix.org with asmtp (TLSv1:AES256-SHA:256) (Exim 3.36 #1) id 1BYBng-000BRS-00; Thu, 10 Jun 2004 00:44:04 +0200 Subject: Re: patch for unionfs mounts X-BeenThere: freebsd-stable@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: Production branch of FreeBSD source code List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 09 Jun 2004 22:44:05 -0000 Barry Bouwsma wrote: > Uwe Doering wrote: > >>>+++ union_vnops.c Tue May 11 14:49:02 2004 >>>+ ap->a_vap->va_fsid = ap->a_vp->v_mount->mnt_stat.f_fsid.val[0]; > >>I'm afraid there is a problem with this approach. 'va_fsid' and >>'va_fileid' end up as 'st_dev' and 'st_ino' on the application level >>("struct stat"). The combination of these two variables is supposed to >>be unique, at least by convention. Software relies on the assumption >>that if 'st_dev' and 'st_ino' are identical for two files it is actually >>the same file. > >>Now, by forcing 'va_fsid', and therefore 'st_dev', to the same value >>(the unionfs mount's file system id) regardless of which device (file >>system) the file is actually located on this patch introduces ambiguity. >> There can be two different files with the same 'va_fileid' value (the >>inode number, for instance), living on two different file systems, that >>now appear to be the same file due to the "fake" value in 'va_fsid'. > > Hmmm, thanks for the explanation. Too good to be true... > > It sounds as if I've been lucky since the directories I've > unionfs-mounted have been contained within one filesystem > (/usr/local/source-hacks atop /usr/src; /usr being common). > >>This is going to break existing software. So I recommend against >>committing this patch to the FreeBSD CVS repository. I have no idea how >>else to fix your initial problem, but this patch is not the way to do >>it, IMHO. > > So I'm fixing one problem (for myself), but potentially causing > others -- for example, if I had /var/source-hacks mounted atop > /usr/src then I'd definitely be seeing problems. Is this correct? Correct. As long as you're dealing with only one underlying file system you'll get away with it, but if there is more than one file system involved the patch is going to break things. Uwe -- Uwe Doering | EscapeBox - Managed On-Demand UNIX Servers gemini@geminix.org | http://www.escapebox.net