PostgreSQL Source Code  git master
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros
basebackup.h File Reference
#include "nodes/replnodes.h"
Include dependency graph for basebackup.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  tablespaceinfo


#define MAX_RATE_LOWER   32
#define MAX_RATE_UPPER   1048576


void SendBaseBackup (BaseBackupCmd *cmd)
int64 sendTablespace (char *path, bool sizeonly)

Macro Definition Documentation

#define MAX_RATE_LOWER   32

Definition at line 20 of file basebackup.h.

Referenced by parse_basebackup_options().

#define MAX_RATE_UPPER   1048576

Definition at line 21 of file basebackup.h.

Referenced by parse_basebackup_options(), and parse_max_rate().

Function Documentation

void SendBaseBackup ( BaseBackupCmd cmd)

Definition at line 683 of file basebackup.c.

References AllocateDir(), ereport, errmsg(), ERROR, FreeDir(), basebackup_options::label, BaseBackupCmd::options, parse_basebackup_options(), perform_base_backup(), set_ps_display(), snprintf(), update_process_title, WalSndSetState(), and WALSNDSTATE_BACKUP.

Referenced by exec_replication_command().

684 {
685  DIR *dir;
686  basebackup_options opt;
688  parse_basebackup_options(cmd->options, &opt);
693  {
694  char activitymsg[50];
696  snprintf(activitymsg, sizeof(activitymsg), "sending backup \"%s\"",
697  opt.label);
698  set_ps_display(activitymsg, false);
699  }
701  /* Make sure we can open the directory with tablespaces in it */
702  dir = AllocateDir("pg_tblspc");
703  if (!dir)
704  ereport(ERROR,
705  (errmsg("could not open directory \"%s\": %m", "pg_tblspc")));
707  perform_base_backup(&opt, dir);
709  FreeDir(dir);
710 }
List * options
Definition: replnodes.h:44
bool update_process_title
Definition: ps_status.c:35
void set_ps_display(const char *activity, bool force)
Definition: ps_status.c:326
static void parse_basebackup_options(List *options, basebackup_options *opt)
Definition: basebackup.c:577
int snprintf(char *str, size_t count, const char *fmt,...) pg_attribute_printf(3
Definition: dirent.c:25
#define ERROR
Definition: elog.h:43
static void perform_base_backup(basebackup_options *opt, DIR *tblspcdir)
Definition: basebackup.c:184
const char * label
Definition: basebackup.c:44
DIR * AllocateDir(const char *dirname)
Definition: fd.c:2207
#define ereport(elevel, rest)
Definition: elog.h:122
void WalSndSetState(WalSndState state)
Definition: walsender.c:2656
int errmsg(const char *fmt,...)
Definition: elog.c:797
int FreeDir(DIR *dir)
Definition: fd.c:2316
int64 sendTablespace ( char *  path,
bool  sizeonly 

Definition at line 903 of file basebackup.c.

References _tarWriteHeader(), ereport, errcode_for_file_access(), errmsg(), ERROR, lstat, MAXPGPATH, NIL, NULL, sendDir(), snprintf(), and TABLESPACE_VERSION_DIRECTORY.

Referenced by do_pg_start_backup(), and perform_base_backup().

904 {
905  int64 size;
906  char pathbuf[MAXPGPATH];
907  struct stat statbuf;
909  /*
910  * 'path' points to the tablespace location, but we only want to include
911  * the version directory in it that belongs to us.
912  */
913  snprintf(pathbuf, sizeof(pathbuf), "%s/%s", path,
916  /*
917  * Store a directory entry in the tar file so we get the permissions
918  * right.
919  */
920  if (lstat(pathbuf, &statbuf) != 0)
921  {
922  if (errno != ENOENT)
923  ereport(ERROR,
925  errmsg("could not stat file or directory \"%s\": %m",
926  pathbuf)));
928  /* If the tablespace went away while scanning, it's no error. */
929  return 0;
930  }
933  sizeonly);
935  /* Send all the files in the tablespace version directory */
936  size += sendDir(pathbuf, strlen(path), sizeonly, NIL, true);
938  return size;
939 }
static int64 sendDir(char *path, int basepathlen, bool sizeonly, List *tablespaces, bool sendtblspclinks)
Definition: basebackup.c:954
#define NIL
Definition: pg_list.h:69
int snprintf(char *str, size_t count, const char *fmt,...) pg_attribute_printf(3
#define ERROR
Definition: elog.h:43
int errcode_for_file_access(void)
Definition: elog.c:598
static int64 _tarWriteHeader(const char *filename, const char *linktarget, struct stat *statbuf, bool sizeonly)
Definition: basebackup.c:1272
#define ereport(elevel, rest)
Definition: elog.h:122
#define NULL
Definition: c.h:226
Definition: catalog.h:26
int errmsg(const char *fmt,...)
Definition: elog.c:797
#define lstat(path, sb)
Definition: win32.h:272