Message ID | 20180803174933.24600-1-mcroce@redhat.com |
---|---|
State | Accepted, archived |
Delegated to: | stephen hemminger |
Headers | show |
Series | [iproute2] ip link: don't stop batch processing | expand |
On Fri, Aug 3, 2018 at 10:50 AM Matteo Croce <mcroce@redhat.com> wrote: > > When 'ip link show dev DEVICE' is processed in a batch mode, ip exits > and stop processing further commands. > This because ipaddr_list_flush_or_save() calls exit() to avoid printing > the link information twice. > Replace the exit with a classic goto out instruction. > > Signed-off-by: Matteo Croce <mcroce@redhat.com> one thing I noticed in iproute2-next last week is that ( echo qdisc show dev eno1; sleep 5; echo qdisc show dev eno1; ) | tc -b - batches the whole thing up to emerge on exit, only. It didn't used to do that, the output of every command came out as it completed. I used to use that to timestamp and save the overhead of invoking the tc utility on openwrt while monitoring qdisc stats in https://github.com/tohojo/flent/blob/master/misc/tc_iterate.c alternatively adding timed/timestamped output to tc like -c count or -I interval would be useful. > --- > ip/ipaddress.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/ip/ipaddress.c b/ip/ipaddress.c > index 6c306ab7..b7b78f6e 100644 > --- a/ip/ipaddress.c > +++ b/ip/ipaddress.c > @@ -1920,7 +1920,7 @@ static int ipaddr_list_flush_or_save(int argc, char **argv, int action) > exit(1); > } > delete_json_obj(); > - exit(0); > + goto out; > } > > if (filter.family != AF_PACKET) { > -- > 2.17.1 >
On Fri, 3 Aug 2018 11:08:58 -0700 Dave Taht <dave.taht@gmail.com> wrote: > On Fri, Aug 3, 2018 at 10:50 AM Matteo Croce <mcroce@redhat.com> wrote: > > > > When 'ip link show dev DEVICE' is processed in a batch mode, ip exits > > and stop processing further commands. > > This because ipaddr_list_flush_or_save() calls exit() to avoid printing > > the link information twice. > > Replace the exit with a classic goto out instruction. > > > > Signed-off-by: Matteo Croce <mcroce@redhat.com> > > one thing I noticed in iproute2-next last week is that > > ( echo qdisc show dev eno1; sleep 5; echo qdisc show dev eno1; ) | tc -b - > > batches the whole thing up to emerge on exit, only. > > It didn't used to do that, the output of every command came out as it > completed. I used to use that to timestamp and save the overhead of > invoking the tc utility on openwrt while monitoring qdisc stats in > https://github.com/tohojo/flent/blob/master/misc/tc_iterate.c There used to be lots of fflush(stdout) in each sub command but lots of these got dropped in JSON updates. I just added one back in after each batch command that should fix what you are seeing.
On Fri, 3 Aug 2018 19:49:33 +0200 Matteo Croce <mcroce@redhat.com> wrote: > When 'ip link show dev DEVICE' is processed in a batch mode, ip exits > and stop processing further commands. > This because ipaddr_list_flush_or_save() calls exit() to avoid printing > the link information twice. > Replace the exit with a classic goto out instruction. > > Signed-off-by: Matteo Croce <mcroce@redhat.com> > --- > ip/ipaddress.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/ip/ipaddress.c b/ip/ipaddress.c > index 6c306ab7..b7b78f6e 100644 > --- a/ip/ipaddress.c > +++ b/ip/ipaddress.c > @@ -1920,7 +1920,7 @@ static int ipaddr_list_flush_or_save(int argc, char **argv, int action) > exit(1); > } > delete_json_obj(); > - exit(0); > + goto out; > } > > if (filter.family != AF_PACKET) { Applied
diff --git a/ip/ipaddress.c b/ip/ipaddress.c index 6c306ab7..b7b78f6e 100644 --- a/ip/ipaddress.c +++ b/ip/ipaddress.c @@ -1920,7 +1920,7 @@ static int ipaddr_list_flush_or_save(int argc, char **argv, int action) exit(1); } delete_json_obj(); - exit(0); + goto out; } if (filter.family != AF_PACKET) {
When 'ip link show dev DEVICE' is processed in a batch mode, ip exits and stop processing further commands. This because ipaddr_list_flush_or_save() calls exit() to avoid printing the link information twice. Replace the exit with a classic goto out instruction. Signed-off-by: Matteo Croce <mcroce@redhat.com> --- ip/ipaddress.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)