summaryrefslogtreecommitdiff
path: root/storage/xtradb/include/fsp0fsp.h
diff options
context:
space:
mode:
authorMonty <monty@mariadb.org>2014-12-22 16:53:17 +0200
committerSergei Golubchik <serg@mariadb.org>2015-02-10 10:21:17 +0100
commitd7d589dc01f6d70d1518b74d46fd3b75e76267f5 (patch)
treef9df59951453660f0038ed78cf5ceadc852bf74c /storage/xtradb/include/fsp0fsp.h
parent3a3ec744b5a31318a00821dc0ed6da8af49fda25 (diff)
downloadmariadb-git-d7d589dc01f6d70d1518b74d46fd3b75e76267f5.tar.gz
Push for testing of encryption
Diffstat (limited to 'storage/xtradb/include/fsp0fsp.h')
-rw-r--r--storage/xtradb/include/fsp0fsp.h74
1 files changed, 68 insertions, 6 deletions
diff --git a/storage/xtradb/include/fsp0fsp.h b/storage/xtradb/include/fsp0fsp.h
index 6fe44a0ef16..57e5b9490b1 100644
--- a/storage/xtradb/include/fsp0fsp.h
+++ b/storage/xtradb/include/fsp0fsp.h
@@ -57,6 +57,11 @@ is found in a remote location, not the default data directory. */
/** Number of flag bits used to indicate the page compression and compression level */
#define FSP_FLAGS_WIDTH_PAGE_COMPRESSION 1
#define FSP_FLAGS_WIDTH_PAGE_COMPRESSION_LEVEL 4
+
+/** Number of flag bits used to indicate the page compression and compression level */
+#define FSP_FLAGS_WIDTH_PAGE_ENCRYPTION 1
+#define FSP_FLAGS_WIDTH_PAGE_ENCRYPTION_KEY 8
+
/** Number of flag bits used to indicate atomic writes for this tablespace */
#define FSP_FLAGS_WIDTH_ATOMIC_WRITES 2
@@ -68,7 +73,9 @@ is found in a remote location, not the default data directory. */
+ FSP_FLAGS_WIDTH_DATA_DIR \
+ FSP_FLAGS_WIDTH_PAGE_COMPRESSION \
+ FSP_FLAGS_WIDTH_PAGE_COMPRESSION_LEVEL \
- + FSP_FLAGS_WIDTH_ATOMIC_WRITES)
+ + FSP_FLAGS_WIDTH_ATOMIC_WRITES \
+ + FSP_FLAGS_WIDTH_PAGE_ENCRYPTION \
+ + FSP_FLAGS_WIDTH_PAGE_ENCRYPTION_KEY)
/** A mask of all the known/used bits in tablespace flags */
#define FSP_FLAGS_MASK (~(~0 << FSP_FLAGS_WIDTH))
@@ -92,15 +99,21 @@ dictionary */
/** Zero relative shift position of the ATOMIC_WRITES field */
#define FSP_FLAGS_POS_ATOMIC_WRITES (FSP_FLAGS_POS_PAGE_COMPRESSION_LEVEL \
+ FSP_FLAGS_WIDTH_PAGE_COMPRESSION_LEVEL)
- /** Zero relative shift position of the PAGE_SSIZE field */
-#define FSP_FLAGS_POS_PAGE_SSIZE (FSP_FLAGS_POS_ATOMIC_WRITES \
+/** Zero relative shift position of the PAGE_ENCRYPTION field */
+#define FSP_FLAGS_POS_PAGE_ENCRYPTION (FSP_FLAGS_POS_ATOMIC_WRITES \
+ FSP_FLAGS_WIDTH_ATOMIC_WRITES)
+/** Zero relative shift position of the PAGE_ENCRYPTION_KEY field */
+#define FSP_FLAGS_POS_PAGE_ENCRYPTION_KEY (FSP_FLAGS_POS_PAGE_ENCRYPTION \
+ + FSP_FLAGS_WIDTH_PAGE_ENCRYPTION)
+ /** Zero relative shift position of the PAGE_SSIZE field */
+#define FSP_FLAGS_POS_PAGE_SSIZE (FSP_FLAGS_POS_PAGE_ENCRYPTION_KEY \
+ + FSP_FLAGS_WIDTH_PAGE_ENCRYPTION_KEY)
/** Zero relative shift position of the start of the DATA DIR bits */
#define FSP_FLAGS_POS_DATA_DIR (FSP_FLAGS_POS_PAGE_SSIZE \
+ FSP_FLAGS_WIDTH_PAGE_SSIZE)
/** Zero relative shift position of the start of the UNUSED bits */
-#define FSP_FLAGS_POS_UNUSED (FSP_FLAGS_POS_DATA_DIR \
- + FSP_FLAGS_WIDTH_DATA_DIR)
+#define FSP_FLAGS_POS_UNUSED (FSP_FLAGS_POS_DATA_DIR\
+ + FSP_FLAGS_WIDTH_DATA_DIR)
/** Bit mask of the POST_ANTELOPE field */
#define FSP_FLAGS_MASK_POST_ANTELOPE \
@@ -130,12 +143,20 @@ dictionary */
#define FSP_FLAGS_MASK_PAGE_COMPRESSION_LEVEL \
((~(~0 << FSP_FLAGS_WIDTH_PAGE_COMPRESSION_LEVEL)) \
<< FSP_FLAGS_POS_PAGE_COMPRESSION_LEVEL)
+/** Bit mask of the PAGE_ENCRYPTION field */
+#define FSP_FLAGS_MASK_PAGE_ENCRYPTION \
+ ((~(~0 << FSP_FLAGS_WIDTH_PAGE_ENCRYPTION)) \
+ << FSP_FLAGS_POS_PAGE_ENCRYPTION)
+/** Bit mask of the PAGE_ENCRYPTION_KEY field */
+#define FSP_FLAGS_MASK_PAGE_ENCRYPTION_KEY \
+ ((~(~0 << FSP_FLAGS_WIDTH_PAGE_ENCRYPTION_KEY)) \
+ << FSP_FLAGS_POS_PAGE_ENCRYPTION_KEY)
+
/** Bit mask of the ATOMIC_WRITES field */
#define FSP_FLAGS_MASK_ATOMIC_WRITES \
((~(~0 << FSP_FLAGS_WIDTH_ATOMIC_WRITES)) \
<< FSP_FLAGS_POS_ATOMIC_WRITES)
-
/** Return the value of the POST_ANTELOPE field */
#define FSP_FLAGS_GET_POST_ANTELOPE(flags) \
((flags & FSP_FLAGS_MASK_POST_ANTELOPE) \
@@ -171,6 +192,14 @@ dictionary */
#define FSP_FLAGS_GET_ATOMIC_WRITES(flags) \
((flags & FSP_FLAGS_MASK_ATOMIC_WRITES) \
>> FSP_FLAGS_POS_ATOMIC_WRITES)
+/** Return the value of the PAGE_ENCRYPTION field */
+#define FSP_FLAGS_GET_PAGE_ENCRYPTION(flags) \
+ ((flags & FSP_FLAGS_MASK_PAGE_ENCRYPTION) \
+ >> FSP_FLAGS_POS_PAGE_ENCRYPTION)
+/** Return the value of the PAGE_ENCRYPTION_KEY field */
+#define FSP_FLAGS_GET_PAGE_ENCRYPTION_KEY(flags) \
+ ((flags & FSP_FLAGS_MASK_PAGE_ENCRYPTION_KEY) \
+ >> FSP_FLAGS_POS_PAGE_ENCRYPTION_KEY)
/** Set a PAGE_SSIZE into the correct bits in a given
tablespace flags. */
@@ -186,6 +215,14 @@ tablespace flags. */
tablespace flags. */
#define FSP_FLAGS_SET_PAGE_COMPRESSION_LEVEL(flags, level) \
(flags | (level << FSP_FLAGS_POS_PAGE_COMPRESSION_LEVEL))
+
+/** Set a PAGE_ENCRYPTION into the correct bits in a given tablespace flags. */
+#define FSP_FLAGS_SET_PAGE_ENCRYPTION(flags, encryption) \
+ (flags | (encryption << FSP_FLAGS_POS_PAGE_ENCRYPTION))
+/** Set a PAGE_ENCRYPTION_KEY into the correct bits in a given tablespace flags. */
+#define FSP_FLAGS_SET_PAGE_ENCRYPTION_KEY(flags, encryption_key) \
+ (flags | (encryption_key << FSP_FLAGS_POS_PAGE_ENCRYPTION_KEY))
+
/** Set a ATOMIC_WRITES into the correct bits in a given
tablespace flags. */
#define FSP_FLAGS_SET_ATOMIC_WRITES(flags, atomics) \
@@ -800,6 +837,31 @@ fsp_flags_get_page_size(
/*====================*/
ulint flags); /*!< in: tablespace flags */
+/*********************************************************************/
+/* @return offset into fsp header where crypt data is stored */
+UNIV_INTERN
+ulint
+fsp_header_get_crypt_offset(
+/*========================*/
+ ulint zip_size, /*!< in: zip_size */
+ ulint* max_size); /*!< out: free space after offset */
+
+#define fsp_page_is_free(space,page,mtr) \
+ fsp_page_is_free_func(space,page,mtr, __FILE__, __LINE__)
+
+/**********************************************************************//**
+Checks if a single page is free.
+@return true if free */
+UNIV_INTERN
+bool
+fsp_page_is_free_func(
+/*==============*/
+ ulint space, /*!< in: space id */
+ ulint page, /*!< in: page offset */
+ mtr_t* mtr, /*!< in/out: mini-transaction */
+ const char *file,
+ ulint line);
+
#ifndef UNIV_NONINL
#include "fsp0fsp.ic"
#endif