On Tue, Feb 22, 2011 at 02:36:52PM +0100, Rogier Wolff wrote: > On Tue, Feb 22, 2011 at 11:20:56AM +0100, Rogier Wolff wrote: > > I wouldn't be surprised if I'd need more than 3G of RAM. When I > > extrapolated "more than a few days" it was at under 20% of the > > filesystem and had already allocated on the order of 800Gb of > > memory. Now I'm not entirely sure that this is fair: memory use seems > > to go up quickly in the beginning, and then stabilize: as if it has > > decided that 800M of memory use is "acceptable" and somehow uses a > > different strategy once it hits that limit. > > OK. Good news. It's finished pass1. It is currently using about 2100Mb > of RAM (ehh. mostly swap, I have only 1G in there). Here is the patch. Forgot the patch. Roger. -- ** R.E.Wolff@xxxxxxxxxxxx ** http://www.BitWizard.nl/ ** +31-15-2600998 ** ** Delftechpark 26 2628 XH Delft, The Netherlands. KVK: 27239233 ** *-- BitWizard writes Linux device drivers for any device you may have! --* Q: It doesn't work. A: Look buddy, doesn't work is an ambiguous statement. Does it sit on the couch all day? Is it unemployed? Please be specific! Define 'it' and what it isn't doing. --------- Adapted from lxrbot FAQ
diff --git a/e2fsck/dirinfo.c b/e2fsck/dirinfo.c index 901235c..f0bf2ad 100644 --- a/e2fsck/dirinfo.c +++ b/e2fsck/dirinfo.c @@ -62,7 +62,7 @@ static void setup_tdb(e2fsck_t ctx, ext2_ino_t num_dirs) uuid_unparse(ctx->fs->super->s_uuid, uuid); sprintf(db->tdb_fn, "%s/%s-dirinfo-XXXXXX", tdb_dir, uuid); fd = mkstemp(db->tdb_fn); - db->tdb = tdb_open(db->tdb_fn, 0, TDB_CLEAR_IF_FIRST, + db->tdb = tdb_open(db->tdb_fn, 99931, TDB_CLEAR_IF_FIRST, O_RDWR | O_CREAT | O_TRUNC, 0600); close(fd); } diff --git a/lib/ext2fs/icount.c b/lib/ext2fs/icount.c index bec0f5f..bba740d 100644 --- a/lib/ext2fs/icount.c +++ b/lib/ext2fs/icount.c @@ -193,7 +193,7 @@ errcode_t ext2fs_create_icount_tdb(ext2_filsys fs, char *tdb_dir, fd = mkstemp(fn); icount->tdb_fn = fn; - icount->tdb = tdb_open(fn, 0, TDB_CLEAR_IF_FIRST, + icount->tdb = tdb_open(fn, 999931, TDB_NOLOCK | TDB_NOSYNC, O_RDWR | O_CREAT | O_TRUNC, 0600); if (icount->tdb) { close(fd);