Great catch!  Thanks, Ben.

--Justin


On Jun 29, 2012, at 12:28 PM, Ben Pfaff wrote:

> mlockall(2) says:
> 
>     Memory  locks  are not inherited by a child created via fork(2) and are
>     automatically removed  (unlocked)  during  an  execve(2)  or  when  the
>     process terminates.
> 
> which means that --mlockall was ineffective in combination with --detach
> or --monitor or both.  Both are used in the most common production
> configuration of Open vSwitch, so this means that --mlockall has never been
> effective in production.
> 
> Signed-off-by: Ben Pfaff <[email protected]>
> ---
> vswitchd/ovs-vswitchd.c |   22 +++++++++++++++-------
> 1 files changed, 15 insertions(+), 7 deletions(-)
> 
> diff --git a/vswitchd/ovs
--- Begin Message ---


Title Unable to back through NVP gateway (Priority 2)

Eric Lopez is the assigned Customer Engineer 
Created on 6/29/2012 9:27 am, Status is Identified

Contact Carl Perry

Description 

Carl was able to spin up a VM and have it communicate through the NVP gateway out to the internet (8.8.8.8, google, etc). But when he tried to communicate back through the NVP gateway from the physical side of the house, it wouldn’t’ work.

Case history https://360.nicira.com/case/15587

You requested to receive an email alert for this record. Click here to modify your email alerts


--- End Message ---
> -vswitchd.c b/vswitchd/ovs-vswitchd.c
> index 8ef3b10..6062a40 100644
> --- a/vswitchd/ovs-vswitchd.c
> +++ b/vswitchd/ovs-vswitchd.c
> @@ -55,6 +55,10 @@
> 
> VLOG_DEFINE_THIS_MODULE(vswitchd);
> 
> +/* --mlockall: If set, locks all process memory into physical RAM, preventing
> + * the kernel from paging any of its memory to disk. */
> +static bool want_mlockall;
> +
> static unixctl_cb_func ovs_vswitchd_exit;
> 
> static char *parse_options(int argc, char *argv[], char **unixctl_path);
> @@ -81,6 +85,16 @@ main(int argc, char *argv[])
> 
>   daemonize_start();
> 
> +    if (want_mlockall) {
> +#ifdef HAVE_MLOCKALL
> +        if (mlockall(MCL_CURRENT | MCL_FUTURE)) {
> +            VLOG_ERR("mlockall failed: %s", strerror(errno));
> +        }
> +#else
> +        VLOG_ERR("mlockall not supported on this system");
> +#endif
> +    }
> +
>   retval = unixctl_server_create(unixctl_path, &unixctl);
>   if (retval) {
>       exit(EXIT_FAILURE);
> @@ -175,13 +189,7 @@ parse_options(int argc, char *argv[], char 
> **unixctl_pathp)
>           exit(EXIT_SUCCESS);
> 
>       case OPT_MLOCKALL:
> -#ifdef HAVE_MLOCKALL
> -            if (mlockall(MCL_CURRENT | MCL_FUTURE)) {
> -                VLOG_ERR("mlockall failed: %s", strerror(errno));
> -            }
> -#else
> -            VLOG_ERR("mlockall not supported on this system");
> -#endif
> +            want_mlockall = true;
>           break;
> 
>       case OPT_UNIXCTL:
> -- 
> 1.7.2.5
> 
> _______________________________________________
> dev mailing list
> [email protected]
> http://openvswitch.org/mailman/listinfo/dev

_______________________________________________
dev mailing list
[email protected]
http://openvswitch.org/mailman/listinfo/dev

Reply via email to