[ovs-dev] [PATCH] ovs-vsctl: Change log level of vsctl_parent_process_info

Kyle Mestery mestery at mestery.com
Mon Aug 8 20:36:14 UTC 2016


On Mon, Aug 8, 2016 at 2:47 PM, Andy Zhou <azhou at ovn.org> wrote:
>
>
> On Mon, Aug 8, 2016 at 6:48 AM, Kyle Mestery <mestery at mestery.com> wrote:
>>
>> While running the ovn-scale-test [1] port-binding tests [2], I notice a
>> continual stream of messages such as this:
>>
>> 2016-08-04 13:05:28.705 547 INFO rally_ovs.plugins.ovs.scenarios.ovn [-]
>> bind lport_0996bf_cikzNO to sandbox-172.16.200.24 on
>> ovn-farm-node-uat-dal09-compute-325
>> 2016-08-04 13:05:28.712 547 INFO paramiko.transport [-] Connected (version
>> 2.0, client OpenSSH_6.6.1p1)
>> 2016-08-04 13:05:28.805 547 INFO paramiko.transport [-] Authentication
>> (publickey) successful!
>> 2016-08-04T13:05:28Z|00002|vsctl|WARN|/proc/0/cmdline: open failed (No
>> such file or directory)
>> 2016-08-04T13:05:29Z|00002|vsctl|WARN|/proc/0/cmdline: open failed (No
>> such file or directory)
>> 2016-08-04 13:05:29.042 547 INFO rally_ovs.plugins.ovs.scenarios.ovn [-]
>> bind lport_0996bf_tvovcK to sandbox-172.16.200.24 on
>> ovn-farm-node-uat-dal09-compute-325
>> 2016-08-04T13:05:29Z|00002|vsctl|WARN|/proc/0/cmdline: open failed (No
>> such file or directory)
>> 2016-08-04T13:05:29Z|00002|vsctl|WARN|/proc/0/cmdline: open failed (No
>> such file or directory)
>> 2016-08-04 13:05:29.285 547 INFO rally_ovs.plugins.ovs.scenarios.ovn [-]
>> bind lport_0996bf_HwG7AK to sandbox-172.16.200.24 on
>> ovn-farm-node-uat-dal09-compute-325
>> 2016-08-04T13:05:29Z|00002|vsctl|WARN|/proc/0/cmdline: open failed (No
>> such file or directory)
>> 2016-08-04T13:05:29Z|00002|vsctl|WARN|/proc/0/cmdline: open failed (No
>> such file or directory)
>> 2016-08-04 13:05:29.505 547 INFO rally_ovs.plugins.ovs.scenarios.ovn [-]
>> bind lport_0996bf_Lqbv92 to sandbox-172.16.200.24 on
>> ovn-farm-node-uat-dal09-compute-325
>> 2016-08-04T13:05:29Z|00002|vsctl|WARN|/proc/0/cmdline: open failed (No
>> such file or directory)
>> 2016-08-04T13:05:29Z|00002|vsctl|WARN|/proc/0/cmdline: open failed (No
>> such file or directory)
>> 2016-08-04 13:05:29.724 547 INFO rally_ovs.plugins.ovs.scenarios.ovn [-]
>> bind lport_0996bf_6f8uQW to sandbox-172.16.200.24 on
>> ovn-farm-node-uat-dal09-compute-325
>> 2016-08-04T13:05:29Z|00002|vsctl|WARN|/proc/0/cmdline: open failed (No
>> such file or directory)
>> 2016-08-04T13:05:29Z|00002|vsctl|WARN|/proc/0/cmdline: open failed (No
>> such file or directory)
>> 2016-08-04 13:05:29.944 547 INFO rally_ovs.plugins.ovs.scenarios.ovn [-]
>> bind lport_0996bf_nKl2XF to sandbox-172.16.200.24 on
>> ovn-farm-node-uat-dal09-compute-325
>>
>> Tracing these down, this is due to the check in
>> vsctl_parent_process_info(),
>> which is verifying if the parent process can be opened. Since
>> ovn-scale-test
>> runs sandboxes in containers, and these are run as root, there is no
>> /proc/0
>> in the container. Thus, the check fails, and the error message is printed
>> out.
>> It's unclear what value this log message provides, so removing it clears
>> up
>> this problem and is probably the best option.
>>
>> [1] https://github.com/openvswitch/ovn-scale-test
>> [2]
>> https://github.com/openvswitch/ovn-scale-test/blob/master/rally_ovs/plugins/ovs/scenarios/ovn.py#L255
>>
>> Signed-off-by: Kyle Mestery <mestery at mestery.com>
>>
>
>
> Thanks for the v2.
>
> Acked-by: Andy Zhou <azhou at ovn.org>
>
> Since one aspect of the issue is about access to /proc/0, which does not
> exist in a non-container evironment as well, I'd like to
> fold in the following incremental as well.  What do you think?
>

Works for me, thanks Andy!

>
> diff --git a/utilities/ovs-vsctl.c b/utilities/ovs-vsctl.c
> index 06b7e46..2ef8824 100644
> --- a/utilities/ovs-vsctl.c
> +++ b/utilities/ovs-vsctl.c
> @@ -2474,29 +2474,37 @@ vsctl_parent_process_info(void)
>  {
>  #ifdef __linux__
>      pid_t parent_pid;
> -    char *procfile;
>      struct ds s;
> -    FILE *f;
>
>      parent_pid = getppid();
> -    procfile = xasprintf("/proc/%d/cmdline", parent_pid);
> +    ds_init(&s);
> +
> +    /* Retrive the command line of the parent process, except the init
> +     * process since /proc/0 does not exist. */
> +    if (parent_pid != 0) {
> +        char *procfile;
> +        FILE *f;
> +
> +        procfile = xasprintf("/proc/%d/cmdline", parent_pid);
>
> -    f = fopen(procfile, "r");
> -    if (!f) {
> +        f = fopen(procfile, "r");
> +        if (!f) {
> +            free(procfile);
> +            return NULL;
> +        }
>          free(procfile);
> -        return NULL;
> -    }
> -    free(procfile);
>
> -    ds_init(&s);
> -    for (;;) {
> -        int c = getc(f);
> -        if (!c || c == EOF) {
> +        for (;;) {
> +            int c = getc(f);
> +            if (!c || c == EOF) {
>              break;
> +            }
> +            ds_put_char(&s, c);
>          }
> -        ds_put_char(&s, c);
> +        fclose(f);
> +    } else {
> +        ds_put_cstr(&s, "init");
>      }
> -    fclose(f);
>
>      ds_put_format(&s, " (pid %d)", parent_pid);
>
> --
> 1.9.1
>
>
>



More information about the dev mailing list