All of lore.kernel.org
 help / color / mirror / Atom feed
From: Marcelo Tosatti <marcelo.tosatti@cyclades.com>
To: Matt Mackall <mpm@selenic.com>
Cc: Rob Landley <rob@landley.net>,
	akpm@osdl.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] skip initramfs check
Date: Mon, 21 Nov 2005 08:49:50 -0200	[thread overview]
Message-ID: <20051121104950.GA26480@logos.cnet> (raw)
In-Reply-To: <20051121155050.GK31287@waste.org>

On Mon, Nov 21, 2005 at 07:50:50AM -0800, Matt Mackall wrote:
> On Mon, Nov 21, 2005 at 09:04:46AM -0600, Rob Landley wrote:
> > On Monday 21 November 2005 00:23, Marcelo Tosatti wrote:
> > > Hi Rob,
> > > > Query: is the problem that a big initramfs image is being unpacked more
> > > > than once, or is unpacking an empty initramfs image (134 bytes) causing a
> > > > significant delay?
> > >
> > > The problem is a big non-initramfs RAMDISK image (used for root mountpoint
> > > on this particular embedded platform), that is decompressed more than once:
> > >
> > > - during the initramfs check, which fails because it is not initramfs.
> > > - during the real RAMDISK decompression to memory.
> > >
> > > > I'm fairly certain that back in 1990 I could unzip 134 bytes on my 33 mhz
> > > > 386 running dos in a fraction of a second.  What's the use case here?
> > >
> > > So the issue is not the empty initramfs image (which BTW could probably
> > > be made unecessary?), but a 10Mb RAMDISK image being decompressed by a
> > > 48Mhz PPC, which takes quite a few seconds.
> > >
> > > Need to rework the patch to use a __setup option as Andrew suggested.
> > 
> > It sounds to me like is the initial check (which is just giving a thumbs 
> > up/thumbs down "is this an initramfs", correct?) only needs to decompress the 
> > first page or so of data to make this determination.  A quick glance at the 
> > code seems to imply it's just checking the header and the first entry, so 4k 
> > should be plenty for that.
> > 
> > Some variant of lib/zlib_inflate...  Ouch, bit of a mess there.  Hey Matt: you 
> > know this area.  Is it feasible to do some kind of:
> > 
> > deflate_init(whatever)
> > deflate_next_x_bytes(source *, dest *, length)
> > 
> > To grab a the first X bytes from the initramfs image?
> 
> Not at the moment. But I think it is feasible to simply move the ramdisk
> detection and unpacking inside the ramfs state machine. In other
> words, add two new states:
> 
> - detecting type
> - unpacking ramdisk
> 
> When the first few bytes are fed from the decompressor to the state
> machine, we either transition to the normal ramfs unpacking or we
> treat it as a ramdisk.

Yes that would be ideal. 

      reply	other threads:[~2005-11-21 16:15 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-11-17 14:14 [PATCH] skip initramfs check Marcelo Tosatti
2005-11-17 22:56 ` Andrew Morton
2005-11-21  7:30 ` Rob Landley
2005-11-21  6:23   ` Marcelo Tosatti
2005-11-21 15:04     ` Rob Landley
2005-11-21 15:50       ` Matt Mackall
2005-11-21 10:49         ` Marcelo Tosatti [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20051121104950.GA26480@logos.cnet \
    --to=marcelo.tosatti@cyclades.com \
    --cc=akpm@osdl.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mpm@selenic.com \
    --cc=rob@landley.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.