Re: [PATCH] 2.5.21 Nonlinear CPU support

From: Andreas Dilger (
Date: Wed Jun 12 2002 - 12:36:05 EST

On Jun 12, 2002 16:08 +0100, Anton Altaparmakov wrote:
> Buffer allocation at use time is NOT an option because the buffers are
> allocated using vmalloc() which is extremely expensive and we would need to
> allocate at every single initial ->readpage() call of a compressed file.
> >CPU hotswap higlights the fact that per CPU allocation needs to be smarter
> >about doing its job (i.e. don't allocate if it won't be used ever,
> >defer allocation to CPU hotswap event).
> The former is not possible for ntfs as there is no quick way to tell if use
> will use decompression or not. And the latter creates a lot of complexity.
> I gave an example using a callback of how it could be done in a previous
> post but I don't like introducing complexity for a minority group of users.

I think the reasonable solution is as follows:
1) Allocate an array of NULL pointers which is NR_CPUs in size (you could do
   this all the time, as it would only be a few bytes)
2) If you need to do decompression on a cpu you check the array entry
   for that CPU and if is NULL you vmalloc() the decompression buffers once
   for that CPU. This avoid vmalloc() overhead for each read.
3) Any allocated buffers are freed in the same manner they are now -
   when the last compressed volume is unmounted. There may be some or
   all entries that are still NULL.

This also avoids allocating buffers when there are no files which are
actually compressed.

Cheers, Andreas

Andreas Dilger

- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to More majordomo info at Please read the FAQ at

This archive was generated by hypermail 2b29 : Sat Jun 15 2002 - 22:00:26 EST