On Wednesday, November 15, 2006 1:49 AM, Dave Wysochanski wrote > One other thought I had was the notion of a "priority valid" > flag (or a > special priority value) in the path for the case of > group_by_prio. Set > it to invalid in alloc_path(), then just don't add the path to the > multipath struct in coalesce_paths() if the priority value > was invalid. > Then over in checkerloop(), add the path to the multipath map when you > get a valid priority. > > It is more complicated than that I'm sure (e.g. checkerloop() assumes > pp->mpp is non-null in places, etc) but seemed like a half-decent > approach to at least consider. > > This approach doesn't take into consideration the general case of a > change in path priority though. I very much like the first part of your "priority valid" idea mentioned above. I've enclosed a patch for the first part of your idea. The patch should address the concern you had about recalculating priority for a path when its path state changes from not PATH_DOWN to PATH_DOWN. It now only retrieves the priority for PATH_DOWN paths if the path's priority has never been successfully retrieved before. I've punted for now on the reloading of the map if a path priority change has caused a path group membership change. This is kind of complex, has lots of down sides, and there doesn't seem to be a need for it as of now.