syslog-ng source
qdisk.c File Reference
#include "qdisk.h"
#include "logpipe.h"
#include "messages.h"
#include "serialize.h"
#include "logmsg/logmsg-serialize.h"
#include "stats/stats-registry.h"
#include "reloc.h"
#include "compat/lfs.h"
#include "scratch-buffers.h"
#include <fcntl.h>
#include <sys/stat.h>
#include <sys/mman.h>
#include <errno.h>
#include <unistd.h>
#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <sys/file.h>
Include dependency graph for qdisk.c:
This graph shows which files directly or indirectly include this file:

Classes

union  QDiskFileHeader
 
struct  QDisk
 

Macros

#define MADV_RANDOM   1
 
#define MAX_RECORD_LENGTH   100 * 1024 * 1024
 
#define PATH_QDISK   PATH_LOCALSTATEDIR
 
#define QDISK_HDR_VERSION_CURRENT   3
 
#define QDISK_FILENAME_PREFIX   "syslog-ng-"
 
#define QDISK_FILENAME_IDX_FMT   "%05d"
 
#define QDISK_FILENAME_IDX_EXAMPLE   "00000"
 
#define QDISK_FILENAME_REL_EXT   ".rqf"
 
#define QDISK_FILENAME_REL_FORMAT   QDISK_FILENAME_PREFIX QDISK_FILENAME_IDX_FMT QDISK_FILENAME_REL_EXT
 
#define QDISK_FILENAME_REL_EXAMPLE   QDISK_FILENAME_PREFIX QDISK_FILENAME_IDX_EXAMPLE QDISK_FILENAME_REL_EXT
 
#define QDISK_FILENAME_NON_REL_EXT   ".qf"
 
#define QDISK_FILENAME_NON_REL_FMT   QDISK_FILENAME_PREFIX QDISK_FILENAME_IDX_FMT QDISK_FILENAME_NON_REL_EXT
 
#define QDISK_FILENAME_NON_REL_EXAMPLE   QDISK_FILENAME_PREFIX QDISK_FILENAME_IDX_EXAMPLE QDISK_FILENAME_NON_REL_EXT
 
#define DIRLOCK_FILENAME   "syslog-ng-disk-buffer.dirlock"
 
#define QDISK_ERROR   qdisk_error_quark()
 
#define QDISK_ERROR_SERIALIZE   0
 
#define QDISK_ERROR_DESERIALIZE   1
 
#define try_load_queue(self, queue)   _try_to_load_queue(self, queue, &self->hdr->queue ##_pos, #queue)
 
#define _clear(obj)   memset(&obj, 0, sizeof(obj));
 
#define STRING_BUFFER_MEMORY_LIMIT   (8 * 1024)
 

Functions

GQuark qdisk_error_quark (void)
 
gchar * qdisk_get_next_filename (const gchar *dir, gboolean reliable)
 
gboolean qdisk_is_file_a_disk_buffer_file (const gchar *filename)
 
gboolean qdisk_is_disk_buffer_file_reliable (const gchar *filename, gboolean *reliable)
 
gboolean qdisk_started (QDisk *self)
 
gboolean qdisk_is_file_empty (QDisk *self)
 
gboolean qdisk_is_space_avail (QDisk *self, gint at_least)
 
gint64 qdisk_get_max_useful_space (QDisk *self)
 
gint64 qdisk_get_empty_space (QDisk *self)
 
gint64 qdisk_get_used_useful_space (QDisk *self)
 
gint64 qdisk_get_next_tail_position (QDisk *self)
 
gboolean qdisk_push_tail (QDisk *self, GString *record)
 
gint64 qdisk_get_next_head_position (QDisk *self)
 
gboolean qdisk_peek_head (QDisk *self, GString *record)
 
gboolean qdisk_pop_head (QDisk *self, GString *record)
 
gboolean qdisk_remove_head (QDisk *self)
 
gboolean qdisk_ack_backlog (QDisk *self)
 
gboolean qdisk_rewind_backlog (QDisk *self, guint rewind_count)
 
void qdisk_empty_backlog (QDisk *self)
 
gboolean qdisk_serialize (GString *serialized, QDiskSerializeFunc serialize_func, gpointer user_data, GError **error)
 
gboolean qdisk_deserialize (GString *serialized, QDiskDeSerializeFunc deserialize_func, gpointer user_data, GError **error)
 
gboolean _autodetect_capacity_bytes (QDisk *self)
 
gboolean qdisk_start (QDisk *self, GQueue *front_cache, GQueue *backlog, GQueue *flow_control_window)
 
gboolean qdisk_stop (QDisk *self, GQueue *front_cache, GQueue *backlog, GQueue *flow_control_window)
 
void qdisk_reset_file_if_empty (QDisk *self)
 
DiskQueueOptionsqdisk_get_options (QDisk *self)
 
gint64 qdisk_get_length (QDisk *self)
 
gint64 qdisk_get_maximum_size (QDisk *self)
 
const gchar * qdisk_get_filename (QDisk *self)
 
gint64 qdisk_get_file_size (QDisk *self)
 
gint64 qdisk_get_writer_head (QDisk *self)
 
gint64 qdisk_get_reader_head (QDisk *self)
 
gint64 qdisk_get_backlog_head (QDisk *self)
 
gint64 qdisk_get_backlog_count (QDisk *self)
 
gint qdisk_get_flow_control_window_bytes (QDisk *self)
 
gboolean qdisk_is_read_only (QDisk *self)
 
void qdisk_free (QDisk *self)
 
QDisk * qdisk_new (DiskQueueOptions *options, const gchar *file_id, const gchar *filename)
 

Macro Definition Documentation

◆ _clear

#define _clear (   obj)    memset(&obj, 0, sizeof(obj));

◆ DIRLOCK_FILENAME

#define DIRLOCK_FILENAME   "syslog-ng-disk-buffer.dirlock"

◆ MADV_RANDOM

#define MADV_RANDOM   1

◆ MAX_RECORD_LENGTH

#define MAX_RECORD_LENGTH   100 * 1024 * 1024

◆ PATH_QDISK

#define PATH_QDISK   PATH_LOCALSTATEDIR

◆ QDISK_ERROR

#define QDISK_ERROR   qdisk_error_quark()

◆ QDISK_ERROR_DESERIALIZE

#define QDISK_ERROR_DESERIALIZE   1

◆ QDISK_ERROR_SERIALIZE

#define QDISK_ERROR_SERIALIZE   0

◆ QDISK_FILENAME_IDX_EXAMPLE

#define QDISK_FILENAME_IDX_EXAMPLE   "00000"

◆ QDISK_FILENAME_IDX_FMT

#define QDISK_FILENAME_IDX_FMT   "%05d"

◆ QDISK_FILENAME_NON_REL_EXAMPLE

◆ QDISK_FILENAME_NON_REL_EXT

#define QDISK_FILENAME_NON_REL_EXT   ".qf"

◆ QDISK_FILENAME_NON_REL_FMT

◆ QDISK_FILENAME_PREFIX

#define QDISK_FILENAME_PREFIX   "syslog-ng-"

◆ QDISK_FILENAME_REL_EXAMPLE

◆ QDISK_FILENAME_REL_EXT

#define QDISK_FILENAME_REL_EXT   ".rqf"

◆ QDISK_FILENAME_REL_FORMAT

◆ QDISK_HDR_VERSION_CURRENT

#define QDISK_HDR_VERSION_CURRENT   3

◆ STRING_BUFFER_MEMORY_LIMIT

#define STRING_BUFFER_MEMORY_LIMIT   (8 * 1024)

◆ try_load_queue

#define try_load_queue (   self,
  queue 
)    _try_to_load_queue(self, queue, &self->hdr->queue ##_pos, #queue)

Function Documentation

◆ _autodetect_capacity_bytes()

gboolean _autodetect_capacity_bytes ( QDisk *  self)

◆ qdisk_ack_backlog()

gboolean qdisk_ack_backlog ( QDisk *  self)

◆ qdisk_deserialize()

gboolean qdisk_deserialize ( GString *  serialized,
QDiskDeSerializeFunc  deserialize_func,
gpointer  user_data,
GError **  error 
)

◆ qdisk_empty_backlog()

void qdisk_empty_backlog ( QDisk *  self)

◆ qdisk_error_quark()

GQuark qdisk_error_quark ( void  )

◆ qdisk_free()

void qdisk_free ( QDisk *  self)

◆ qdisk_get_backlog_count()

gint64 qdisk_get_backlog_count ( QDisk *  self)

◆ qdisk_get_backlog_head()

gint64 qdisk_get_backlog_head ( QDisk *  self)

◆ qdisk_get_empty_space()

gint64 qdisk_get_empty_space ( QDisk *  self)

◆ qdisk_get_file_size()

gint64 qdisk_get_file_size ( QDisk *  self)

◆ qdisk_get_filename()

const gchar* qdisk_get_filename ( QDisk *  self)

◆ qdisk_get_flow_control_window_bytes()

gint qdisk_get_flow_control_window_bytes ( QDisk *  self)

◆ qdisk_get_length()

gint64 qdisk_get_length ( QDisk *  self)

◆ qdisk_get_max_useful_space()

gint64 qdisk_get_max_useful_space ( QDisk *  self)

◆ qdisk_get_maximum_size()

gint64 qdisk_get_maximum_size ( QDisk *  self)

◆ qdisk_get_next_filename()

gchar* qdisk_get_next_filename ( const gchar *  dir,
gboolean  reliable 
)

◆ qdisk_get_next_head_position()

gint64 qdisk_get_next_head_position ( QDisk *  self)

◆ qdisk_get_next_tail_position()

gint64 qdisk_get_next_tail_position ( QDisk *  self)

◆ qdisk_get_options()

DiskQueueOptions* qdisk_get_options ( QDisk *  self)

◆ qdisk_get_reader_head()

gint64 qdisk_get_reader_head ( QDisk *  self)

◆ qdisk_get_used_useful_space()

gint64 qdisk_get_used_useful_space ( QDisk *  self)

◆ qdisk_get_writer_head()

gint64 qdisk_get_writer_head ( QDisk *  self)

◆ qdisk_is_disk_buffer_file_reliable()

gboolean qdisk_is_disk_buffer_file_reliable ( const gchar *  filename,
gboolean *  reliable 
)

◆ qdisk_is_file_a_disk_buffer_file()

gboolean qdisk_is_file_a_disk_buffer_file ( const gchar *  filename)

◆ qdisk_is_file_empty()

gboolean qdisk_is_file_empty ( QDisk *  self)

◆ qdisk_is_read_only()

gboolean qdisk_is_read_only ( QDisk *  self)

◆ qdisk_is_space_avail()

gboolean qdisk_is_space_avail ( QDisk *  self,
gint  at_least 
)

◆ qdisk_new()

QDisk* qdisk_new ( DiskQueueOptions options,
const gchar *  file_id,
const gchar *  filename 
)

◆ qdisk_peek_head()

gboolean qdisk_peek_head ( QDisk *  self,
GString *  record 
)

◆ qdisk_pop_head()

gboolean qdisk_pop_head ( QDisk *  self,
GString *  record 
)

◆ qdisk_push_tail()

gboolean qdisk_push_tail ( QDisk *  self,
GString *  record 
)

◆ qdisk_remove_head()

gboolean qdisk_remove_head ( QDisk *  self)

◆ qdisk_reset_file_if_empty()

void qdisk_reset_file_if_empty ( QDisk *  self)

◆ qdisk_rewind_backlog()

gboolean qdisk_rewind_backlog ( QDisk *  self,
guint  rewind_count 
)

◆ qdisk_serialize()

gboolean qdisk_serialize ( GString *  serialized,
QDiskSerializeFunc  serialize_func,
gpointer  user_data,
GError **  error 
)

◆ qdisk_start()

gboolean qdisk_start ( QDisk *  self,
GQueue *  front_cache,
GQueue *  backlog,
GQueue *  flow_control_window 
)

◆ qdisk_started()

gboolean qdisk_started ( QDisk *  self)

◆ qdisk_stop()

gboolean qdisk_stop ( QDisk *  self,
GQueue *  front_cache,
GQueue *  backlog,
GQueue *  flow_control_window 
)