Thank you Sarah!
Sarah Jelinek wrote:
>
>
> Joseph J. VLcek wrote:
>> Sarah Jelinek wrote:
>>>
>>>
>>> Joseph J. VLcek wrote:
>>>> Sarah Jelinek wrote:
>>>>> Hi Jan and Ginnie,
>>>>>
>>>>> Could you do a code review for:
>>>>>
>>>>> 6795293 libdiskmgt coredump on x86 with devices under mpxio
>>>>> control/SUN-Universal Xport inbound mangement
>>>>>
>>>>> Webrev is here:
>>>>>
>>>>> http://cr.opensolaris.org/~sjelinek/6795293/
>>>>>
>>>>> ****Building and Testing done:
>>>>> -Both sparc and x86 built clean
>>>>> -Tested on both x86 and sparc:
>>>>> x86 testing reproduced bug and also shows bug fix
>>>>> sparc testing for regression testing. Bug does not present
>>>>> itself on sparc.
>>>>>
>>>>> -Reproduced bug and tested fix on oaf627.ireland. This is an x86
>>>>> box with Qlogic FC controllers.
>>>>> -Tested both mpxio and non-mpxio
>>>>> -ran ::findleaks. No leaks detected.
>>>>>
>>>>> Test output is located here:
>>>>>
>>>>> /net/irperf.ireland/export/work/bfu/sjelinek
>>>>>
>>>>> The files in this directory are specifically:
>>>>> ***Bad run(bug is present):
>>>>> -core.test_td.2664.1263495933.gz-core showing original bug reproduced
>>>>> -libdiskmgt_bad.txt
>>>>> -test_td_bad.txt
>>>>>
>>>>> ***Good run(bug fixed):
>>>>> -libdiskmgt_good.txt
>>>>> -test_td_good.txt
>>>>> -format.txt - shows output of format to show match with
>>>>> test_td_good.txt data.
>>>>>
>>>>> ***Good run, mpxio disabled(bug fixed):
>>>>> -libdiskmgt_nonmpxio.txt
>>>>> -test_td_nonmpxio.txt
>>>>> -format_nonmpxio.txt - shows output of format to show match with
>>>>> -test_td_nonmpxio.txt data.
>>>>>
>>>>>
>>>>> thanks,
>>>>> sarah
>>>>>
>>>>> _______________________________________________
>>>>> caiman-discuss mailing list
>>>>> caiman-discuss at opensolaris.org
>>>>> http://mail.opensolaris.org/mailman/listinfo/caiman-discuss
>>>> Sarah,
>>>>
>>>> This looks good to me.
>>>>
>>>> I have one questions.
>>>>
>>>> 869-884
>>>> Is moving items up in the lists creating a memory leak?
>>>>
>>> Hi Joe,
>>>
>>> Thank you for the review.
>>>
>>> No, because I free that memory, with cache_free_controller() at line
>>> 897:
>>>> 897 cache_free_controller(cp);
>>>
>>> All I am doing at lines 869-884 is moving the pointers in the Disk N
>>> datastructure that point to the controllers associated with Disk N.
>>> I do this first, then free the memory that is actually allocated to
>>> the controller that we have just disassociated with Disk N.
>> Thanks for the reply Sarah.
>>
>> Where is the memory freed? By the call to:
>>
>> 900 cache_free_controller(cp);
>
> Yes, in the updated webrev, which has changed based on Jan's comments,
> this is where the memory is freed.
>
> This code does:
>
>> void
>> cache_free_controller(controller_t *cp)
>> {
>> free(cp->name);
>> free(cp->kstat_name);
>> free(cp->disks);
>> if (cp->paths != NULL) {
>> int i;
>>
>> for (i = 0; cp->paths[i]; i++) {
>> /* free the path since it can't exist w/o the
>> ctrlr */
>> cache_free_path(cp->paths[i]);
>> }
>> free(cp->paths);
>> }
>>
>> free(cp);
>> }
>
> It's in cache.c
>
> thanks,
> sarah
> *****
>
>>
>> ?
>>
>> Joe
>>
>>
>>