Hans Reiser <reiser@xxxxxxxxxxx> wrote:but not trivial. Sigh. It means determining whether we can get below 4k without performance loss requires detailed code examination to determine what is using up the stack in practice, and discussion.
John Cherry wrote:
The new "errors" are from reiser4 code and they all appear to be...zam, can you or Mr. Demidov work on using kmalloc to reduce stack usage?
fs/reiser4/reiser4.h:18:2: #error "Please turn 4k stack off"
Andrew suggested that for statically sized objects kmalloc is quite fast (one instruction I think he said), so my objection to kmallocing a lot has faded.
err, not that quick - but it's pretty quick.
With a kmalloc with a constant size and, preferably, a constant gfp mask
we'll jump directly into __cache_alloc() and in the common case we'll pluck
an entry directly out of the cpu-local head array:
So the kmalloc fastpath is, effectively:
local_irq_save(save_flags);
ac = ac_data(cachep);
if (likely(ac->avail)) {
ac->touched = 1;
objp = ac_entry(ac)[--ac->avail];
}
local_irq_restore(save_flags);
return objp;
Not bad...