Looks good.

Ethan

On Fri, Oct 14, 2011 at 11:37, Ben Pfaff <[email protected]> wrote:
> Avoids redundant "closing log file"/"opened log file" messages in log files.
>
> Reported-by: Reid Price <[email protected]>
> Bug #7750.
> ---
>  lib/vlog.c |   21 ++++++++++++++++++++-
>  1 files changed, 20 insertions(+), 1 deletions(-)
>
> diff --git a/lib/vlog.c b/lib/vlog.c
> index 301473c..11b2f7c 100644
> --- a/lib/vlog.c
> +++ b/lib/vlog.c
> @@ -22,6 +22,7 @@
>  #include <stdarg.h>
>  #include <stdlib.h>
>  #include <string.h>
> +#include <sys/stat.h>
>  #include <sys/types.h>
>  #include <syslog.h>
>  #include <time.h>
> @@ -322,7 +323,25 @@ vlog_set_log_file(const char *file_name)
>  int
>  vlog_reopen_log_file(void)
>  {
> -    return log_file_name ? vlog_set_log_file(log_file_name) : 0;
> +    struct stat old, new;
> +
> +    /* Skip re-opening if there's nothing to reopen. */
> +    if (!log_file_name) {
> +        return 0;
> +    }
> +
> +    /* Skip re-opening if it would be a no-op because the old and new files 
> are
> +     * the same.  (This avoids writing "closing log file" followed 
> immediately
> +     * by "opened log file".) */
> +    if (log_file
> +        && !fstat(fileno(log_file), &old)
> +        && !stat(log_file_name, &new)
> +        && old.st_dev == new.st_dev
> +        && old.st_ino == new.st_ino) {
> +        return 0;
> +    }
> +
> +    return vlog_set_log_file(log_file_name);
>  }
>
>  /* Set debugging levels:
> --
> 1.7.4.4
>
> _______________________________________________
> 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