On May 3, 2015, at 1:53 AM, Julia Lawall wrote: > On Sat, 2 May 2015, Drokin, Oleg wrote: > >> >> On May 2, 2015, at 5:16 PM, Julia Lawall wrote: >> >>> Summarize OBD_CPT_ALLOC_GFP, OBD_CPT_ALLOC, and OBD_CPT_ALLOC_PTR as a >>> function, obd_cpt_alloc. >>> >>> Signed-off-by: Julia Lawall <Julia.Lawall@xxxxxxx> >>> >>> --- >>> >>> Some questions: Is the name OK? Is the NULL test needed? If not, should >>> the call to kzalloc_node with the call to cfs_cpt_spread_node just be >>> inlined into the call sites? >> >> I think we don't need this function at all, we can use kzalloc/kzalloc_node directly with cfs_cpt_spread_node call in. > > So everywhere the CPT macro is called, it is known that the value is not > NULL? I looked at some call sites, but it's not obvious to determine > that. It's not obvious, but I believe this is true now. Basically in lustre/ptlrpc/service.c we use service->srv_cptable and that comes from ptlrpc_register_service: cptable = cconf->cc_cptable; if (cptable == NULL) cptable = cfs_cpt_table; …. service->srv_cptable = cptable; service->srv_cpts = cpts; service->srv_ncpts = ncpts; that on the client it's only called from: lustre/ldlm/ldlm_lockd.c::ldlm_setup() where we unconditionally assign .psc_cpt = { .cc_pattern = ldlm_cpts, }, But even if there was a different caller, we always use cfs_cpt_table as fallback. It's also directly used in ptlrpc_hr_init(): ptlrpc_hr.hr_cpt_table = cfs_cpt_table; Two callers in lustre/ptlrpc/nrs.c use the same stuff as above. One caller in lustre/ptlrpc/nrs_fifo.c uses nrs_pol2cptab which is defined as nrs_pol2svc(policy)->srv_cptable which is again same as above. There are no other callers. Bye, Oleg _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel