From: Nicolas Dichtel <nicolas.dichtel@6wind.com>
To: roopa <roopa@cumulusnetworks.com>, davem@davemloft.net
Cc: mkubecek@suse.cz, Mazziesaccount@gmail.com,
hannes@stressinduktion.org, kuznet@ms2.inr.ac.ru,
jmorris@namei.org, yoshfuji@linux-ipv6.org,
netdev@vger.kernel.org
Subject: Re: [PATCH net v3] ipv6: fix multipath route replace error recovery
Date: Tue, 8 Sep 2015 11:55:18 +0200 [thread overview]
Message-ID: <55EEB086.7000100@6wind.com> (raw)
In-Reply-To: <55EE2EEA.5040109@cumulusnetworks.com>
Le 08/09/2015 02:42, roopa a écrit :
> On 9/6/15, 1:46 PM, Roopa Prabhu wrote:
>> From: Roopa Prabhu <roopa@cumulusnetworks.com>
>>
>> Problem:
>> The ecmp route replace support for ipv6 in the kernel, deletes the
>> existing ecmp route too early, ie when it installs the first nexthop.
>> If there is an error in installing the subsequent nexthops, its too late
>> to recover the already deleted existing route
>>
>> This patch fixes the problem with the following:
>> a) Changes the existing multipath route add code to a two stage process:
>> build rt6_infos + insert them
>> ip6_route_add rt6_info creation code is moved into
>> ip6_route_info_create.
>> b) This ensures that all errors are caught during building rt6_infos
>> and we fail early
>>
> The other way I have been thinking of solving the problem is to mark the sibling
> routes being replaced with some state
> ...so they can be restored on error. Still figuring out a way to do this in a
> clean and non-intrusive way.
If I'm not wrong, the only error which may result to an inconsistent list of
nexthops is ENOMEM (after your patch). I'm not sure it's worth to add too much
complexity to the code to handle this error.
> Or maybe just save the sibling routes (rt6_infos) being replaced in a list and
> re-insert them on error.
Yes, but we can also fail to re-insert the route.
next prev parent reply other threads:[~2015-09-08 9:55 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-09-06 20:46 [PATCH net v3] ipv6: fix multipath route replace error recovery Roopa Prabhu
2015-09-07 12:37 ` Nicolas Dichtel
2015-09-08 0:14 ` roopa
2015-09-08 0:42 ` roopa
2015-09-08 9:55 ` Nicolas Dichtel [this message]
2015-09-08 13:53 ` roopa
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=55EEB086.7000100@6wind.com \
--to=nicolas.dichtel@6wind.com \
--cc=Mazziesaccount@gmail.com \
--cc=davem@davemloft.net \
--cc=hannes@stressinduktion.org \
--cc=jmorris@namei.org \
--cc=kuznet@ms2.inr.ac.ru \
--cc=mkubecek@suse.cz \
--cc=netdev@vger.kernel.org \
--cc=roopa@cumulusnetworks.com \
--cc=yoshfuji@linux-ipv6.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.