- diff -ur syslog-ng-3.0.6.orig/src/affile.c syslog-ng-3.0.6/src/affile.c
- --- syslog-ng-3.0.6.orig/src/affile.c 2010-07-27 13:22:07.000000000 -0700
- +++ syslog-ng-3.0.6/src/affile.c 2010-07-28 12:44:40.000000000 -0700
- @@ -88,6 +88,12 @@
- if (mkfifo(name, 0666) >= 0)
- *fd = open(name, flags, 0666);
- }
- +
- + if(*fd != -1 )
- + {
- + int ret;
- + ret = posix_fadvise(fd, (off_t)0, (off_t)0, advice);
- + }
- if (*fd != -1)
- {
- @@ -591,6 +597,30 @@
- }
- void
- +affile_dd_set_fadvise(LogDriver *s, const gchar *advice)
- +{
- +
- + AFFileDestDriver *self = (AFFileDestDriver *) s;
- +
- + self->advice = POSIX_FADV_NORMAL;
- +
- + if (stricmp(advice, "normal") == 0)
- + self->advice = POSIX_FADV_NORMAL;
- + else if (stricmp(advice, "random") == 0 )
- + self->advice = POSIX_FADV_RANDOM;
- + else if (stricmp(advice, "sequential") == 0 )
- + self->advice = POSIX_FADV_SEQUENTIAL;
- + else if (stricmp(advice, "willneed") == 0 )
- + self->advice = POSIX_FADV_WILLNEED;
- + else if (stricmp(advice, "dontneed") == 0 )
- + self->advice = POSIX_FADV_DONTNEED;
- + else if (stricmp(advice, "noreuse") == 0 )
- + self->advice = POSIX_FADV_NOREUSE;
- + else
- + msg_error("Unknown fadvise flag", evt_tag_str("advice", advice), NULL);
- +}
- +
- +void
- affile_dd_set_file_gid(LogDriver *s, const gchar *file_gid)
- {
- AFFileDestDriver *self = (AFFileDestDriver *) s;
- @@ -970,6 +1000,7 @@
- self->super.super.free_fn = affile_dd_free;
- self->filename_template = log_template_new(NULL, filename);
- self->flags = flags;
- + self->advice = 0;
- self->file_uid = self->file_gid = -1;
- self->file_perm = (mode_t) -1;
- self->dir_uid = self->dir_gid = -1;
- diff -ur syslog-ng-3.0.6.orig/src/affile.h syslog-ng-3.0.6/src/affile.h
- --- syslog-ng-3.0.6.orig/src/affile.h 2010-07-27 13:22:07.000000000 -0700
- +++ syslog-ng-3.0.6/src/affile.h 2010-07-28 11:32:45.000000000 -0700
- @@ -27,6 +27,7 @@
- #include "driver.h"
- #include "logreader.h"
- #include "logwriter.h"
- +#include <fcntl.h>
- #define AFFILE_PIPE 0x00000001
- #define AFFILE_NO_EXPAND 0x00000002
- @@ -59,6 +60,7 @@
- LogTemplate *filename_template;
- AFFileDestWriter *single_writer;
- guint32 flags;
- + guint32 advice;
- uid_t file_uid;
- gid_t file_gid;
- mode_t file_perm;
- @@ -80,6 +82,7 @@
- void affile_dd_set_compress(LogDriver *s, gboolean compress);
- void affile_dd_set_encrypt(LogDriver *s, gboolean enable);
- +void affile_dd_set_fadvise(LogDriver *s, const gchar *file_uid);
- void affile_dd_set_file_uid(LogDriver *s, const gchar *file_uid);
- void affile_dd_set_file_gid(LogDriver *s, const gchar *file_gid);
- void affile_dd_set_file_perm(LogDriver *s, mode_t file_perm);
- diff -ur syslog-ng-3.0.6.orig/src/cfg-grammar.y syslog-ng-3.0.6/src/cfg-grammar.y
- --- syslog-ng-3.0.6.orig/src/cfg-grammar.y 2010-07-27 13:22:07.000000000 -0700
- +++ syslog-ng-3.0.6/src/cfg-grammar.y 2010-07-28 11:24:28.000000000 -0700
- @@ -1,4 +1,4 @@
- -%{
- +q%{
- #include "syslog-ng.h"
- #include "cfg.h"
- @@ -150,6 +150,7 @@
- /* file related options */
- %token KW_CREATE_DIRS
- +%token KW_FADVISE
- %token KW_OWNER KW_GROUP KW_PERM
- %token KW_DIR_OWNER KW_DIR_GROUP KW_DIR_PERM
- %token KW_TEMPLATE KW_TEMPLATE_ESCAPE
- @@ -535,6 +536,7 @@
- source_afunix_option
- : KW_OWNER '(' string_or_number ')' { afunix_sd_set_uid(last_driver, $3); free($3); }
- | KW_GROUP '(' string_or_number ')' { afunix_sd_set_gid(last_driver, $3); free($3); }
- + | KW_GROUP '(' FADVISE ')' { afunix_sd_set_gid(last_driver, $3); free($3); }
- | KW_PERM '(' LL_NUMBER ')' { afunix_sd_set_perm(last_driver, $3); }
- | KW_OPTIONAL '(' yesno ')' { last_driver->optional = $3; }
- | source_afsocket_stream_params {}
- @@ -791,6 +793,7 @@
- dest_affile_option
- : dest_writer_option
- | KW_OPTIONAL '(' yesno ')' { last_driver->optional = $3; }
- + | KW_FADVISE '(' string ')' { affile_dd_set_fadvise(last_driver, $3); free($3); }
- | KW_OWNER '(' string_or_number ')' { affile_dd_set_file_uid(last_driver, $3); free($3); }
- | KW_GROUP '(' string_or_number ')' { affile_dd_set_file_gid(last_driver, $3); free($3); }
- | KW_PERM '(' LL_NUMBER ')' { affile_dd_set_file_perm(last_driver, $3); }