Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on May 7th, 2012  |  syntax: None  |  size: 4.33 KB  |  hits: 12  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. diff -ur syslog-ng-3.0.6.orig/src/affile.c syslog-ng-3.0.6/src/affile.c
  2. --- syslog-ng-3.0.6.orig/src/affile.c   2010-07-27 13:22:07.000000000 -0700
  3. +++ syslog-ng-3.0.6/src/affile.c        2010-07-28 12:44:40.000000000 -0700
  4. @@ -88,6 +88,12 @@
  5.        if (mkfifo(name, 0666) >= 0)
  6.          *fd = open(name, flags, 0666);
  7.      }
  8. +    
  9. +  if(*fd != -1 )
  10. +    {
  11. +      int ret;
  12. +      ret = posix_fadvise(fd, (off_t)0, (off_t)0, advice);
  13. +    }
  14.  
  15.    if (*fd != -1)
  16.      {
  17. @@ -591,6 +597,30 @@
  18.  }
  19.  
  20.  void
  21. +affile_dd_set_fadvise(LogDriver *s, const gchar *advice)
  22. +{
  23. +
  24. +  AFFileDestDriver *self = (AFFileDestDriver *) s;
  25. +
  26. +  self->advice = POSIX_FADV_NORMAL;
  27. +
  28. +  if (stricmp(advice, "normal") == 0)
  29. +    self->advice = POSIX_FADV_NORMAL;
  30. +  else if (stricmp(advice, "random") == 0 )
  31. +    self->advice = POSIX_FADV_RANDOM;
  32. +  else if (stricmp(advice, "sequential") == 0 )
  33. +       self->advice = POSIX_FADV_SEQUENTIAL;
  34. +  else if (stricmp(advice, "willneed") == 0 )
  35. +       self->advice = POSIX_FADV_WILLNEED;
  36. +  else if (stricmp(advice, "dontneed") == 0 )
  37. +       self->advice = POSIX_FADV_DONTNEED;
  38. +  else if (stricmp(advice, "noreuse") == 0 )
  39. +       self->advice = POSIX_FADV_NOREUSE;
  40. +  else
  41. +       msg_error("Unknown fadvise flag", evt_tag_str("advice", advice), NULL);
  42. +}
  43. +
  44. +void
  45.  affile_dd_set_file_gid(LogDriver *s, const gchar *file_gid)
  46.  {
  47.    AFFileDestDriver *self = (AFFileDestDriver *) s;
  48. @@ -970,6 +1000,7 @@
  49.    self->super.super.free_fn = affile_dd_free;
  50.    self->filename_template = log_template_new(NULL, filename);
  51.    self->flags = flags;
  52. +  self->advice = 0;
  53.    self->file_uid = self->file_gid = -1;
  54.    self->file_perm = (mode_t) -1;
  55.    self->dir_uid = self->dir_gid = -1;
  56. diff -ur syslog-ng-3.0.6.orig/src/affile.h syslog-ng-3.0.6/src/affile.h
  57. --- syslog-ng-3.0.6.orig/src/affile.h   2010-07-27 13:22:07.000000000 -0700
  58. +++ syslog-ng-3.0.6/src/affile.h        2010-07-28 11:32:45.000000000 -0700
  59. @@ -27,6 +27,7 @@
  60.  #include "driver.h"
  61.  #include "logreader.h"
  62.  #include "logwriter.h"
  63. +#include <fcntl.h>
  64.  
  65.  #define AFFILE_PIPE        0x00000001
  66.  #define AFFILE_NO_EXPAND   0x00000002
  67. @@ -59,6 +60,7 @@
  68.    LogTemplate *filename_template;
  69.    AFFileDestWriter *single_writer;
  70.    guint32 flags;
  71. +  guint32 advice;
  72.    uid_t file_uid;
  73.    gid_t file_gid;
  74.    mode_t file_perm;
  75. @@ -80,6 +82,7 @@
  76.  
  77.  void affile_dd_set_compress(LogDriver *s, gboolean compress);
  78.  void affile_dd_set_encrypt(LogDriver *s, gboolean enable);
  79. +void affile_dd_set_fadvise(LogDriver *s, const gchar *file_uid);
  80.  void affile_dd_set_file_uid(LogDriver *s, const gchar *file_uid);
  81.  void affile_dd_set_file_gid(LogDriver *s, const gchar *file_gid);
  82.  void affile_dd_set_file_perm(LogDriver *s, mode_t file_perm);
  83. diff -ur syslog-ng-3.0.6.orig/src/cfg-grammar.y syslog-ng-3.0.6/src/cfg-grammar.y
  84. --- syslog-ng-3.0.6.orig/src/cfg-grammar.y      2010-07-27 13:22:07.000000000 -0700
  85. +++ syslog-ng-3.0.6/src/cfg-grammar.y   2010-07-28 11:24:28.000000000 -0700
  86. @@ -1,4 +1,4 @@
  87. -%{
  88. +q%{
  89.  
  90.  #include "syslog-ng.h"
  91.  #include "cfg.h"
  92. @@ -150,6 +150,7 @@
  93.  
  94.  /* file related options */
  95.  %token KW_CREATE_DIRS
  96. +%token KW_FADVISE
  97.  %token KW_OWNER KW_GROUP KW_PERM
  98.  %token KW_DIR_OWNER KW_DIR_GROUP KW_DIR_PERM
  99.  %token KW_TEMPLATE KW_TEMPLATE_ESCAPE
  100. @@ -535,6 +536,7 @@
  101.  source_afunix_option
  102.         : KW_OWNER '(' string_or_number ')'     { afunix_sd_set_uid(last_driver, $3); free($3); }
  103.         | KW_GROUP '(' string_or_number ')'     { afunix_sd_set_gid(last_driver, $3); free($3); }
  104. +       | KW_GROUP '(' FADVISE ')'      { afunix_sd_set_gid(last_driver, $3); free($3); }
  105.         | KW_PERM '(' LL_NUMBER ')'             { afunix_sd_set_perm(last_driver, $3); }
  106.         | KW_OPTIONAL '(' yesno ')'             { last_driver->optional = $3; }
  107.         | source_afsocket_stream_params         {}
  108. @@ -791,6 +793,7 @@
  109.  dest_affile_option
  110.         : dest_writer_option
  111.         | KW_OPTIONAL '(' yesno ')'             { last_driver->optional = $3; }
  112. +       | KW_FADVISE '(' string ')'             { affile_dd_set_fadvise(last_driver, $3); free($3); }
  113.         | KW_OWNER '(' string_or_number ')'     { affile_dd_set_file_uid(last_driver, $3); free($3); }
  114.         | KW_GROUP '(' string_or_number ')'     { affile_dd_set_file_gid(last_driver, $3); free($3); }
  115.         | KW_PERM '(' LL_NUMBER ')'             { affile_dd_set_file_perm(last_driver, $3); }