Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 3 Sep 2004 15:52:11 -0700 (PDT)
From:      Don Lewis <truckman@FreeBSD.org>
To:        keramida@linux.gr
Cc:        freebsd-current@FreeBSD.org
Subject:   Re: what is fsck's "slowdown"?
Message-ID:  <200409032252.i83MqBJl030297@gw.catspoiler.org>
In-Reply-To: <20040903221628.GA51595@gothmog.gr>

index | next in thread | previous in thread | raw e-mail

On  4 Sep, Giorgos Keramidas wrote:
> On 2004-09-03 14:58, Don Lewis <truckman@freebsd.org> wrote:

>> Using two CPUs would give you at best a 2x speedup, and in this case it
>> would be quite a bit less since both CPUs would be trying to access and
>> modify the same data structure.  Just using a better data structure is
>> likely to speed things up much more than 2x.  Something as simple as
>> building the list in reverse order in pass 1 is likely to make a huge
>> difference.
> 
> Holding both a head and tail pointer to the singly-linked list should
> probably make it easier to add nodes at the end of the list instead of
> the head.  I haven't read the source of fsck_ffs at all though, so I
> don't know if I can come up with a working patch in a reasonable amount
> of time.

Yes, if fsck used the <sys/queue.h> macros, this data structure should
probably be a STAILQ.  The code if fsck is all hand rolled and it would
be trivially easy to add a tail pointer.  The head of the list in
question is
	struct zlncnt *zlnhead;
The only modifications needed would be in the initialization code in
main.c, and the code that builds the list in pass1.c.



help

Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200409032252.i83MqBJl030297>