On Thu, 2009-01-01 at 12:23 -0500, Peter Memishian wrote: > > > If we're called with an underlying interface, then we will always try to > > > set ilw_ipmp_ill via ipmp_ill_hold_ipmp_ill(). That call *could* fail if > > > e.g. the IPMP ill was changing or somesuch. In that case though, we > > > won't walk to the IPMP ill because ilw_ipmp_ill wil be NULL, and > therefore > > > we won't set ilw_walk_ill() to it. In other words, the code is written > > > such that we always acquire holds on all of the ills that we will walk > > > over (but there could be a bug.) > > > > My concern wasn't that we're not holding a reference to the ill (I see > > that ipmp_ill_hold_ipmp_ill() does that), but rather we're not bumping > > ill_ilm_walker_cnt for the IPMP interface. Is that not required? > > We bump ill_ilm_walker_cnt via ill_ilm_walker_hold() in ilm_walker_start(): > > --> ill_ilm_walker_hold(ill); > if (ilw->ilw_ipmp_ill != NULL) > --> ill_ilm_walker_hold(ilw->ilw_ipmp_ill);
Ah, yes, it's there. Thanks. -Seb
