Drizzled Public API Documentation

fil0fil.h File Reference
#include "univ.i"
#include "dict0types.h"
#include "ut0byte.h"
#include "os0file.h"
#include "sync0rw.h"
#include "ibuf0types.h"

Go to the source code of this file.

Classes

struct  fil_addr_struct
 

Macros

#define fil0fil_h
 
#define FIL_IBD_FILE_INITIAL_SIZE   4
 
#define FIL_NULL   ULINT32_UNDEFINED
 
#define FIL_ADDR_PAGE   0 /* first in address is the page offset */
 
#define FIL_ADDR_BYTE   4 /* then comes 2-byte byte offset within page*/
 
#define FIL_ADDR_SIZE   6 /* address size is 6 bytes */
 
#define FIL_PAGE_SPACE_OR_CHKSUM   0
 
#define FIL_PAGE_OFFSET   4
 
#define FIL_PAGE_PREV   8
 
#define FIL_PAGE_NEXT   12
 
#define FIL_PAGE_LSN   16
 
#define FIL_PAGE_TYPE   24
 
#define FIL_PAGE_FILE_FLUSH_LSN   26
 
#define FIL_PAGE_ARCH_LOG_NO_OR_SPACE_ID   34
 
#define FIL_PAGE_DATA   38
 
#define FIL_PAGE_END_LSN_OLD_CHKSUM   8
 
#define FIL_PAGE_DATA_END   8
 
#define FIL_PAGE_INDEX   17855
 
#define FIL_PAGE_UNDO_LOG   2
 
#define FIL_PAGE_INODE   3
 
#define FIL_PAGE_IBUF_FREE_LIST   4
 
#define FIL_PAGE_TYPE_ALLOCATED   0
 
#define FIL_PAGE_IBUF_BITMAP   5
 
#define FIL_PAGE_TYPE_SYS   6
 
#define FIL_PAGE_TYPE_TRX_SYS   7
 
#define FIL_PAGE_TYPE_FSP_HDR   8
 
#define FIL_PAGE_TYPE_XDES   9
 
#define FIL_PAGE_TYPE_BLOB   10
 
#define FIL_PAGE_TYPE_ZBLOB   11
 
#define FIL_PAGE_TYPE_ZBLOB2   12
 
#define FIL_TABLESPACE   501
 
#define FIL_LOG   502
 

Typedefs

typedef byte fil_faddr_t
 
typedef struct fil_addr_struct fil_addr_t
 
typedef struct fil_space_struct fil_space_t
 

Functions

UNIV_INTERN ib_int64_t fil_space_get_version (ulint id)
 
UNIV_INTERN rw_lock_tfil_space_get_latch (ulint id, ulint *zip_size)
 
UNIV_INTERN ulint fil_space_get_type (ulint id)
 
UNIV_INTERN void fil_node_create (const char *name, ulint size, ulint id, ibool is_raw)
 
UNIV_INTERN ibool fil_space_create (const char *name, ulint id, ulint zip_size, ulint purpose)
 
UNIV_INTERN ibool fil_assign_new_space_id (ulint *space_id)
 
UNIV_INTERN ulint fil_space_get_size (ulint id)
 
UNIV_INTERN ulint fil_space_get_flags (ulint id)
 
UNIV_INTERN ulint fil_space_get_zip_size (ulint id)
 
UNIV_INTERN ibool fil_check_adress_in_tablespace (ulint id, ulint page_no)
 
UNIV_INTERN void fil_init (ulint hash_size, ulint max_n_open)
 
UNIV_INTERN void fil_close (void)
 
UNIV_INTERN void fil_open_log_and_system_tablespace_files (void)
 
UNIV_INTERN void fil_close_all_files (void)
 
UNIV_INTERN void fil_set_max_space_id_if_bigger (ulint max_id)
 
UNIV_INTERN ulint fil_write_flushed_lsn_to_data_files (ib_uint64_t lsn, ulint arch_log_no)
 
UNIV_INTERN void fil_read_flushed_lsn_and_arch_log_no (os_file_t data_file, ibool one_read_already, ib_uint64_t *min_flushed_lsn, ib_uint64_t *max_flushed_lsn)
 
UNIV_INTERN ibool fil_inc_pending_ibuf_merges (ulint id)
 
UNIV_INTERN void fil_decr_pending_ibuf_merges (ulint id)
 
UNIV_INTERN byte * fil_op_log_parse_or_replay (byte *ptr, byte *end_ptr, ulint type, ulint space_id, ulint log_flags)
 
UNIV_INTERN ibool fil_delete_tablespace (ulint id)
 
UNIV_INTERN ibool fil_discard_tablespace (ulint id)
 
UNIV_INTERN ibool fil_rename_tablespace (const char *old_name, ulint id, const char *new_name)
 
UNIV_INTERN ulint fil_create_new_single_table_tablespace (ulint space_id, const char *tablename, ibool is_temp, ulint flags, ulint size)
 
UNIV_INTERN ibool fil_open_single_table_tablespace (ibool check_space_id, ulint id, ulint flags, const char *name)
 
UNIV_INTERN ibool fil_reset_too_high_lsns (const char *name, ib_uint64_t current_lsn)
 
UNIV_INTERN ulint fil_load_single_table_tablespaces (void)
 
UNIV_INTERN ibool fil_tablespace_deleted_or_being_deleted_in_mem (ulint id, ib_int64_t version)
 
UNIV_INTERN ibool fil_tablespace_exists_in_mem (ulint id)
 
UNIV_INTERN ibool fil_space_for_table_exists_in_mem (ulint id, const char *name, ibool is_temp, ibool mark_space, ibool print_error_if_does_not_exist)
 
UNIV_INTERN ibool fil_extend_space_to_desired_size (ulint *actual_size, ulint space_id, ulint size_after_extend)
 
UNIV_INTERN ibool fil_space_reserve_free_extents (ulint id, ulint n_free_now, ulint n_to_reserve)
 
UNIV_INTERN void fil_space_release_free_extents (ulint id, ulint n_reserved)
 
UNIV_INTERN ulint fil_space_get_n_reserved_extents (ulint id)
 
UNIV_INTERN ulint fil_io (ulint type, ibool sync, ulint space_id, ulint zip_size, ulint block_offset, ulint byte_offset, ulint len, void *buf, void *message)
 
UNIV_INTERN bool fil_is_exist (ulint space_id, ulint block_offset)
 
UNIV_INTERN void fil_aio_wait (ulint segment)
 
UNIV_INTERN void fil_flush (ulint space_id)
 
UNIV_INTERN void fil_flush_file_spaces (ulint purpose)
 
UNIV_INTERN ibool fil_validate (void)
 
UNIV_INTERN ibool fil_addr_is_null (fil_addr_t addr)
 
UNIV_INTERN ulint fil_page_get_prev (const byte *page)
 
UNIV_INTERN ulint fil_page_get_next (const byte *page)
 
UNIV_INTERN void fil_page_set_type (byte *page, ulint type)
 
UNIV_INTERN ulint fil_page_get_type (const byte *page)
 
UNIV_INTERN ibool fil_tablespace_is_being_deleted (ulint id)
 

Variables

const char * fil_path_to_mysql_datadir
 
fil_addr_t fil_addr_null
 
ulint fil_n_log_flushes
 
ulint fil_n_pending_log_flushes
 
ulint fil_n_pending_tablespace_flushes
 

Detailed Description

The low-level file system

Created 10/25/1995 Heikki Tuuri

Definition in file fil0fil.h.

Macro Definition Documentation

#define FIL_IBD_FILE_INITIAL_SIZE   4

Initial size of a single-table tablespace in pages

Definition at line 45 of file fil0fil.h.

Referenced by fil_create_new_single_table_tablespace(), fil_op_log_parse_or_replay(), and row_truncate_table_for_mysql().

#define FIL_LOG   502

redo log

Definition at line 191 of file fil0fil.h.

Referenced by logs_empty_and_mark_files_at_shutdown().

#define FIL_PAGE_ARCH_LOG_NO_OR_SPACE_ID   34
#define FIL_PAGE_DATA   38
#define FIL_PAGE_DATA_END   8

size of the page trailer

Definition at line 169 of file fil0fil.h.

Referenced by fseg_create_general(), and page_zip_copy_recs().

#define FIL_PAGE_END_LSN_OLD_CHKSUM   8

File page trailer the low 4 bytes of this are used to store the page checksum, the last 4 bytes should be identical to the last 4 bytes of FIL_PAGE_LSN

Definition at line 162 of file fil0fil.h.

Referenced by buf_calc_page_new_checksum(), buf_flush_init_for_writing(), buf_page_is_corrupted(), buf_page_print(), and recv_recover_page_func().

#define FIL_PAGE_FILE_FLUSH_LSN   26

this is only defined for the first page in a system tablespace data file (ibdata*, not *.ibd): the file has been flushed to disk at least up to this lsn

Definition at line 147 of file fil0fil.h.

Referenced by buf_calc_page_new_checksum(), buf_calc_page_old_checksum(), buf_flush_init_for_writing(), buf_page_create(), fil_read_flushed_lsn_and_arch_log_no(), and fil_reset_too_high_lsns().

#define FIL_PAGE_IBUF_BITMAP   5

Insert buffer bitmap

Definition at line 179 of file fil0fil.h.

Referenced by buf_flush_init_for_writing(), buf_page_print(), and buf_zip_decompress().

#define FIL_PAGE_IBUF_FREE_LIST   4

Insert buffer free list

Definition at line 176 of file fil0fil.h.

Referenced by buf_page_print().

#define FIL_PAGE_INDEX   17855

File page types (values of FIL_PAGE_TYPE) B-tree node

Definition at line 173 of file fil0fil.h.

Referenced by buf_flush_init_for_writing(), buf_page_print(), buf_zip_decompress(), ibuf_merge_or_delete_for_page(), mlog_parse_nbytes(), mlog_parse_string(), and recv_recover_page_func().

#define FIL_PAGE_INODE   3

Index node

Definition at line 175 of file fil0fil.h.

Referenced by buf_flush_init_for_writing(), buf_page_print(), and buf_zip_decompress().

#define FIL_PAGE_LSN   16

lsn of the end of the newest modification log record to the page

Definition at line 115 of file fil0fil.h.

Referenced by buf_flush_init_for_writing(), buf_page_is_corrupted(), buf_page_print(), fil_reset_too_high_lsns(), page_zip_calc_checksum(), and recv_recover_page_func().

#define FIL_PAGE_NEXT   12

if there is a 'natural' successor of the page, its offset. Otherwise FIL_NULL. B-tree index pages (FIL_PAGE_TYPE contains FIL_PAGE_INDEX) on the same PAGE_LEVEL are maintained as a doubly linked list via FIL_PAGE_PREV and FIL_PAGE_NEXT in the collation order of the smallest user record on each page.

Definition at line 96 of file fil0fil.h.

Referenced by buf_page_create(), and fil_page_get_next().

#define FIL_PAGE_PREV   8

if there is a 'natural' predecessor of the page, its offset. Otherwise FIL_NULL. This field is not set on BLOB pages, which are stored as a singly-linked list. See also FIL_PAGE_NEXT.

Definition at line 83 of file fil0fil.h.

Referenced by btr_compress(), buf_page_create(), fil_page_get_prev(), and page_zip_copy_recs().

#define FIL_PAGE_SPACE_OR_CHKSUM   0

The byte offsets on a file page for various variables in < MySQL-4.0.14 space id the page belongs to (== 0) but in later versions the 'new' checksum of the page

Definition at line 75 of file fil0fil.h.

Referenced by buf_flush_init_for_writing(), buf_LRU_free_block(), buf_page_is_corrupted(), buf_page_print(), and buf_zip_decompress().

#define FIL_PAGE_TYPE   24

file page type: FIL_PAGE_INDEX,..., 2 bytes.

The contents of this field can only be trusted in the following case: if the page is an uncompressed B-tree index page, then it is guaranteed that the value is FIL_PAGE_INDEX. The opposite does not hold.

In tablespaces created by MySQL/InnoDB 5.1.7 or later, the contents of this field is valid for all uncompressed pages.

Definition at line 118 of file fil0fil.h.

Referenced by buf_page_create(), fil_page_get_type(), fil_page_set_type(), fseg_create_general(), fsp_header_init(), and page_zip_calc_checksum().

#define FIL_PAGE_TYPE_ALLOCATED   0

Freshly allocated page

Definition at line 178 of file fil0fil.h.

Referenced by buf_flush_init_for_writing(), buf_page_create(), buf_page_print(), and buf_zip_decompress().

#define FIL_PAGE_TYPE_BLOB   10

Uncompressed BLOB page

Definition at line 184 of file fil0fil.h.

Referenced by buf_page_print().

#define FIL_PAGE_TYPE_FSP_HDR   8

File space header

Definition at line 182 of file fil0fil.h.

Referenced by buf_flush_init_for_writing(), buf_page_print(), buf_zip_decompress(), and fsp_header_init().

#define FIL_PAGE_TYPE_SYS   6

System page

Definition at line 180 of file fil0fil.h.

Referenced by buf_page_print(), and fseg_create_general().

#define FIL_PAGE_TYPE_TRX_SYS   7

Transaction system data

Definition at line 181 of file fil0fil.h.

Referenced by buf_page_print().

#define FIL_PAGE_TYPE_XDES   9

Extent descriptor page

Definition at line 183 of file fil0fil.h.

Referenced by buf_flush_init_for_writing(), buf_page_print(), and buf_zip_decompress().

#define FIL_PAGE_TYPE_ZBLOB   11

First compressed BLOB page

Definition at line 185 of file fil0fil.h.

Referenced by buf_flush_init_for_writing(), buf_page_print(), and buf_zip_decompress().

#define FIL_PAGE_TYPE_ZBLOB2   12

Subsequent compressed BLOB page

Definition at line 186 of file fil0fil.h.

Referenced by buf_flush_init_for_writing(), buf_page_print(), and buf_zip_decompress().

#define FIL_PAGE_UNDO_LOG   2

Undo log page

Definition at line 174 of file fil0fil.h.

Typedef Documentation

typedef struct fil_addr_struct fil_addr_t
A struct for storing a space address FIL_ADDR, when it is used

in C program data structures.

Definition at line 64 of file fil0fil.h.

typedef byte fil_faddr_t
                     'type' definition in C: an address

stored in a file page is a string of bytes

Definition at line 54 of file fil0fil.h.

Function Documentation

UNIV_INTERN ibool fil_addr_is_null ( fil_addr_t  addr)

Returns TRUE if file address is undefined.

Returns
TRUE if undefined in: address

Returns TRUE if file address is undefined.

Returns
TRUE if undefined
Parameters
addrin: address

Definition at line 4864 of file fil0fil.cc.

References FIL_NULL, and fil_addr_struct::page.

UNIV_INTERN void fil_aio_wait ( ulint  segment)

Waits for an aio operation to complete. This function is used to write the handler for completed requests. The aio array of pending requests is divided into segments (see os0file.c for more info). The thread specifies which segment it wants to wait for. in: the number of the segment in the aio array to wait for

Waits for an aio operation to complete. This function is used to write the handler for completed requests. The aio array of pending requests is divided into segments (see os0file.c for more info). The thread specifies which segment it wants to wait for.

Parameters
segmentin: the number of the segment in the aio array to wait for

Definition at line 4570 of file fil0fil.cc.

References FIL_TABLESPACE, log_io_complete(), fil_system_struct::mutex, os_aio_simulated_handle(), fil_space_struct::purpose, fil_node_struct::space, srv_set_io_thread_op_info(), ut_a, ut_ad, and ut_error.

UNIV_INTERN ibool fil_assign_new_space_id ( ulint *  space_id)

Assigns a new space id for a new single-table tablespace. This works simply by incrementing the global counter. If 4 billion id's is not enough, we may need to recycle id's.

Returns
TRUE if assigned, FALSE if not in/out: space id

Assigns a new space id for a new single-table tablespace. This works simply by incrementing the global counter. If 4 billion id's is not enough, we may need to recycle id's.

Returns
TRUE if assigned, FALSE if not
Parameters
space_idin/out: space id

Definition at line 1301 of file fil0fil.cc.

References fil_system_struct::max_assigned_id, fil_system_struct::mutex, SRV_LOG_SPACE_FIRST_ID, and ut_print_timestamp().

UNIV_INTERN ibool fil_check_adress_in_tablespace ( ulint  id,
ulint  page_no 
)

Checks if the pair space, page_no refers to an existing page in a tablespace file space. The tablespace must be cached in the memory cache.

Returns
TRUE if the address is meaningful in: page number

Checks if the pair space, page_no refers to an existing page in a tablespace file space. The tablespace must be cached in the memory cache.

Returns
TRUE if the address is meaningful
Parameters
idin: space id
page_noin: page number

Definition at line 1557 of file fil0fil.cc.

UNIV_INTERN void fil_close ( void  )

Initializes the tablespace memory cache.

Definition at line 4928 of file fil0fil.cc.

References mem_free, fil_system_struct::mutex, fil_system_struct::name_hash, fil_system_struct::spaces, ut_a, ut_ad, and UT_LIST_GET_LEN.

UNIV_INTERN void fil_close_all_files ( void  )

Closes all open files. There must not be any pending i/o's or not flushed modifications in the files.

Definition at line 1661 of file fil0fil.cc.

References fil_space_struct::id, fil_system_struct::mutex, fil_node_struct::open, fil_node_struct::space, UT_LIST_GET_FIRST, and UT_LIST_GET_NEXT.

UNIV_INTERN ulint fil_create_new_single_table_tablespace ( ulint  space_id,
const char *  tablename,
ibool  is_temp,
ulint  flags,
ulint  size 
)

Creates a new single-table tablespace to a database directory of MySQL. Database directories are under the 'datadir' of MySQL. The datadir is the directory of a running mysqld program. We can refer to it by simply the path '.'. Tables created with CREATE TEMPORARY TABLE we place in the temp dir of the mysqld server.

Returns
DB_SUCCESS or error code in: the initial size of the tablespace file in pages, must be >= FIL_IBD_FILE_INITIAL_SIZE

Creates a new single-table tablespace to a database directory of MySQL. Database directories are under the 'datadir' of MySQL. The datadir is the directory of a running mysqld program. We can refer to it by simply the path '.'. Tables created with CREATE TEMPORARY TABLE we place in the temp dir of the mysqld server.

Returns
DB_SUCCESS or error code
Parameters
space_idin: space id
tablenamein: the table name in the usual databasename/tablename format of InnoDB, or a dir path to a temp table
is_tempin: TRUE if a table created with CREATE TEMPORARY TABLE
flagsin: tablespace flags
sizein: the initial size of the tablespace file in pages, must be >= FIL_IBD_FILE_INITIAL_SIZE

Definition at line 2671 of file fil0fil.cc.

References page_zip_des_struct::data, DICT_TF_BITS, DICT_TF_COMPACT, DICT_TF_ZSSIZE_SHIFT, FIL_IBD_FILE_INITIAL_SIZE, FIL_PAGE_ARCH_LOG_NO_OR_SPACE_ID, FIL_TABLESPACE, page_zip_des_struct::m_end, page_zip_des_struct::m_nonempty, mach_write_to_4(), mem_free, MLOG_FILE_CREATE, MLOG_FILE_CREATE2, MLOG_FILE_FLAG_TEMP, mtr_commit(), mtr_start(), page_zip_des_struct::n_blobs, OS_DATA_FILE, os_file_delete(), os_file_get_last_error(), os_file_set_size(), PAGE_ZIP_MIN_SIZE, page_zip_set_size(), SRV_LOG_SPACE_FIRST_ID, ut_a, ut_align(), ut_free(), ut_malloc(), ut_print_filename(), and ut_print_timestamp().

UNIV_INTERN void fil_decr_pending_ibuf_merges ( ulint  id)

Decrements the count of pending insert buffer page merges. in: space id

Decrements the count of pending insert buffer page merges.

Parameters
idin: space id

Definition at line 1906 of file fil0fil.cc.

References fil_system_struct::mutex, fil_space_struct::n_pending_ibuf_merges, and fil_node_struct::space.

UNIV_INTERN ibool fil_delete_tablespace ( ulint  id)

Deletes a single-table tablespace. The tablespace must be cached in the memory cache.

Returns
TRUE if success in: space id

Deletes a single-table tablespace. The tablespace must be cached in the memory cache.

Returns
TRUE if success
Parameters
idin: space id

Definition at line 2203 of file fil0fil.cc.

References fil_space_struct::is_being_deleted, fil_space_struct::latch, mem_free, mem_strdup(), MLOG_FILE_DELETE, mtr_commit(), mtr_start(), fil_system_struct::mutex, fil_node_struct::n_pending, fil_space_struct::n_pending_flushes, fil_space_struct::n_pending_ibuf_merges, fil_space_struct::name, os_file_delete(), os_file_delete_if_exists(), os_thread_sleep(), fil_node_struct::space, fil_space_struct::stop_ibuf_merges, ut_a, UT_LIST_GET_FIRST, UT_LIST_GET_LEN, ut_print_filename(), and ut_print_timestamp().

UNIV_INTERN ibool fil_discard_tablespace ( ulint  id)

Discards a single-table tablespace. The tablespace must be cached in the memory cache. Discarding is like deleting a tablespace, but 1) we do not drop the table from the data dictionary; 2) we remove all insert buffer entries for the tablespace immediately; in DROP TABLE they are only removed gradually in the background; 3) when the user does IMPORT TABLESPACE, the tablespace will have the same id as it originally had.

Returns
TRUE if success in: space id

Discards a single-table tablespace. The tablespace must be cached in the memory cache. Discarding is like deleting a tablespace, but 1) we do not drop the table from the data dictionary; 2) we remove all insert buffer entries for the tablespace immediately; in DROP TABLE they are only removed gradually in the background; 3) when the user does IMPORT TABLESPACE, the tablespace will have the same id as it originally had.

Returns
TRUE if success
Parameters
idin: space id

Definition at line 2408 of file fil0fil.cc.

UNIV_INTERN ibool fil_extend_space_to_desired_size ( ulint *  actual_size,
ulint  space_id,
ulint  size_after_extend 
)

Tries to extend a data file so that it would accommodate the number of pages given. The tablespace must be cached in the memory cache. If the space is big enough already, does nothing.

Returns
TRUE if success in: desired size in pages after the extension; if the current space size is bigger than this already, the function does nothing

Tries to extend a data file so that it would accommodate the number of pages given. The tablespace must be cached in the memory cache. If the space is big enough already, does nothing.

Returns
TRUE if success
Parameters
actual_sizeout: size of the space after extension; if we ran out of disk space this may be lower than the desired size
space_idin: space id
size_after_extendin: desired size in pages after the extension; if the current space size is bigger than this already, the function does nothing

Definition at line 3886 of file fil0fil.cc.

References dict_table_flags_to_zip_size(), fil_space_struct::flags, fil_node_struct::handle, mem_free, fil_system_struct::mutex, fil_node_struct::name, OS_AIO_SYNC, os_file_get_size_as_iblonglong(), fil_node_struct::size, fil_space_struct::size, fil_node_struct::space, ut_a, ut_align(), UT_LIST_GET_LAST, and ut_min().

UNIV_INTERN void fil_flush ( ulint  space_id)

Flushes to disk possible writes cached by the OS. If the space does not exist or is being dropped, does not do anything. in: file space id (this can be a group of log files or a tablespace of the database)

Flushes to disk possible writes cached by the OS. If the space does not exist or is being dropped, does not do anything.

                   < prevent dropping of the space while

we are flushing

Parameters
space_idin: file space id (this can be a group of log files or a tablespace of the database)

Definition at line 4634 of file fil0fil.cc.

References FIL_TABLESPACE, fil_node_struct::flush_counter, fil_node_struct::handle, fil_space_struct::is_being_deleted, fil_space_struct::is_in_unflushed_spaces, fil_node_struct::is_raw_disk, fil_node_struct::modification_counter, fil_system_struct::mutex, fil_node_struct::n_pending_flushes, fil_space_struct::n_pending_flushes, fil_node_struct::open, os_thread_sleep(), fil_space_struct::purpose, fil_node_struct::space, ut_a, UT_LIST_GET_FIRST, UT_LIST_GET_NEXT, and UT_LIST_REMOVE.

UNIV_INTERN void fil_flush_file_spaces ( ulint  purpose)

Flushes to disk writes in file spaces of the given type possibly cached by the OS. in: FIL_TABLESPACE, FIL_LOG

Flushes to disk the writes in file spaces of the given type possibly cached by the OS.

Parameters
purposein: FIL_TABLESPACE, FIL_LOG

Definition at line 4749 of file fil0fil.cc.

References fil_space_struct::id, fil_space_struct::is_being_deleted, mem_free, fil_system_struct::mutex, fil_space_struct::purpose, fil_node_struct::space, UT_LIST_GET_FIRST, UT_LIST_GET_LEN, and UT_LIST_GET_NEXT.

UNIV_INTERN ibool fil_inc_pending_ibuf_merges ( ulint  id)

Increments the count of pending insert buffer page merges, if space is not being deleted.

Returns
TRUE if being deleted, and ibuf merges should be skipped in: space id

Increments the count of pending insert buffer page merges, if space is not being deleted.

Returns
TRUE if being deleted, and ibuf merges should be skipped
Parameters
idin: space id

Definition at line 1872 of file fil0fil.cc.

References fil_system_struct::mutex, fil_space_struct::n_pending_ibuf_merges, fil_node_struct::space, and fil_space_struct::stop_ibuf_merges.

UNIV_INTERN void fil_init ( ulint  hash_size,
ulint  max_n_open 
)

Initializes the tablespace memory cache. in: max number of open files

Initializes the tablespace memory cache.

Parameters
hash_sizein: hash table size
max_n_openin: max number of open files

Definition at line 1574 of file fil0fil.cc.

References fil_system_struct::max_n_open, mem_zalloc, fil_system_struct::mutex, fil_system_struct::name_hash, fil_system_struct::spaces, ut_a, and UT_LIST_INIT.

UNIV_INTERN ulint fil_io ( ulint  type,
ibool  sync,
ulint  space_id,
ulint  zip_size,
ulint  block_offset,
ulint  byte_offset,
ulint  len,
void *  buf,
void *  message 
)

Reads or writes data. This operation is asynchronous (aio).

Returns
DB_SUCCESS, or DB_TABLESPACE_DELETED if we are trying to do i/o on a tablespace which does not exist in: message for aio handler if non-sync aio used, else ignored

Reads or writes data. This operation is asynchronous (aio).

Returns
DB_SUCCESS, or DB_TABLESPACE_DELETED if we are trying to do i/o on a tablespace which does not exist
Parameters
typein: OS_FILE_READ or OS_FILE_WRITE, ORed to OS_FILE_LOG, if a log i/o and ORed to OS_AIO_SIMULATED_WAKE_LATER if simulated aio and we want to post a batch of i/os; NOTE that a simulated batch may introduce hidden chances of deadlocks, because i/os are not actually handled until all have been posted: use with great caution!
syncin: TRUE if synchronous aio is desired
space_idin: space id
zip_sizein: compressed page size in bytes; 0 for uncompressed pages
block_offsetin: offset in number of blocks
byte_offsetin: remainder of offset in bytes; in aio this must be divisible by the OS block size
lenin: how many bytes to read or write; this must not cross a file boundary; in aio this must be a block size multiple
bufin/out: buffer where to store read data or from where to write; in aio this must be appropriately aligned
messagein: message for aio handler if non-sync aio used, else ignored

Definition at line 4287 of file fil0fil.cc.

References FIL_TABLESPACE, fil_node_struct::handle, ibuf_bitmap_page(), ibuf_page, fil_space_struct::id, fil_system_struct::mutex, fil_node_struct::name, fil_space_struct::name, OS_AIO_IBUF, OS_AIO_LOG, OS_AIO_NORMAL, OS_AIO_SIMULATED_WAKE_LATER, OS_AIO_SYNC, OS_FILE_LOG_BLOCK_SIZE, OS_FILE_READ, fil_space_struct::purpose, recv_no_ibuf_operations, fil_node_struct::size, fil_node_struct::space, ut_a, ut_ad, ut_error, ut_is_2pow, UT_LIST_GET_FIRST, UT_LIST_GET_NEXT, and ut_print_timestamp().

UNIV_INTERN bool fil_is_exist ( ulint  space_id,
ulint  block_offset 
)

Confirm whether the parameters are valid or not in: offset in number of blocks

Confirm whether the parameters are valid or not

Parameters
space_idin: space id
block_offsetin: offset in number of blocks

Definition at line 4502 of file fil0fil.cc.

References FIL_TABLESPACE, fil_space_struct::id, fil_system_struct::mutex, OS_FILE_READ, fil_space_struct::purpose, fil_node_struct::size, fil_node_struct::space, UT_LIST_GET_FIRST, and UT_LIST_GET_NEXT.

UNIV_INTERN ulint fil_load_single_table_tablespaces ( void  )

At the server startup, if we need crash recovery, scans the database directories under the MySQL datadir, looking for .ibd files. Those files are single-table tablespaces. We need to know the space id in each of them so that we know into which file we should look to check the contents of a page stored in the doublewrite buffer, also to know where to apply log records where the space id is != 0.

Returns
DB_SUCCESS or error number

Definition at line 3522 of file fil0fil.cc.

References mem_free, os_file_stat_struct::name, os_file_closedir(), os_file_opendir(), srv_normalize_path_for_win(), os_file_stat_struct::type, and ut_print_filename().

UNIV_INTERN void fil_node_create ( const char *  name,
ulint  size,
ulint  id,
ibool  is_raw 
)

Appends a new file to the chain of files of a space. File must be closed. in: TRUE if a raw device or a raw disk partition

Appends a new file to the chain of files of a space. File must be closed.

Parameters
namein: file name (file must be closed)
sizein: file size in database blocks, rounded downwards to an integer
idin: space id where to append
is_rawin: TRUE if a raw device or a raw disk partition

Definition at line 596 of file fil0fil.cc.

References fil_node_struct::flush_counter, fil_node_struct::is_raw_disk, fil_node_struct::magic_n, fil_system_struct::max_assigned_id, mem_free, mem_strdup(), fil_node_struct::modification_counter, fil_system_struct::mutex, fil_node_struct::n_pending, fil_node_struct::n_pending_flushes, fil_node_struct::name, fil_node_struct::open, fil_node_struct::size, fil_space_struct::size, fil_node_struct::space, srv_start_raw_disk_in_use, ut_a, UT_LIST_ADD_LAST, ut_print_filename(), and ut_print_timestamp().

UNIV_INTERN byte* fil_op_log_parse_or_replay ( byte *  ptr,
byte *  end_ptr,
ulint  type,
ulint  space_id,
ulint  log_flags 
)

Parses the body of a log record written about an .ibd file operation. That is, the log record part after the standard (type, space id, page no) header of the log record.

If desired, also replays the delete or rename operation if the .ibd file exists and the space id in it matches. Replays the create operation if a file at that path does not exist yet. If the database directory for the file to be created does not exist, then we create the directory, too.

Note that ibbackup –apply-log sets fil_path_to_mysql_datadir to point to the datadir that we should use in replaying the file operations.

Returns
end of log record, or NULL if the record was not completely contained between ptr and end_ptr in: redo log flags (stored in the page number parameter)

Parses the body of a log record written about an .ibd file operation. That is, the log record part after the standard (type, space id, page no) header of the log record.

If desired, also replays the delete or rename operation if the .ibd file exists and the space id in it matches. Replays the create operation if a file at that path does not exist yet. If the database directory for the file to be created does not exist, then we create the directory, too.

Note that ibbackup –apply-log sets fil_path_to_mysql_datadir to point to the datadir that we should use in replaying the file operations.

Returns
end of log record, or NULL if the record was not completely contained between ptr and end_ptr
Parameters
ptrin: buffer containing the log record body, or an initial segment of it, if the record does not fir completely between ptr and end_ptr
end_ptrin: buffer end
typein: the type of this log record
space_idin: the space id of the tablespace in question, or 0 if the log record should only be parsed but not replayed
log_flagsin: redo log flags (stored in the page number parameter)

Definition at line 2043 of file fil0fil.cc.

References FIL_IBD_FILE_INITIAL_SIZE, mach_read_from_2(), mach_read_from_4(), MLOG_FILE_CREATE, MLOG_FILE_CREATE2, MLOG_FILE_DELETE, MLOG_FILE_FLAG_TEMP, MLOG_FILE_RENAME, fil_node_struct::name, ut_a, and ut_error.

UNIV_INTERN void fil_open_log_and_system_tablespace_files ( void  )

Opens all log files and system tablespace data files. They stay open until the database server shutdown. This should be called at a server startup after the space objects for the log and the system tablespace have been created. The purpose of this operation is to make sure we never run out of file descriptors if we need to read from the insert buffer or to write to the log.

Definition at line 1606 of file fil0fil.cc.

References FIL_TABLESPACE, fil_space_struct::id, fil_system_struct::max_n_open, fil_system_struct::mutex, fil_system_struct::n_open, fil_node_struct::open, fil_space_struct::purpose, fil_node_struct::space, UT_LIST_GET_FIRST, and UT_LIST_GET_NEXT.

UNIV_INTERN ibool fil_open_single_table_tablespace ( ibool  check_space_id,
ulint  id,
ulint  flags,
const char *  name 
)

Tries to open a single-table tablespace and optionally checks the space id is right in it. If does not succeed, prints an error message to the .err log. This function is used to open a tablespace when we start up mysqld, and also in IMPORT TABLESPACE. NOTE that we assume this operation is used either at the database startup or under the protection of the dictionary mutex, so that two users cannot race here. This operation does not leave the file associated with the tablespace open, but closes it after we have looked at the space id in it.

Returns
TRUE if success in: table name in the databasename/tablename format

Tries to open a single-table tablespace and optionally checks the space id is right in it. If does not succeed, prints an error message to the .err log. This function is used to open a tablespace when we start up mysqld, and also in IMPORT TABLESPACE. NOTE that we assume this operation is used either at the database startup or under the protection of the dictionary mutex, so that two users cannot race here. This operation does not leave the file associated with the tablespace open, but closes it after we have looked at the space id in it.

Returns
TRUE if success
Parameters
check_space_idin: should we check that the space id in the file is right; we assume that this function runs much faster if no check is made, since accessing the file inode probably is much faster (the OS caches them) than accessing the first page of the file
idin: space id
flagsin: tablespace flags
namein: table name in the databasename/tablename format

Definition at line 3047 of file fil0fil.cc.

References DICT_TF_BITS, DICT_TF_COMPACT, FIL_TABLESPACE, mem_free, os_file_get_last_error(), OS_FILE_OPEN, ut_a, ut_align(), ut_free(), ut_malloc(), ut_print_filename(), and ut_print_timestamp().

UNIV_INTERN ulint fil_page_get_next ( const byte *  page)

Get the successor of a file page.

Returns
FIL_PAGE_NEXT in: file page

Get the successor of a file page.

Returns
FIL_PAGE_NEXT
Parameters
pagein: file page

Definition at line 4888 of file fil0fil.cc.

References FIL_PAGE_NEXT, and mach_read_from_4().

UNIV_INTERN ulint fil_page_get_prev ( const byte *  page)

Get the predecessor of a file page.

Returns
FIL_PAGE_PREV in: file page

Get the predecessor of a file page.

Returns
FIL_PAGE_PREV
Parameters
pagein: file page

Definition at line 4876 of file fil0fil.cc.

References FIL_PAGE_PREV, and mach_read_from_4().

UNIV_INTERN ulint fil_page_get_type ( const byte *  page)

Gets the file page type.

Returns
type; NOTE that if the type has not been written to page, the return value not defined in: file page

Gets the file page type.

Returns
type; NOTE that if the type has not been written to page, the return value not defined
Parameters
pagein: file page

Definition at line 4915 of file fil0fil.cc.

References FIL_PAGE_TYPE, mach_read_from_2(), and ut_ad.

UNIV_INTERN void fil_page_set_type ( byte *  page,
ulint  type 
)

Sets the file page type. in: type

Sets the file page type.

Parameters
pagein/out: file page
typein: type

Definition at line 4899 of file fil0fil.cc.

References FIL_PAGE_TYPE, mach_write_to_2(), and ut_ad.

UNIV_INTERN void fil_read_flushed_lsn_and_arch_log_no ( os_file_t  data_file,
ibool  one_read_already,
ib_uint64_t *  min_flushed_lsn,
ib_uint64_t *  max_flushed_lsn 
)

Reads the flushed lsn and arch no fields from a data file at database startup. in/out:

Reads the flushed lsn and arch no fields from a data file at database startup.

Parameters
data_filein: open data file
one_read_alreadyin: TRUE if min and max parameters below already contain sensible data
min_flushed_lsnin/out:
max_flushed_lsnin/out:

Definition at line 1810 of file fil0fil.cc.

References FIL_PAGE_FILE_FLUSH_LSN, mach_read_from_8(), ut_align(), ut_free(), and ut_malloc().

UNIV_INTERN ibool fil_rename_tablespace ( const char *  old_name,
ulint  id,
const char *  new_name 
)

Renames a single-table tablespace. The tablespace must be cached in the tablespace memory cache.

Returns
TRUE if success in: new table name in the standard databasename/tablename format of InnoDB

Renames a single-table tablespace. The tablespace must be cached in the tablespace memory cache.

Returns
TRUE if success
Parameters
old_namein: old table name in the standard databasename/tablename format of InnoDB, or NULL if we do the rename based on the space id only
idin: space id
new_namein: new table name in the standard databasename/tablename format of InnoDB

Definition at line 2518 of file fil0fil.cc.

References fil_node_struct::flush_counter, mem_free, mem_strdup(), MLOG_FILE_RENAME, fil_node_struct::modification_counter, mtr_commit(), mtr_start(), fil_system_struct::mutex, fil_node_struct::n_pending, fil_node_struct::n_pending_flushes, fil_node_struct::name, fil_space_struct::name, fil_node_struct::open, os_thread_sleep(), fil_node_struct::space, fil_space_struct::stop_ios, ut_a, UT_LIST_GET_FIRST, UT_LIST_GET_LEN, ut_print_filename(), and ut_print_timestamp().

UNIV_INTERN ibool fil_reset_too_high_lsns ( const char *  name,
ib_uint64_t  current_lsn 
)

It is possible, though very improbable, that the lsn's in the tablespace to be imported have risen above the current system lsn, if a lengthy purge, ibuf merge, or rollback was performed on a backup taken with ibbackup. If that is the case, reset page lsn's in the file. We assume that mysqld was shut down after it performed these cleanup operations on the .ibd file, so that it at the shutdown stamped the latest lsn to the FIL_PAGE_FILE_FLUSH_LSN in the first page of the .ibd file, and we can determine whether we need to reset the lsn's just by looking at that flush lsn.

Returns
TRUE if success in: reset lsn's if the lsn stamped to FIL_PAGE_FILE_FLUSH_LSN in the first page is too high

It is possible, though very improbable, that the lsn's in the tablespace to be imported have risen above the current system lsn, if a lengthy purge, ibuf merge, or rollback was performed on a backup taken with ibbackup. If that is the case, reset page lsn's in the file. We assume that mysqld was shut down after it performed these cleanup operations on the .ibd file, so that it at the shutdown stamped the latest lsn to the FIL_PAGE_FILE_FLUSH_LSN in the first page of the .ibd file, and we can determine whether we need to reset the lsn's just by looking at that flush lsn.

Returns
TRUE if success
Parameters
namein: table name in the databasename/tablename format
current_lsnin: reset lsn's if the lsn stamped to FIL_PAGE_FILE_FLUSH_LSN in the first page is too high

Definition at line 2873 of file fil0fil.cc.

References page_zip_des_struct::data, FIL_PAGE_FILE_FLUSH_LSN, FIL_PAGE_LSN, mach_read_from_8(), mach_write_to_8(), mem_free, os_file_get_last_error(), os_file_get_size_as_iblonglong(), OS_FILE_OPEN, page_zip_des_init(), page_zip_set_size(), ut_a, ut_align(), ut_free(), ut_is_2pow, ut_malloc(), ut_print_filename(), and ut_print_timestamp().

UNIV_INTERN void fil_set_max_space_id_if_bigger ( ulint  max_id)

Sets the max tablespace id counter if the given number is bigger than the previous value. in: maximum known id

Sets the max tablespace id counter if the given number is bigger than the previous value.

Parameters
max_idin: maximum known id

Definition at line 1696 of file fil0fil.cc.

References fil_system_struct::max_assigned_id, fil_system_struct::mutex, SRV_LOG_SPACE_FIRST_ID, and ut_error.

UNIV_INTERN ibool fil_space_create ( const char *  name,
ulint  id,
ulint  flags,
ulint  purpose 
)

Creates a space memory object and puts it to the 'fil system' hash table. If there is an error, prints an error message to the .err log.

Returns
TRUE if success in: FIL_TABLESPACE, or FIL_LOG if log

Creates a space memory object and puts it to the tablespace memory cache. If there is an error, prints an error message to the .err log.

Returns
TRUE if success
Parameters
namein: space name
idin: space id
flagsin: compressed page size and file format, or 0
purposein: FIL_TABLESPACE, or FIL_LOG if log

Definition at line 1140 of file fil0fil.cc.

References DICT_TF_BITS, DICT_TF_COMPACT, FIL_TABLESPACE, fil_space_struct::flags, HASH_INSERT, fil_space_struct::id, fil_space_struct::is_being_deleted, fil_space_struct::is_in_unflushed_spaces, fil_space_struct::latch, fil_space_struct::magic_n, fil_space_struct::mark, fil_system_struct::max_assigned_id, mem_strdup(), fil_system_struct::mutex, fil_space_struct::n_pending_flushes, fil_space_struct::n_pending_ibuf_merges, fil_space_struct::n_reserved_extents, fil_space_struct::name, fil_system_struct::name_hash, fil_space_struct::purpose, recv_recovery_on, rw_lock_create, fil_space_struct::size, fil_node_struct::space, fil_system_struct::spaces, fil_space_struct::stop_ibuf_merges, fil_space_struct::stop_ios, fil_space_struct::tablespace_version, fil_system_struct::tablespace_version, ut_a, ut_fold_string(), UT_LIST_ADD_LAST, UT_LIST_INIT, ut_print_filename(), and ut_print_timestamp().

UNIV_INTERN ibool fil_space_for_table_exists_in_mem ( ulint  id,
const char *  name,
ibool  is_temp,
ibool  mark_space,
ibool  print_error_if_does_not_exist 
)

Returns TRUE if a matching tablespace exists in the InnoDB tablespace memory cache. Note that if we have not done a crash recovery at the database startup, there may be many tablespaces which are not yet in the memory cache.

Returns
TRUE if a matching tablespace exists in the memory cache in: print detailed error information to the .err log if a matching tablespace is not found from memory

Returns TRUE if a matching tablespace exists in the InnoDB tablespace memory cache. Note that if we have not done a crash recovery at the database startup, there may be many tablespaces which are not yet in the memory cache.

Returns
TRUE if a matching tablespace exists in the memory cache
Parameters
idin: space id
namein: table name in the standard 'databasename/tablename' format or the dir path to a temp table
is_tempin: TRUE if created with CREATE TEMPORARY TABLE
mark_spacein: in crash recovery, at database startup we mark all spaces which have an associated table in the InnoDB data dictionary, so that we can print a warning about orphaned tablespaces
print_error_if_does_not_existin: print detailed error information to the .err log if a matching tablespace is not found from memory

Definition at line 3709 of file fil0fil.cc.

References fil_space_struct::id, fil_space_struct::mark, mem_free, fil_system_struct::mutex, fil_space_struct::name, fil_node_struct::space, ut_ad, ut_print_filename(), and ut_print_timestamp().

UNIV_INTERN ulint fil_space_get_flags ( ulint  id)

Returns the flags of the space. The tablespace must be cached in the memory cache.

Returns
flags, ULINT_UNDEFINED if space not found in: space id

Returns the flags of the space. The tablespace must be cached in the memory cache.

Returns
flags, ULINT_UNDEFINED if space not found
Parameters
idin: space id

Definition at line 1483 of file fil0fil.cc.

References FIL_TABLESPACE, fil_space_struct::flags, fil_system_struct::mutex, OS_FILE_READ, fil_space_struct::purpose, fil_space_struct::size, fil_node_struct::space, ut_a, ut_ad, UT_LIST_GET_FIRST, and UT_LIST_GET_LEN.

UNIV_INTERN rw_lock_t* fil_space_get_latch ( ulint  id,
ulint *  flags 
)

Returns the latch of a file space.

Returns
latch protecting storage allocation out: compressed page size, or 0 for uncompressed tablespaces

Returns the latch of a file space.

Returns
latch protecting storage allocation
Parameters
idin: space id
flagsout: tablespace flags

Definition at line 515 of file fil0fil.cc.

References fil_space_struct::flags, fil_space_struct::latch, fil_system_struct::mutex, fil_node_struct::space, ut_a, and ut_ad.

UNIV_INTERN ulint fil_space_get_n_reserved_extents ( ulint  id)

Gets the number of reserved extents. If the database is silent, this number should be zero. in: space id

Gets the number of reserved extents. If the database is silent, this number should be zero.

Parameters
idin: space id

Definition at line 4142 of file fil0fil.cc.

References fil_system_struct::mutex, fil_space_struct::n_reserved_extents, fil_node_struct::space, ut_a, and ut_ad.

UNIV_INTERN ulint fil_space_get_size ( ulint  id)

Returns the size of the space in pages. The tablespace must be cached in the memory cache.

Returns
space size, 0 if space not found in: space id

Returns the size of the space in pages. The tablespace must be cached in the memory cache.

Returns
space size, 0 if space not found
Parameters
idin: space id

Definition at line 1435 of file fil0fil.cc.

References FIL_TABLESPACE, fil_system_struct::mutex, OS_FILE_READ, fil_space_struct::purpose, fil_node_struct::size, fil_space_struct::size, fil_node_struct::space, ut_a, ut_ad, UT_LIST_GET_FIRST, and UT_LIST_GET_LEN.

UNIV_INTERN ulint fil_space_get_type ( ulint  id)

Returns the type of a file space.

Returns
FIL_TABLESPACE or FIL_LOG in: space id

Returns the type of a file space.

Returns
FIL_TABLESPACE or FIL_LOG
Parameters
idin: space id

Definition at line 544 of file fil0fil.cc.

References fil_system_struct::mutex, fil_space_struct::purpose, fil_node_struct::space, ut_a, and ut_ad.

UNIV_INTERN ib_int64_t fil_space_get_version ( ulint  id)

Returns the version number of a tablespace, -1 if not found.

Returns
version number, -1 if the tablespace does not exist in the memory cache in: space id

Returns the version number of a tablespace, -1 if not found.

Returns
version number, -1 if the tablespace does not exist in the memory cache
Parameters
idin: space id

Definition at line 488 of file fil0fil.cc.

References fil_system_struct::mutex, fil_node_struct::space, fil_space_struct::tablespace_version, and ut_ad.

UNIV_INTERN ulint fil_space_get_zip_size ( ulint  id)

Returns the compressed page size of the space, or 0 if the space is not compressed. The tablespace must be cached in the memory cache.

Returns
compressed page size, ULINT_UNDEFINED if space not found in: space id

Returns the compressed page size of the space, or 0 if the space is not compressed. The tablespace must be cached in the memory cache.

Returns
compressed page size, ULINT_UNDEFINED if space not found
Parameters
idin: space id

Definition at line 1535 of file fil0fil.cc.

References dict_table_flags_to_zip_size().

UNIV_INTERN void fil_space_release_free_extents ( ulint  id,
ulint  n_reserved 
)

Releases free extents in a file space. in: how many one reserved

Releases free extents in a file space.

Parameters
idin: space id
n_reservedin: how many one reserved

Definition at line 4116 of file fil0fil.cc.

References fil_system_struct::mutex, fil_space_struct::n_reserved_extents, fil_node_struct::space, ut_a, and ut_ad.

UNIV_INTERN ibool fil_space_reserve_free_extents ( ulint  id,
ulint  n_free_now,
ulint  n_to_reserve 
)

Tries to reserve free extents in a file space.

Returns
TRUE if succeed in: how many one wants to reserve

Tries to reserve free extents in a file space.

Returns
TRUE if succeed
Parameters
idin: space id
n_free_nowin: number of free extents now
n_to_reservein: how many one wants to reserve

Definition at line 4083 of file fil0fil.cc.

References fil_system_struct::mutex, fil_space_struct::n_reserved_extents, fil_node_struct::space, ut_a, and ut_ad.

UNIV_INTERN ibool fil_tablespace_deleted_or_being_deleted_in_mem ( ulint  id,
ib_int64_t  version 
)

Returns TRUE if a single-table tablespace does not exist in the memory cache, or is being deleted there.

Returns
TRUE if does not exist or is being\ deleted in: tablespace_version should be this; if you pass -1 as the value of this, then this parameter is ignored

Returns TRUE if a single-table tablespace does not exist in the memory cache, or is being deleted there.

Returns
TRUE if does not exist or is being\ deleted
Parameters
idin: space id
versionin: tablespace_version should be this; if you pass -1 as the value of this, then this parameter is ignored

Definition at line 3647 of file fil0fil.cc.

References fil_space_struct::is_being_deleted, fil_system_struct::mutex, fil_node_struct::space, fil_space_struct::tablespace_version, and ut_ad.

UNIV_INTERN ibool fil_tablespace_exists_in_mem ( ulint  id)

Returns TRUE if a single-table tablespace exists in the memory cache.

Returns
TRUE if exists in: space id

Returns TRUE if a single-table tablespace exists in the memory cache.

Returns
TRUE if exists
Parameters
idin: space id

Definition at line 3685 of file fil0fil.cc.

References fil_system_struct::mutex, fil_node_struct::space, and ut_ad.

UNIV_INTERN ibool fil_tablespace_is_being_deleted ( ulint  id)

Returns TRUE if a single-table tablespace is being deleted.

Returns
TRUE if being deleted in: space id

Returns TRUE if a single-table tablespace is being deleted.

Returns
TRUE if being deleted
Parameters
idin: space id

Definition at line 2376 of file fil0fil.cc.

References fil_space_struct::is_being_deleted, fil_system_struct::mutex, fil_node_struct::space, and ut_a.

UNIV_INTERN ulint fil_write_flushed_lsn_to_data_files ( ib_uint64_t  lsn,
ulint  arch_log_no 
)

Writes the flushed lsn and the latest archived log number to the page header of the first page of each data file in the system tablespace.

Returns
DB_SUCCESS or error number in: latest archived log file number

Writes the flushed lsn and the latest archived log number to the page header of the first page of each data file in the system tablespace.

Returns
DB_SUCCESS or error number
Parameters
lsnin: lsn to write
arch_log_noin: latest archived log file number

Definition at line 1754 of file fil0fil.cc.

References FIL_TABLESPACE, fil_space_struct::id, fil_system_struct::mutex, fil_space_struct::purpose, fil_node_struct::size, fil_node_struct::space, UT_LIST_GET_FIRST, and UT_LIST_GET_NEXT.

Variable Documentation

fil_addr_t fil_addr_null

The null file address

Definition at line 123 of file fil0fil.cc.

ulint fil_n_log_flushes

The number of fsyncs done to the log

Definition at line 115 of file fil0fil.cc.

ulint fil_n_pending_log_flushes

Number of pending redo log flushes

Definition at line 118 of file fil0fil.cc.

ulint fil_n_pending_tablespace_flushes

Number of pending tablespace flushes

Definition at line 120 of file fil0fil.cc.

const char* fil_path_to_mysql_datadir
When mysqld is run, the default directory "." is the mysqld datadir,

but in the MySQL Embedded Server Library and ibbackup it is not the default directory, and we must set the base file path explicitly

Definition at line 112 of file fil0fil.cc.