From owner-freebsd-questions@FreeBSD.ORG Tue Feb 17 16:37:32 2004 Return-Path: Delivered-To: freebsd-questions@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 9FF2E16A4CE; Tue, 17 Feb 2004 16:37:32 -0800 (PST) Received: from mailout2.pacific.net.au (mailout2.pacific.net.au [61.8.0.85]) by mx1.FreeBSD.org (Postfix) with ESMTP id 25CF043D1D; Tue, 17 Feb 2004 16:37:32 -0800 (PST) (envelope-from bde@zeta.org.au) Received: from mailproxy1.pacific.net.au (mailproxy1.pacific.net.au [61.8.0.86])i1I0bV5O002322; Wed, 18 Feb 2004 11:37:31 +1100 Received: from gamplex.bde.org (katana.zip.com.au [61.8.7.246]) i1I0bQ0I008798; Wed, 18 Feb 2004 11:37:27 +1100 Date: Wed, 18 Feb 2004 11:37:26 +1100 (EST) From: Bruce Evans X-X-Sender: bde@gamplex.bde.org To: Tim Robbins In-Reply-To: <20040217112251.GA25431@cat.robbins.dropbear.id.au> Message-ID: <20040218112014.V19484@gamplex.bde.org> References: <20040217103909.N73217@yabba.500mhz.net> <20040217100822.GA13286@xor.obsecurity.org> <20040217102121.GA13632@xor.obsecurity.org> <20040217112251.GA25431@cat.robbins.dropbear.id.au> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII cc: Stefan Krantz cc: freebsd-questions@freebsd.org cc: bde@freebsd.org cc: Kris Kennaway Subject: Re: Anyway to extract a large file from EXT2FS filesystem? X-BeenThere: freebsd-questions@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: User questions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 18 Feb 2004 00:37:32 -0000 On Tue, 17 Feb 2004, Tim Robbins wrote: > > 5BOn Tue, Feb 17, 2004 at 11:16:50AM +0100, Stefan Krantz wrote: > > > > > I would like to extract a large (11GB) tar file on an ext3 filesystem. But > > > > > it shows only to be about 3gb large: > > > > > > > > > > yabba# ls -la pictures.tar > > > > > -rw-r--r-- 1 root wheel 3317055488 Feb 15 19:03 pictures.tar > > > > > > > > > > Is there any possible way to extract the file? > Try this patch and let me know how it goes. You'll have to specify > the file name of /sys/gnu/ext2fs/ext2_inode_cnv.c to patch(1) manually, > then either buildkernel or rebuild only ext2fs.ko. If the file shows > up with the correct size in a directory listing, make sure you can actually > read data past 4 GB. > > ==== //depot/user/tjr/freebsd-tjr/src/sys/gnu/ext2fs/ext2_inode_cnv.c#1 - /p4/tjr/src/sys/gnu/ext2fs/ext2_inode_cnv.c ==== > @@ -77,6 +77,8 @@ > */ > ip->i_mode = ei->i_links_count ? ei->i_mode : 0; > ip->i_size = ei->i_size; > + if (S_ISREG(ip->i_mode)) > + ip->i_size |= ((u_int64_t)ei->i_size_high) << 32; > ip->i_atime = ei->i_atime; > ip->i_mtime = ei->i_mtime; > ip->i_ctime = ei->i_ctime; > @@ -112,6 +114,8 @@ > */ > ei->i_dtime = ei->i_links_count ? 0 : ip->i_mtime; > ei->i_size = ip->i_size; > + if (S_ISREG(ip->i_mode)) > + ei->i_size_high = ip->i_size >> 32; > ei->i_atime = ip->i_atime; > ei->i_mtime = ip->i_mtime; > ei->i_ctime = ip->i_ctime; > The feature stuff needs to be handled for writing. The feature stuff is slightly broken for reading. Large file support is a read-only compatibility feature (it is indicated by the EXT2_FEATURE_RO_COMPAT_LARGE_FILE flag in the s_feature_ro_compat field in the superblock), but we didn't support it without the first hunk in the above patch so we should have rejected even r/o mounts of file systems that have this flag set. We only reject r/w mounts of such file systems. I suppose this isn't a problem in Linux implementations of ext2fs because implementations that don't support large files in ext2fs don't support large files anywhere, so files larger than the old limit of 4GB are handled as correctly as possible at read time so their presence need not prevent mounting. Bruce