Messages in this thread | | | Date | Fri, 4 Feb 2000 14:23:10 -0500 | From | Mike Panetta <> | Subject | Re: LFS (2+GB) problems. |
| |
Ok I just took another look at this.... It seems that when I rebooted the box I accidentially booted it into the wrong kernel! DOH!
I was running 2.2.12 instead of 2.3.40.... Once I booted back into 2.3.40 it was fine... Sorry for the false alarm :(
Mike
On Fri, Feb 04, 2000 at 12:05:01PM -0500, Mike Panetta wrote: > I am currently using the version of e2fsck that comes with redhat 6.1 > e2fsck 1.15 is what it says. For ext2 fs v 0.5b. > > Does this help? > > On Fri, Feb 04, 2000 at 09:52:22AM -0700, Andreas Dilger wrote: > > You write: > > > Just resently I have started messing with the lfs facilities now > > > in place in the devel kernels and I have run into a few problems. > > > > > > Here are my problems: > > > > > > o I can create files larger than 4GB BUT I cannot remove them cleanly. > > > o On a reboot e2fsck truncates any file larger than 4GB to 4GB. > > > > > > Also... the first time I ran e2fsck it complained to me about having a large > > > file on the FS... It said I needed to turn on some flag in the superblock > > > (I cant remember the name) to enable LFS support... How do I turn it on > > > if e2fsck didnt already? What is the flag named? Is there any real docs > > > on how to set up LFS in linux? I cant seem to find any. > > > > You didn't mention if you installed a new e2fsprogs. The latest version > > is 1.18 I believe. However, looking through the ext2 code that I have > > (2.3.34 only), it does not set the EXT2_FEATURE_RO_COMPAT_LARGE_FILE flag > > in the superblock as far as I can see, so e2fsck probably has no chance to > > get it right anyways. If it isn't already in the recent kernel, you need > > something like the following in fs/ext2/inode.c:ext2_update_inode(): > > > > if (S_ISDIR(inode->i_mode)) > > raw_inode->i_dir_acl = cpu_to_le32(inode->u.ext2_i.i_dir_acl); > > | else { > > raw_inode->i_size_high = cpu_to_le32(inode->i_size >> 32); > > + if (raw_inode->i_size_high) > > + inode->i_sb->u.ext2_sb.s_feature_ro_compat |= > > + EXT2_FEATURE_RO_COMPAT_LARGE_FILE; > > + } > > > > I'm not 100% sure this is the right way to do it (not even sure that the > > syntax is correct), but at least it's a start... It seems likely that > > you may also need to have (in addition to or instead of the above): > > > > + inode->i_sb->u.ext2_sb.s_es->s_feature_ro_compat |= > > + EXT2_FEATURE_RO_COMPAT_LARGE_FILE; > > + mark_buffer_dirty(inode->i_sb->u.ext2_sb.s_sbh, 1); > > + inode->i_sb->s_dirt = 1; > > > > The latter will change the superblock on the disk - note the s_es in there, > > and it should be written out when it is marked dirty. It may also be > > nice to check if the flag is already set via EXT2_HAS_RO_COMPAT_FEATURE() > > so we don't write out the superblock for each update of a large file... > > > > Cheers, Andreas > > -- > > Andreas Dilger \ "If a man ate a pound of pasta and a pound of antipasto, > > \ would they cancel out, leaving him still hungry?" > > http://www-mddsp.enel.ucalgary.ca/People/adilger/ -- Dogbert > > > > - > > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in > > the body of a message to majordomo@vger.rutgers.edu > > Please read the FAQ at http://www.tux.org/lkml/ > > --
--
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/
| |