1 /*-
2  * Copyright (c) 2014-2018 MongoDB, Inc.
3  * Copyright (c) 2008-2014 WiredTiger, Inc.
4  *	All rights reserved.
5  *
6  * See the file LICENSE for redistribution information.
7  */
8 
9 #define	WT_WIREDTIGER		"WiredTiger"		/* Version file */
10 #define	WT_SINGLETHREAD		"WiredTiger.lock"	/* Locking file */
11 
12 #define	WT_BASECONFIG		"WiredTiger.basecfg"	/* Base configuration */
13 #define	WT_BASECONFIG_SET	"WiredTiger.basecfg.set"/* Base config temp */
14 
15 #define	WT_USERCONFIG		"WiredTiger.config"	/* User configuration */
16 
17 #define	WT_BACKUP_TMP		"WiredTiger.backup.tmp"	/* Backup tmp file */
18 #define	WT_METADATA_BACKUP	"WiredTiger.backup"	/* Hot backup file */
19 #define	WT_INCREMENTAL_BACKUP	"WiredTiger.ibackup"	/* Incremental backup */
20 #define	WT_INCREMENTAL_SRC	"WiredTiger.isrc"	/* Incremental source */
21 
22 #define	WT_METADATA_TURTLE	"WiredTiger.turtle"	/* Metadata metadata */
23 #define	WT_METADATA_TURTLE_SET	"WiredTiger.turtle.set"	/* Turtle temp file */
24 
25 #define	WT_METADATA_URI		"metadata:"		/* Metadata alias */
26 #define	WT_METAFILE		"WiredTiger.wt"		/* Metadata table */
27 #define	WT_METAFILE_SLVG	"WiredTiger.wt.orig"	/* Metadata copy */
28 #define	WT_METAFILE_URI		"file:WiredTiger.wt"	/* Metadata table URI */
29 
30 #define	WT_LAS_FILE		"WiredTigerLAS.wt"	/* Lookaside table */
31 #define	WT_LAS_URI		"file:WiredTigerLAS.wt"	/* Lookaside table URI*/
32 
33 #define	WT_SYSTEM_PREFIX	"system:"		/* System URI prefix */
34 #define	WT_SYSTEM_CKPT_URI	"system:checkpoint"	/* Checkpoint URI */
35 
36 /*
37  * Optimize comparisons against the metafile URI, flag handles that reference
38  * the metadata file.
39  */
40 #define	WT_IS_METADATA(dh)      F_ISSET((dh), WT_DHANDLE_IS_METADATA)
41 #define	WT_METAFILE_ID		0			/* Metadata file ID */
42 
43 #define	WT_METADATA_COMPAT	"Compatibility version"
44 #define	WT_METADATA_VERSION	"WiredTiger version"	/* Version keys */
45 #define	WT_METADATA_VERSION_STR	"WiredTiger version string"
46 
47 /*
48  * WT_WITH_TURTLE_LOCK --
49  *	Acquire the turtle file lock, perform an operation, drop the lock.
50  */
51 #define	WT_WITH_TURTLE_LOCK(session, op) do {				\
52 	WT_ASSERT(session, !F_ISSET(session, WT_SESSION_LOCKED_TURTLE));\
53 	WT_WITH_LOCK_WAIT(session,					\
54 	    &S2C(session)->turtle_lock, WT_SESSION_LOCKED_TURTLE, op);	\
55 } while (0)
56 
57 /*
58  * WT_CKPT --
59  *	Encapsulation of checkpoint information, shared by the metadata, the
60  * btree engine, and the block manager.
61  */
62 #define	WT_CHECKPOINT		"WiredTigerCheckpoint"
63 #define	WT_CKPT_FOREACH(ckptbase, ckpt)					\
64 	for ((ckpt) = (ckptbase); (ckpt)->name != NULL; ++(ckpt))
65 
66 struct __wt_ckpt {
67 	char	*name;				/* Name or NULL */
68 
69 	WT_ITEM  addr;				/* Checkpoint cookie string */
70 	WT_ITEM  raw;				/* Checkpoint cookie raw */
71 
72 	int64_t	 order;				/* Checkpoint order */
73 
74 	uintmax_t sec;				/* Timestamp */
75 
76 	uint64_t ckpt_size;			/* Checkpoint size */
77 
78 	uint64_t write_gen;			/* Write generation */
79 
80 	void	*bpriv;				/* Block manager private */
81 
82 /* AUTOMATIC FLAG VALUE GENERATION START */
83 #define	WT_CKPT_ADD	0x1u			/* Checkpoint to be added */
84 #define	WT_CKPT_DELETE	0x2u			/* Checkpoint to be deleted */
85 #define	WT_CKPT_FAKE	0x4u			/* Checkpoint is a fake */
86 #define	WT_CKPT_UPDATE	0x8u			/* Checkpoint requires update */
87 /* AUTOMATIC FLAG VALUE GENERATION STOP */
88 	uint32_t flags;
89 };
90