Dave
You were right it should be buffer_size instead of objectsize.(As obj_size is the size
of debugging information).
I modified function vm_init() and do_slab_chain_percpu_v2() to make it work with current
dumps. This is just a code
part to show how to fix the problem but it is not a patch as such...
Please go through and let me know would it be good idea to write a new function (as you
have suggested earlier) or
is it possible to accommodate by calling do_slab_chain_percpu_v2() iteratively with
different nodes by passing them as
parameter.
Changes to vm_init()
if(MEMBER_EXISTS("kmem_cache","objsize"))
MEMBER_OFFSET_INIT(kmem_cache_s_objsize,
"kmem_cache",
"objsize");
else
if(MEMBER_EXISTS("kmem_cache","buffer_size"))
MEMBER_OFFSET_INIT(kmem_cache_s_objsize,
"kmem_cache",
"buffer_size")
Changes to do_slab_chain_percpu_v2()
ulong start_address[MAX_NUMNODES];
if (!readmem(si->cache+OFFSET(kmem_cache_s_lists),
KVADDR, &start_address[0],
sizeof(ulong) * MAX_NUMNODES,
"array nodelist array", RETURN_ON_ERROR))
{printf("\n Error encountered with readmem
\n");exit(0);}
for (i = 0; i < MAX_NUMNODES ; i++) {
slab_chains[0] = start_address[i] + OFFSET(kmem_list3_slabs_partial);
slab_chains[1] = start_address[i] + OFFSET(kmem_list3_slabs_full);
slab_chains[2] = start_address[i] + OFFSET(kmem_list3_slabs_free);
Thanks
Sharyathi Nagesh
Sharyathi Nagesh wrote:
> Dave
> I wanted to bring to notice two more issue that I am currently working.
> One regarding changes done with kmem_cache to make it NUMA compliant.
> 'lists' which was earlier pointing to kmem_list3 structure, lists has
> been renamed first as nodelists than it is made into an array of pointer
> to kmem_list3 structures. So now we have to traverse the whole list
> iteratively to get the same information.
> As a result of these change kmem -s command fails. To accomodate
> these changes we need to change the function do_slab_chain_percpu_v2 to
> access nodelists iteratively. Still working on it to figure out how I
> can accommodate these changes.
Hi Sharyathi,
Excellent! I really appreciate your undertaking of this task.
Anyway, having gone through this kind of "keeping-up-with-the-slab-subsystem"
task many times, I would suggest that you move it into a new function rather
than re-working do_slab_chain_percpu_v2(). Even if there ends up being a bit
a bit of code duplication, future maintenance will be far easier if you make it
a new function. I would guess that development will be easier too, and you
won't have to worry about breaking backwards-compatibility.
>
> Second objectsize in kmem_cache has been changed to object_size and this
> is enabled only on selecting config option CONFIG_DEBUG_SLAB in the
> kernel.
That's true, but hasn't the functionality of the old "objsize" been
replaced
by the new "buffer_size"?
Anyway, again, I appreciate this very much. I had been planning to address
this, but have been sidetracked totally looking at xen kernel issues.
Thanks,
Dave