PostgreSQL Source Code: src/bin/pg_verifybackup/astreamer_verify.c Source File (original) (raw)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

16

20

22{

23

28

29

38

41 const char *data, int len,

45

49 const char *data, int len);

53 const char *data, int len);

56

61};

62

63

64

65

68 char *archive_name, Oid tblspc_oid)

69{

71

75

77 streamer->context = context;

80

83

84 return &streamer->base;

85}

86

87

88

89

90static void

92 const char *data, int len,

94{

96

98

99 switch (context)

100 {

102

104 break;

105

107

112 break;

113

115

120

121

123 break;

124

126 break;

127

128 default:

129

130 pg_fatal("unexpected state while parsing tar archive");

131 }

132}

133

134

135

136

137static void

139{

141}

142

143

144

145

146static void

148{

150

153

155}

156

157

158

159

160static void

162{

166

167

169 return;

170

171

172

173

174

175

176

177

178

179

180

181

185 else

188

189

191 return;

192

193

195 if (m == NULL)

196 {

198 "file \"%s\" is present in archive \"%s\" but not in the manifest",

200 return;

201 }

202 mystreamer->mfile = m;

203

204

206

207

209 {

211 "file \"%s\" has size %llu in archive \"%s\" but size %" PRIu64 " in the manifest",

213 (unsigned long long) member->size,

216 m->bad = true;

217 return;

218 }

219

220

221

222

223

224

230

231

234 {

236 "%s: could not initialize checksum of file \"%s\"",

238

239

240

241

242

244 }

245}

246

247

248

249

250

251

252

253static void

255 const char *data, int len)

256{

260

263

264

265

266

267

269

270

272 {

274 "could not update checksum of file \"%s\"",

277 }

278}

279

280

281

282

283

284static void

286{

290 int checksumlen;

291

293

294

295

296

298 {

300 "file \"%s\" in archive \"%s\" should contain %" PRIu64 " bytes, but %" PRIu64 " bytes were read",

304 return;

305 }

306

307

309 if (checksumlen < 0)

310 {

312 "could not finalize checksum of file \"%s\"",

314 return;

315 }

316

317

320 "file \"%s\" in archive \"%s\" has checksum of length %d, but expected %d",

323 else if (memcmp(checksumbuf, m->checksum_payload, checksumlen) != 0)

325 "checksum mismatch for file \"%s\" in archive \"%s\"",

327}

328

329

330

331

332

333static void

335 const char *data, int len)

336{

338

339

341

342

343

344

345

346

347

349 {

351

356 }

357

358

360}

361

362

363

364

365

366static void

368{

372

373

376

377

378

379

380

381

382

383

384

385

390

391

396

397

402

403

408

409

410 if (manifest->system_identifier !=

412 report_fatal_error("%s: %s: manifest system identifier is %" PRIu64 ", but control file has %" PRIu64,

417}

418

419

420

421

422static void

424{

426

427 mystreamer->mfile = NULL;

432}

astreamer_archive_context

@ ASTREAMER_MEMBER_HEADER

@ ASTREAMER_MEMBER_CONTENTS

@ ASTREAMER_MEMBER_TRAILER

@ ASTREAMER_ARCHIVE_TRAILER

static void member_copy_control_data(astreamer *streamer, astreamer_member *member, const char *data, int len)

static void member_verify_header(astreamer *streamer, astreamer_member *member)

static void astreamer_verify_finalize(astreamer *streamer)

static void member_compute_checksum(astreamer *streamer, astreamer_member *member, const char *data, int len)

static void astreamer_verify_content(astreamer *streamer, astreamer_member *member, const char *data, int len, astreamer_archive_context context)

astreamer * astreamer_verify_content_new(astreamer *next, verifier_context *context, char *archive_name, Oid tblspc_oid)

static void member_reset_info(astreamer *streamer)

struct astreamer_verify astreamer_verify

static void member_verify_control_data(astreamer *streamer)

static const astreamer_ops astreamer_verify_ops

static void astreamer_verify_free(astreamer *streamer)

static void member_verify_checksum(astreamer *streamer)

#define OidIsValid(objectId)

int pg_checksum_final(pg_checksum_context *context, uint8 *output)

int pg_checksum_update(pg_checksum_context *context, const uint8 *input, size_t len)

int pg_checksum_init(pg_checksum_context *context, pg_checksum_type type)

#define PG_CHECKSUM_MAX_LENGTH

void * pg_malloc(size_t size)

Assert(PointerIsAligned(start, uint64))

void pfree(void *pointer)

void * palloc0(Size size)

struct ControlFileData ControlFileData

#define PG_CONTROL_VERSION

#define PG_CONTROL_FILE_SIZE

#define COMP_CRC32C(crc, data, len)

#define EQ_CRC32C(c1, c2)

void report_fatal_error(const char *pg_restrict fmt,...)

bool should_ignore_relpath(verifier_context *context, const char *relpath)

void report_backup_error(verifier_context *context, const char *pg_restrict fmt,...)

#define should_verify_checksum(m)

void canonicalize_path(char *path)

uint32 pg_control_version

void(* content)(astreamer *streamer, astreamer_member *member, const char *data, int len, astreamer_archive_context context)

verifier_context * context

ControlFileData control_file

uint64 control_file_bytes

pg_checksum_context * checksum_ctx

const astreamer_ops * bbs_ops

manifest_files_hash * files

pg_checksum_type checksum_type

#define XLOG_CONTROL_FILE