[Crash-utility] crash version 4.0-2.22 is available

Sharyathi Nagesh sharyath at in.ibm.com
Tue Mar 28 16:00:24 UTC 2006


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
> 
> 




More information about the Crash-utility mailing list