All of lore.kernel.org
 help / color / mirror / Atom feed
From: Glauber Costa <glommer@parallels.com>
To: Ezequiel Garcia <elezegarcia@gmail.com>
Cc: linux-mm@kvack.org, Pekka Enberg <penberg@kernel.org>,
	Christoph Lameter <cl@linux.com>
Subject: Re: [PATCH v2] mm, slob: Drop usage of page->private for storing page-sized allocations
Date: Tue, 4 Sep 2012 15:07:25 +0400	[thread overview]
Message-ID: <5045E0ED.1000402@parallels.com> (raw)
In-Reply-To: <CALF0-+WZhY5NOYiEdDR2n_JrCKB70jei55pEw=914aSWmeqhNg@mail.gmail.com>

On 09/04/2012 02:34 PM, Ezequiel Garcia wrote:
> Hi Glauber,
> 
> On Tue, Sep 4, 2012 at 7:15 AM, Glauber Costa <glommer@parallels.com> wrote:
>> On 09/04/2012 02:13 PM, Ezequiel Garcia wrote:
>>> This field was being used to store size allocation so it could be
>>> retrieved by ksize(). However, it is a bad practice to not mark a page
>>> as a slab page and then use fields for special purposes.
>>> There is no need to store the allocated size and
>>> ksize() can simply return PAGE_SIZE << compound_order(page).
>>
>> What happens for allocations smaller than a page?
>> It seems you are breaking ksize for those.
>>
> 
> Allocations smaller than a page save its own size on a header
> located at each returned pointer. This is documented at the beginning of slob:
> 
> "Above this is an implementation of kmalloc/kfree. Blocks returned
> from kmalloc are prepended with a 4-byte header with the kmalloc size."
> 
> For this objects (smaller than a page) ksize works fine:
> 
> size_t ksize(const void *block) {
> [...]
>   unsigned int *m = (unsigned int *)(block - align);
>   return SLOB_UNITS(*m) * SLOB_UNIT;
> 
> (see how ksize substract 'align' from block to find the header?)
> 
> Of course, it's possible I've overlooked something, but I think this
> should work.
> 

Ok. Slob also goes to the page allocator for higher order kmallocs,
so it should work.





--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

  reply	other threads:[~2012-09-04 11:10 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-09-04 10:13 [PATCH v2] mm, slob: Drop usage of page->private for storing page-sized allocations Ezequiel Garcia
2012-09-04 10:15 ` Glauber Costa
2012-09-04 10:34   ` Ezequiel Garcia
2012-09-04 11:07     ` Glauber Costa [this message]
2012-09-04 18:00       ` Christoph Lameter
2012-09-05 14:11         ` Ezequiel Garcia
2012-09-24 17:11           ` Ezequiel Garcia
2012-10-09 14:51             ` Ezequiel Garcia

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=5045E0ED.1000402@parallels.com \
    --to=glommer@parallels.com \
    --cc=cl@linux.com \
    --cc=elezegarcia@gmail.com \
    --cc=linux-mm@kvack.org \
    --cc=penberg@kernel.org \
    /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.