CUBRID Engine
latest
|
#include "config.h"
#include "error_manager.h"
#include "log_lsa.hpp"
#include "recovery.h"
#include "storage_common.h"
#include "thread_compat.hpp"
Go to the source code of this file.
Classes | |
struct | disk_volume_space_info |
struct | disk_volmap_clone |
Macros | |
#define | DISK_VOLHEADER_PAGE 0 /* Page of the volume header */ |
#define | VSID_SET_NULL(vsidp) (vsidp)->sectid = NULL_SECTID; (vsidp)->volid = NULL_VOLID |
#define | VSID_IS_NULL(vsidp) ((vsidp)->sectid == NULL_SECTID || (vsidp)->volid == NULL_VOLID) |
#define | VSID_COPY(dest, src) *((VSID *) dest) = *((VSID *) src) |
#define | VSID_EQ(first, second) ((first)->volid == (second)->volid && (first)->sectid == (second)->sectid) |
#define | DISK_VOLUME_SPACE_INFO_INITIALIZER { 0, 0, 0 } |
#define | DISK_SECTS_SIZE(nsects) ((INT64) (nsects) * IO_SECTORSIZE) |
#define | DISK_SECTS_NPAGES(nsects) ((nsects) * DISK_SECTOR_NPAGES) |
#define | DISK_PAGES_TO_SECTS(npages) (CEIL_PTVDIV (npages, DISK_SECTOR_NPAGES)) |
Typedefs | |
typedef struct disk_volume_space_info | DISK_VOLUME_SPACE_INFO |
typedef struct disk_volmap_clone | DISK_VOLMAP_CLONE |
Enumerations | |
enum | DISK_FLUSH_TYPE { DISK_DONT_FLUSH, DISK_FLUSH, DISK_FLUSH_AND_INVALIDATE } |
enum | DISK_ISVALID { DISK_INVALID, DISK_VALID, DISK_ERROR } |
Functions | |
int | disk_manager_init (THREAD_ENTRY *thread_p, bool load_form_disk) |
void | disk_manager_final (void) |
int | disk_format_first_volume (THREAD_ENTRY *thread_p, const char *full_dbname, const char *dbcomments, DKNPAGES npages) |
int | disk_add_volume_extension (THREAD_ENTRY *thread_p, DB_VOLPURPOSE purpose, DKNPAGES npages, const char *path, const char *name, const char *comments, int max_write_size_in_sec, bool overwrite, VOLID *volid_out) |
void | disk_lock_extend (void) |
void | disk_unlock_extend (void) |
int | disk_unformat (THREAD_ENTRY *thread_p, const char *vol_fullname) |
int | disk_set_creation (THREAD_ENTRY *thread_p, INT16 volid, const char *new_vol_fullname, const INT64 *new_dbcreation, const LOG_LSA *new_chkptlsa, bool logchange, DISK_FLUSH_TYPE flush_page) |
int | disk_set_link (THREAD_ENTRY *thread_p, INT16 volid, INT16 next_volid, const char *next_volext_fullname, bool logchange, DISK_FLUSH_TYPE flush) |
int | disk_set_checkpoint (THREAD_ENTRY *thread_p, INT16 volid, const LOG_LSA *log_chkpt_lsa) |
int | disk_set_boot_hfid (THREAD_ENTRY *thread_p, INT16 volid, const HFID *hfid) |
int | disk_reserve_sectors (THREAD_ENTRY *thread_p, DB_VOLPURPOSE purpose, VOLID volid_hint, int n_sectors, VSID *reserved_sectors) |
int | disk_unreserve_ordered_sectors (THREAD_ENTRY *thread_p, DB_VOLPURPOSE purpose, int nsects, VSID *vsids) |
DISK_ISVALID | disk_is_page_sector_reserved (THREAD_ENTRY *thread_p, VOLID volid, PAGEID pageid) |
DISK_ISVALID | disk_is_page_sector_reserved_with_debug_crash (THREAD_ENTRY *thread_p, VOLID volid, PAGEID pageid, bool debug_crash) |
DISK_ISVALID | disk_check_sectors_are_reserved (THREAD_ENTRY *thread_p, VSID *vsids, int nsects) |
INT16 | xdisk_get_purpose_and_sys_lastpage (THREAD_ENTRY *thread_p, INT16 volid, DISK_VOLPURPOSE *vol_purpose, INT32 *sys_lastpage) |
int | disk_get_checkpoint (THREAD_ENTRY *thread_p, INT16 volid, LOG_LSA *vol_lsa) |
int | disk_get_creation_time (THREAD_ENTRY *thread_p, INT16 volid, INT64 *db_creation) |
INT32 | disk_get_total_numsectors (THREAD_ENTRY *thread_p, INT16 volid) |
HFID * | disk_get_boot_hfid (THREAD_ENTRY *thread_p, INT16 volid, HFID *hfid) |
char * | disk_get_link (THREAD_ENTRY *thread_p, INT16 volid, INT16 *next_volid, char *next_volext_fullname) |
DISK_ISVALID | disk_check (THREAD_ENTRY *thread_p, bool repair) |
int | disk_dump_all (THREAD_ENTRY *thread_p, FILE *fp) |
int | disk_spacedb (THREAD_ENTRY *thread_p, SPACEDB_ALL *spaceall, SPACEDB_ONEVOL **spacevols) |
int | disk_volume_header_start_scan (THREAD_ENTRY *thread_p, int type, DB_VALUE **arg_values, int arg_cnt, void **ctx) |
int | disk_volume_header_end_scan (THREAD_ENTRY *thread_p, void **ctx) |
SCAN_CODE | disk_volume_header_next_scan (THREAD_ENTRY *thread_p, int cursor, DB_VALUE **out_values, int out_cnt, void *ctx) |
int | disk_compare_vsids (const void *a, const void *b) |
int | disk_rv_redo_dboutside_newvol (THREAD_ENTRY *thread_p, LOG_RCV *rcv) |
int | disk_rv_undo_format (THREAD_ENTRY *thread_p, LOG_RCV *rcv) |
int | disk_rv_redo_format (THREAD_ENTRY *thread_p, LOG_RCV *rcv) |
void | disk_rv_dump_hdr (FILE *fp, int length_ignore, void *data) |
int | disk_rv_redo_init_map (THREAD_ENTRY *thread_p, LOG_RCV *rcv) |
void | disk_rv_dump_init_map (FILE *fp, int length_ignore, void *data) |
int | disk_rv_undoredo_set_creation_time (THREAD_ENTRY *thread_p, LOG_RCV *rcv) |
void | disk_rv_dump_set_creation_time (FILE *fp, int length_ignore, void *data) |
int | disk_rv_undoredo_set_boot_hfid (THREAD_ENTRY *thread_p, LOG_RCV *rcv) |
void | disk_rv_dump_set_boot_hfid (FILE *fp, int length_ignore, void *data) |
int | disk_rv_undoredo_link (THREAD_ENTRY *thread_p, LOG_RCV *rcv) |
void | disk_rv_dump_link (FILE *fp, int length_ignore, void *data) |
int | disk_rv_redo_volume_expand (THREAD_ENTRY *thread_p, LOG_RCV *rcv) |
void | disk_rv_dump_volume_expand (FILE *fp, int length_ignore, void *data) |
int | disk_rv_reserve_sectors (THREAD_ENTRY *thread_p, LOG_RCV *rcv) |
int | disk_rv_unreserve_sectors (THREAD_ENTRY *thread_p, LOG_RCV *rcv) |
int | disk_rv_volhead_extend_redo (THREAD_ENTRY *thread_p, LOG_RCV *rcv) |
int | disk_rv_volhead_extend_undo (THREAD_ENTRY *thread_p, LOG_RCV *rcv) |
void | disk_volheader_check_magic (THREAD_ENTRY *thread_p, const PAGE_PTR page_volheader) |
int | disk_sectors_to_extend_npages (const int num_pages) |
#define DISK_PAGES_TO_SECTS | ( | npages | ) | (CEIL_PTVDIV (npages, DISK_SECTOR_NPAGES)) |
Definition at line 71 of file disk_manager.h.
Referenced by disk_sectors_to_extend_npages().
#define DISK_SECTS_NPAGES | ( | nsects | ) | ((nsects) * DISK_SECTOR_NPAGES) |
Definition at line 70 of file disk_manager.h.
Referenced by disk_add_volume(), disk_format(), disk_is_page_sector_reserved_with_debug_crash(), disk_rv_redo_dboutside_newvol(), disk_spacedb(), disk_volume_expand(), log_recreate(), xdisk_get_free_numpages(), and xdisk_get_total_numpages().
#define DISK_SECTS_SIZE | ( | nsects | ) | ((INT64) (nsects) * IO_SECTORSIZE) |
Definition at line 69 of file disk_manager.h.
Referenced by disk_add_volume().
#define DISK_VOLHEADER_PAGE 0 /* Page of the volume header */ |
Definition at line 35 of file disk_manager.h.
Referenced by disk_check_volume(), disk_format(), disk_get_volheader_internal(), disk_is_page_sector_reserved_with_debug_crash(), disk_rv_undo_format(), disk_set_boot_hfid(), disk_set_link(), disk_verify_volume_header(), disk_volume_header_set_stab(), and fileio_restore_volume().
#define DISK_VOLUME_SPACE_INFO_INITIALIZER { 0, 0, 0 } |
Definition at line 67 of file disk_manager.h.
Referenced by disk_cache_load_volume().
Definition at line 43 of file disk_manager.h.
#define VSID_EQ | ( | first, | |
second | |||
) | ((first)->volid == (second)->volid && (first)->sectid == (second)->sectid) |
Definition at line 44 of file disk_manager.h.
Referenced by file_table_collector_has_page().
#define VSID_IS_NULL | ( | vsidp | ) | ((vsidp)->sectid == NULL_SECTID || (vsidp)->volid == NULL_VOLID) |
Definition at line 42 of file disk_manager.h.
#define VSID_SET_NULL | ( | vsidp | ) | (vsidp)->sectid = NULL_SECTID; (vsidp)->volid = NULL_VOLID |
Definition at line 41 of file disk_manager.h.
typedef struct disk_volmap_clone DISK_VOLMAP_CLONE |
Definition at line 74 of file disk_manager.h.
typedef struct disk_volume_space_info DISK_VOLUME_SPACE_INFO |
Definition at line 60 of file disk_manager.h.
enum DISK_FLUSH_TYPE |
Enumerator | |
---|---|
DISK_DONT_FLUSH | |
DISK_FLUSH | |
DISK_FLUSH_AND_INVALIDATE |
Definition at line 46 of file disk_manager.h.
enum DISK_ISVALID |
Enumerator | |
---|---|
DISK_INVALID | |
DISK_VALID | |
DISK_ERROR |
Definition at line 53 of file disk_manager.h.
int disk_add_volume_extension | ( | THREAD_ENTRY * | thread_p, |
DB_VOLPURPOSE | purpose, | ||
DKNPAGES | npages, | ||
const char * | path, | ||
const char * | name, | ||
const char * | comments, | ||
int | max_write_size_in_sec, | ||
bool | overwrite, | ||
VOLID * | volid_out | ||
) |
Definition at line 2296 of file disk_manager.c.
References assert, ASSERT_ERROR, dbdef_vol_ext_info::comments, CSECT_DISK_CHECK, csect_enter_as_reader, csect_exit, DB_PERMANENT_DATA_PURPOSE, DB_PERMANENT_VOLTYPE, disk_add_volume(), disk_cache_lock_reserve_for_purpose(), disk_cache_unlock_reserve_for_purpose(), disk_cache_update_vol_free(), disk_is_valid_volid(), disk_lock_extend(), disk_sectors_to_extend_npages(), disk_unlock_extend(), disk_perm_info::extend_info, INF_WAIT, dbdef_vol_ext_info::max_npages, dbdef_vol_ext_info::max_writesize_in_sec, dbdef_vol_ext_info::name, NO_ERROR, disk_cache_volinfo::nsect_free, disk_extend_info::nsect_max, dbdef_vol_ext_info::nsect_max, disk_temp_info::nsect_perm_total, disk_extend_info::nsect_total, dbdef_vol_ext_info::nsect_total, NULL, NULL_VOLID, disk_cache::nvols_perm, dbdef_vol_ext_info::overwrite, dbdef_vol_ext_info::path, disk_cache::perm_purpose_info, disk_volume_header::purpose, disk_cache_volinfo::purpose, dbdef_vol_ext_info::purpose, disk_cache::temp_purpose_info, disk_cache::vols, and dbdef_vol_ext_info::voltype.
Referenced by boot_parse_add_volume_extensions(), and xboot_add_volume_extension().
DISK_ISVALID disk_check | ( | THREAD_ENTRY * | thread_p, |
bool | repair | ||
) |
Definition at line 6348 of file disk_manager.c.
References ARG_FILE_LINE, assert, ASSERT_ERROR, ASSERT_ERROR_AND_SET, assert_release, bit64_clear(), bit64_is_set(), bit64_set_trailing_bits(), CSECT_DISK_CHECK, csect_enter, csect_exit, DB_PAGESIZE, DB_PERMANENT_DATA_PURPOSE, DB_TEMPORARY_DATA_PURPOSE, disk_check_volume(), DISK_ERROR, disk_get_volheader, DISK_INVALID, disk_log, DISK_STAB_PAGE_BIT_COUNT, DISK_STAB_UNIT_BIT_COUNT, DISK_STAB_UNIT_SIZE_OF, DISK_VALID, ER_ERROR_SEVERITY, ER_GENERIC_ERROR, ER_OUT_OF_VIRTUAL_MEMORY, er_set(), disk_perm_info::extend_info, disk_temp_info::extend_info, free_and_init, INF_WAIT, LOG_MAX_DBVOLID, disk_volmap_clone::map, NO_ERROR, disk_cache_volinfo::nsect_free, disk_extend_info::nsect_free, disk_temp_info::nsect_perm_free, disk_volume_header::nsect_total, NULL, disk_cache::nvols_perm, disk_cache::nvols_temp, OLD_PAGE, vpid::pageid, disk_cache::perm_purpose_info, pgbuf_fix, PGBUF_LATCH_READ, PGBUF_UNCONDITIONAL_LATCH, pgbuf_unfix, pgbuf_unfix_and_init, disk_cache_volinfo::purpose, vsid::sectid, SECTOR_FROM_PAGEID, disk_volmap_clone::size_map, disk_volume_header::stab_first_page, disk_volume_header::stab_npages, disk_volume_header::sys_lastpage, disk_cache::temp_purpose_info, disk_volume_header::volid, vpid::volid, vsid::volid, disk_cache::vols, xboot_find_last_permanent(), xboot_find_last_temp(), xboot_find_number_permanent_volumes(), and xboot_find_number_temp_volumes().
Referenced by disk_reserve_sectors(), and xboot_check_db_consistency().
DISK_ISVALID disk_check_sectors_are_reserved | ( | THREAD_ENTRY * | thread_p, |
VSID * | vsids, | ||
int | nsects | ||
) |
Definition at line 5067 of file disk_manager.c.
References assert, ASSERT_ERROR, disk_reserve_context::cache_vol_reserve, disk_check_sectors_are_reserved_in_volume(), DISK_ERROR, DISK_INVALID, DISK_UNKNOWN_PURPOSE, DISK_VALID, disk_reserve_context::n_cache_vol_reserve, disk_cache_vol_reserve::nsect, disk_reserve_context::nsect_total, disk_reserve_context::nsects_lastvol_remaining, NULL_VOLID, disk_reserve_context::purpose, disk_volume_header::volid, disk_cache_vol_reserve::volid, vsid::volid, and disk_reserve_context::vsidp.
Referenced by file_table_check().
Definition at line 6071 of file disk_manager.c.
References vsid::sectid, and vsid::volid.
Referenced by disk_reserve_sectors(), file_check_vpid(), file_create(), file_extdata_collect_ftab_pages(), file_header_sanity_check(), file_perm_dealloc(), file_perm_expand(), file_table_add_full_sector(), file_table_check_page_is_in_sectors(), file_table_collect_all_vsids(), and file_temp_reset_user_pages().
int disk_dump_all | ( | THREAD_ENTRY * | thread_p, |
FILE * | fp | ||
) |
Definition at line 5853 of file disk_manager.c.
References disk_dump_goodvol_all(), ER_FAILED, fileio_map_mounted(), NO_ERROR, and NULL.
Referenced by diagdb().
int disk_format_first_volume | ( | THREAD_ENTRY * | thread_p, |
const char * | full_dbname, | ||
const char * | dbcomments, | ||
DKNPAGES | npages | ||
) |
Definition at line 5002 of file disk_manager.c.
References ASSERT_ERROR, dbdef_vol_ext_info::comments, DB_PERMANENT_DATA_PURPOSE, DB_PERMANENT_VOLTYPE, disk_format(), disk_manager_init(), disk_sectors_to_extend_npages(), disk_perm_info::extend_info, LOG_DBFIRST_VOLID, dbdef_vol_ext_info::max_writesize_in_sec, dbdef_vol_ext_info::name, NO_ERROR, disk_cache_volinfo::nsect_free, disk_extend_info::nsect_free, disk_extend_info::nsect_max, dbdef_vol_ext_info::nsect_max, disk_extend_info::nsect_total, dbdef_vol_ext_info::nsect_total, disk_cache::nvols_perm, dbdef_vol_ext_info::overwrite, disk_cache::perm_purpose_info, disk_cache_volinfo::purpose, dbdef_vol_ext_info::purpose, STATIC_INLINE, disk_cache::vols, and dbdef_vol_ext_info::voltype.
Referenced by boot_create_all_volumes().
HFID* disk_get_boot_hfid | ( | THREAD_ENTRY * | thread_p, |
INT16 | volid, | ||
HFID * | hfid | ||
) |
Definition at line 1130 of file disk_manager.c.
References ASSERT_ERROR, disk_volume_header::boot_hfid, disk_get_volheader, disk_verify_volume_header(), HFID_COPY, HFID_IS_NULL, NO_ERROR, NULL, PGBUF_LATCH_READ, and pgbuf_unfix_and_init.
Referenced by boot_remove_all_volumes(), boot_restart_server(), and xboot_emergency_patch().
int disk_get_checkpoint | ( | THREAD_ENTRY * | thread_p, |
INT16 | volid, | ||
LOG_LSA * | vol_lsa | ||
) |
Definition at line 5458 of file disk_manager.c.
References ASSERT_ERROR, disk_volume_header::chkpt_lsa, disk_get_volheader, disk_verify_volume_header(), NO_ERROR, NULL, log_lsa::offset, log_lsa::pageid, PGBUF_LATCH_READ, and pgbuf_unfix_and_init.
Referenced by log_rv_find_checkpoint().
int disk_get_creation_time | ( | THREAD_ENTRY * | thread_p, |
INT16 | volid, | ||
INT64 * | db_creation | ||
) |
Definition at line 5488 of file disk_manager.c.
References ASSERT_ERROR, disk_volume_header::db_creation, disk_get_volheader, disk_verify_volume_header(), DISK_VOLPURPOSE, NO_ERROR, NULL, PGBUF_LATCH_READ, and pgbuf_unfix_and_init.
Referenced by log_recovery_notpartof_volumes(), log_recovery_resetlog(), log_recreate(), and log_verify_dbcreation().
char* disk_get_link | ( | THREAD_ENTRY * | thread_p, |
INT16 | volid, | ||
INT16 * | next_volid, | ||
char * | next_volext_fullname | ||
) |
Definition at line 1165 of file disk_manager.c.
References assert, ASSERT_ERROR, DB_MAX_PATH_LENGTH, disk_get_volheader, disk_verify_volume_header(), disk_vhdr_get_next_vol_fullname(), disk_volume_header::next_volid, NO_ERROR, NULL, PGBUF_LATCH_READ, and pgbuf_unfix_and_init.
Referenced by boot_check_permanent_volumes(), boot_find_rest_permanent_volumes(), and logpb_recreate_volume_info().
INT32 disk_get_total_numsectors | ( | THREAD_ENTRY * | thread_p, |
INT16 | volid | ||
) |
Definition at line 5692 of file disk_manager.c.
References ASSERT_ERROR, disk_get_volheader, NO_ERROR, disk_volume_header::nsect_total, NULL, PGBUF_LATCH_READ, and pgbuf_unfix_and_init.
DISK_ISVALID disk_is_page_sector_reserved | ( | THREAD_ENTRY * | thread_p, |
VOLID | volid, | ||
PAGEID | pageid | ||
) |
Definition at line 4100 of file disk_manager.c.
References disk_is_page_sector_reserved_with_debug_crash().
Referenced by btree_leaf_record_change_overflow_link(), btree_rv_redo_global_unique_stats_commit(), btree_rv_undo_global_unique_stats_commit(), heap_reuse(), log_rv_redo_fix_page(), and pgbuf_fix_if_not_deallocated_with_caller().
DISK_ISVALID disk_is_page_sector_reserved_with_debug_crash | ( | THREAD_ENTRY * | thread_p, |
VOLID | volid, | ||
PAGEID | pageid, | ||
bool | debug_crash | ||
) |
Definition at line 4115 of file disk_manager.c.
References assert, ASSERT_ERROR, DISK_ERROR, disk_get_volheader, DISK_INVALID, disk_is_sector_reserved(), DISK_SECTS_NPAGES, DISK_VALID, DISK_VOLHEADER_PAGE, fileio_get_volume_descriptor(), LK_INFINITE_WAIT, logtb_set_check_interrupt(), NO_ERROR, disk_volume_header::nsect_total, NULL, NULL_VOLDES, PGBUF_LATCH_READ, pgbuf_unfix, SECTOR_FROM_PAGEID, disk_volume_header::sys_lastpage, and xlogtb_reset_wait_msecs().
Referenced by disk_is_page_sector_reserved(), locator_defence_drop_class_name_entry(), locator_drop_class_name_entry(), and pgbuf_is_valid_page().
void disk_lock_extend | ( | void | ) |
Definition at line 2758 of file disk_manager.c.
References assert, disk_perm_info::extend_info, disk_temp_info::extend_info, disk_cache::mutex_extend, disk_cache::owner_extend, disk_extend_info::owner_reserve, disk_cache::perm_purpose_info, pthread_mutex_lock, disk_cache::temp_purpose_info, and thread_get_current_entry_index().
Referenced by boot_find_next_permanent_volid(), disk_add_volume_extension(), disk_reserve_from_cache(), disk_spacedb(), logpb_backup(), xboot_check_db_consistency(), xboot_find_last_permanent(), xboot_find_last_temp(), xboot_find_number_permanent_volumes(), and xboot_find_number_temp_volumes().
void disk_manager_final | ( | void | ) |
Definition at line 4980 of file disk_manager.c.
References disk_auto_volume_expansion_daemon_destroy(), and disk_cache_final().
Referenced by boot_server_all_finalize(), and disk_manager_init().
int disk_manager_init | ( | THREAD_ENTRY * | thread_p, |
bool | load_form_disk | ||
) |
Definition at line 4933 of file disk_manager.c.
References assert, ASSERT_ERROR, ASSERT_ERROR_AND_SET, disk_auto_volume_expansion_daemon_init(), disk_cache_final(), disk_cache_init(), disk_cache_load_all_volumes(), disk_log, disk_Logging, disk_manager_final(), DISK_SECTOR_NPAGES, disk_Temp_max_sects, NO_ERROR, NULL, prm_get_bool_value(), prm_get_integer_value(), PRM_ID_BOSR_MAXTMP_PAGES, PRM_ID_DISK_LOGGING, and SECTID_MAX.
Referenced by boot_remove_all_volumes(), boot_restart_server(), disk_format_first_volume(), and xboot_emergency_patch().
int disk_reserve_sectors | ( | THREAD_ENTRY * | thread_p, |
DB_VOLPURPOSE | purpose, | ||
VOLID | volid_hint, | ||
int | n_sectors, | ||
VSID * | reserved_sectors | ||
) |
Definition at line 4221 of file disk_manager.c.
References _er_log_debug(), ARG_FILE_LINE, assert, ASSERT_ERROR, assert_release, disk_reserve_context::cache_vol_reserve, CSECT_DISK_CHECK, csect_enter_as_reader, csect_exit, DB_PERMANENT_DATA_PURPOSE, DB_TEMPORARY_DATA_PURPOSE, disk_cache_free_reserved(), disk_check(), disk_compare_vsids(), DISK_INVALID, disk_log, disk_purpose_to_string(), disk_reserve_from_cache(), disk_reserve_sectors_in_volume(), disk_unreserve_ordered_sectors_without_csect(), ER_BO_CANNOT_CREATE_VOL, er_clear(), ER_FAILED, ER_FATAL_ERROR_SEVERITY, ER_GENERIC_ERROR, ER_INTERRUPTED, ER_IO_FORMAT_OUT_OF_SPACE, ER_IO_MOUNT_FAIL, ER_IO_WRITE, er_set(), error(), INF_WAIT, log_check_system_op_is_started(), log_sysop_abort(), log_sysop_attach_to_outer(), log_sysop_start(), logtb_set_check_interrupt(), disk_reserve_context::n_cache_reserve_remaining, disk_reserve_context::n_cache_vol_reserve, NO_ERROR, disk_cache_vol_reserve::nsect, disk_reserve_context::nsect_total, NULL, disk_volume_header::purpose, disk_reserve_context::purpose, disk_cache_vol_reserve::volid, and disk_reserve_context::vsidp.
Referenced by file_create(), file_perm_expand(), and file_temp_alloc().
void disk_rv_dump_hdr | ( | FILE * | fp, |
int | length_ignore, | ||
void * | data | ||
) |
Definition at line 1405 of file disk_manager.c.
References disk_vhdr_dump().
void disk_rv_dump_init_map | ( | FILE * | fp, |
int | length_ignore, | ||
void * | data | ||
) |
Definition at line 1453 of file disk_manager.c.
void disk_rv_dump_link | ( | FILE * | fp, |
int | length_ignore, | ||
void * | data | ||
) |
Definition at line 1528 of file disk_manager.c.
References disk_recv_link_perm_volume::next_vol_fullname, and disk_recv_link_perm_volume::next_volid.
void disk_rv_dump_set_boot_hfid | ( | FILE * | fp, |
int | length_ignore, | ||
void * | data | ||
) |
Definition at line 1567 of file disk_manager.c.
References vfid::fileid, hfid::hpgid, hfid::vfid, and vfid::volid.
void disk_rv_dump_set_creation_time | ( | FILE * | fp, |
int | length_ignore, | ||
void * | data | ||
) |
Definition at line 1489 of file disk_manager.c.
References disk_recv_change_creation::chkpt_lsa, disk_recv_change_creation::db_creation, log_lsa::offset, log_lsa::pageid, and disk_recv_change_creation::vol_fullname.
void disk_rv_dump_volume_expand | ( | FILE * | fp, |
int | length_ignore, | ||
void * | data | ||
) |
Definition at line 1600 of file disk_manager.c.
References disk_recv_data_volume_expand::npages, and disk_recv_data_volume_expand::volid.
int disk_rv_redo_dboutside_newvol | ( | THREAD_ENTRY * | thread_p, |
LOG_RCV * | rcv | ||
) |
Definition at line 1196 of file disk_manager.c.
References log_rcv::data, DB_TEMPORARY_DATA_PURPOSE, DISK_SECTS_NPAGES, disk_vhdr_get_vol_fullname(), fileio_find_volume_descriptor_with_label(), fileio_format(), IO_PAGESIZE, NO_ERROR, disk_volume_header::nsect_total, NULL, NULL_VOLDES, pgbuf_invalidate_all, disk_volume_header::purpose, and disk_volume_header::volid.
int disk_rv_redo_format | ( | THREAD_ENTRY * | thread_p, |
LOG_RCV * | rcv | ||
) |
Definition at line 1325 of file disk_manager.c.
References assert, assert_release, disk_cache_lock_reserve_for_purpose(), disk_cache_unlock_reserve_for_purpose(), disk_cache_update_vol_free(), disk_log, disk_stab_count_free(), disk_stab_iterate_units_all(), disk_verify_volume_header(), disk_perm_info::extend_info, if(), log_rv_copy_char(), NO_ERROR, disk_cache_volinfo::nsect_free, disk_volume_header::nsect_max, disk_extend_info::nsect_max, disk_volume_header::nsect_total, disk_extend_info::nsect_total, disk_cache::nvols_perm, log_rcv::offset, PAGE_VOLHEADER, disk_cache::perm_purpose_info, PGBUF_LATCH_READ, PGBUF_PAGE_LSA_AS_ARGS, pgbuf_set_page_ptype(), log_rcv::pgptr, disk_volume_header::purpose, disk_cache_volinfo::purpose, disk_volume_header::volid, and disk_cache::vols.
int disk_rv_redo_init_map | ( | THREAD_ENTRY * | thread_p, |
LOG_RCV * | rcv | ||
) |
Definition at line 1419 of file disk_manager.c.
References BIT64_FULL, bit64_set_trailing_bits(), log_rcv::data, DB_PAGESIZE, DISK_STAB_UNIT_BIT_COUNT, DONT_FREE, NO_ERROR, PAGE_VOLBITMAP, pgbuf_set_dirty(), pgbuf_set_page_ptype(), and log_rcv::pgptr.
int disk_rv_redo_volume_expand | ( | THREAD_ENTRY * | thread_p, |
LOG_RCV * | rcv | ||
) |
Definition at line 1582 of file disk_manager.c.
References assert, log_rcv::data, DB_PERMANENT_VOLTYPE, fileio_expand_to(), log_rcv::length, disk_recv_data_volume_expand::npages, and disk_recv_data_volume_expand::volid.
int disk_rv_reserve_sectors | ( | THREAD_ENTRY * | thread_p, |
LOG_RCV * | rcv | ||
) |
Definition at line 3834 of file disk_manager.c.
References assert, assert_release, bit64_count_ones(), BIT64_HEXA_PRINT_FORMAT, CSECT_DISK_CHECK, csect_enter_as_reader, csect_exit, log_rcv::data, disk_cache_lock_reserve_for_purpose(), disk_cache_unlock_reserve_for_purpose(), disk_cache_update_vol_free(), disk_get_volpurpose(), disk_log, DISK_STAB_PAGE_UNITS_COUNT, DONT_FREE, ER_FAILED, INF_WAIT, log_rcv::length, NO_ERROR, NULL, log_rcv::offset, OLD_PAGE, PAGE_VOLBITMAP, pgbuf_check_page_ptype(), pgbuf_fix, pgbuf_get_volume_id(), pgbuf_get_vpid(), PGBUF_LATCH_WRITE, PGBUF_PAGE_STATE_ARGS, PGBUF_PAGE_STATE_MSG, pgbuf_set_dirty(), PGBUF_UNCONDITIONAL_LATCH, pgbuf_unfix_and_init, log_rcv::pgptr, and disk_volume_header::purpose.
int disk_rv_undo_format | ( | THREAD_ENTRY * | thread_p, |
LOG_RCV * | rcv | ||
) |
Definition at line 1220 of file disk_manager.c.
References assert, assert_release, log_rcv::data, disk_cache_lock_reserve_for_purpose(), disk_cache_unlock_reserve_for_purpose(), disk_cache_update_vol_free(), disk_log, disk_unformat(), DISK_UNKNOWN_PURPOSE, DISK_VOLHEADER_PAGE, er_stack_pop(), er_stack_push(), disk_perm_info::extend_info, if(), log_append_dboutside_redo(), LOG_ISRESTARTED, logpb_recreate_volume_info(), max, NO_ERROR, disk_cache_volinfo::nsect_free, disk_volume_header::nsect_max, disk_extend_info::nsect_max, disk_volume_header::nsect_total, disk_extend_info::nsect_total, NULL, NULL_VOLID, disk_cache::nvols_perm, log_rcv::offset, vpid::pageid, disk_cache::perm_purpose_info, pgbuf_fix_if_not_deallocated, PGBUF_LATCH_READ, PGBUF_UNCONDITIONAL_LATCH, pgbuf_unfix, disk_cache_volinfo::purpose, RVLOG_OUTSIDE_LOGICAL_REDO_NOOP, disk_volume_header::volid, vpid::volid, disk_extend_info::volid_extend, and disk_cache::vols.
int disk_rv_undoredo_link | ( | THREAD_ENTRY * | thread_p, |
LOG_RCV * | rcv | ||
) |
Definition at line 1505 of file disk_manager.c.
References log_rcv::data, disk_vhdr_set_next_vol_fullname(), DONT_FREE, disk_recv_link_perm_volume::next_vol_fullname, disk_volume_header::next_volid, disk_recv_link_perm_volume::next_volid, NO_ERROR, pgbuf_set_dirty(), and log_rcv::pgptr.
int disk_rv_undoredo_set_boot_hfid | ( | THREAD_ENTRY * | thread_p, |
LOG_RCV * | rcv | ||
) |
Definition at line 1543 of file disk_manager.c.
References disk_volume_header::boot_hfid, log_rcv::data, DONT_FREE, vfid::fileid, hfid::hpgid, NO_ERROR, pgbuf_set_dirty(), log_rcv::pgptr, hfid::vfid, and vfid::volid.
int disk_rv_undoredo_set_creation_time | ( | THREAD_ENTRY * | thread_p, |
LOG_RCV * | rcv | ||
) |
Definition at line 1464 of file disk_manager.c.
References disk_volume_header::chkpt_lsa, disk_recv_change_creation::chkpt_lsa, log_rcv::data, disk_volume_header::db_creation, disk_recv_change_creation::db_creation, disk_vhdr_set_vol_fullname(), DONT_FREE, NO_ERROR, pgbuf_set_dirty(), log_rcv::pgptr, and disk_recv_change_creation::vol_fullname.
int disk_rv_unreserve_sectors | ( | THREAD_ENTRY * | thread_p, |
LOG_RCV * | rcv | ||
) |
Definition at line 3915 of file disk_manager.c.
References assert, assert_release, bit64_count_ones(), BIT64_HEXA_PRINT_FORMAT, CSECT_DISK_CHECK, csect_enter_as_reader, csect_exit, log_rcv::data, disk_cache_lock_reserve_for_purpose(), disk_cache_unlock_reserve_for_purpose(), disk_cache_update_vol_free(), disk_get_volpurpose(), disk_log, DISK_STAB_PAGE_UNITS_COUNT, DONT_FREE, ER_FAILED, INF_WAIT, log_rcv::length, NO_ERROR, NULL, log_rcv::offset, OLD_PAGE, PAGE_VOLBITMAP, pgbuf_check_page_ptype(), pgbuf_fix, pgbuf_get_volume_id(), pgbuf_get_vpid(), PGBUF_LATCH_WRITE, PGBUF_PAGE_STATE_ARGS, PGBUF_PAGE_STATE_MSG, pgbuf_set_dirty(), PGBUF_UNCONDITIONAL_LATCH, pgbuf_unfix_and_init, log_rcv::pgptr, and disk_volume_header::purpose.
int disk_rv_volhead_extend_redo | ( | THREAD_ENTRY * | thread_p, |
LOG_RCV * | rcv | ||
) |
Definition at line 2001 of file disk_manager.c.
References assert, assert_release, log_rcv::data, DB_PERMANENT_DATA_PURPOSE, DB_PERMANENT_VOLTYPE, disk_cache_lock_reserve_for_purpose(), disk_cache_unlock_reserve_for_purpose(), disk_cache_update_vol_free(), disk_log, disk_stab_count_free(), disk_stab_cursor_set_at_end(), disk_stab_cursor_set_at_sectid(), disk_stab_iterate_units(), disk_verify_volume_header(), DONT_FREE, disk_perm_info::extend_info, log_rcv::length, NO_ERROR, disk_volume_header::nsect_total, disk_extend_info::nsect_total, disk_cache::perm_purpose_info, PGBUF_LATCH_READ, PGBUF_PAGE_LSA_AS_ARGS, pgbuf_set_dirty(), log_rcv::pgptr, disk_volume_header::purpose, disk_volume_header::type, and disk_volume_header::volid.
int disk_rv_volhead_extend_undo | ( | THREAD_ENTRY * | thread_p, |
LOG_RCV * | rcv | ||
) |
Definition at line 2060 of file disk_manager.c.
References assert, log_rcv::data, DB_PERMANENT_DATA_PURPOSE, DB_PERMANENT_VOLTYPE, disk_cache_lock_reserve_for_purpose(), disk_cache_unlock_reserve_for_purpose(), disk_cache_update_vol_free(), disk_log, disk_verify_volume_header(), DONT_FREE, disk_perm_info::extend_info, log_rcv::length, NO_ERROR, disk_volume_header::nsect_total, disk_extend_info::nsect_total, disk_cache::perm_purpose_info, PGBUF_PAGE_LSA_AS_ARGS, pgbuf_set_dirty(), log_rcv::pgptr, disk_volume_header::purpose, disk_volume_header::type, and disk_volume_header::volid.
int disk_sectors_to_extend_npages | ( | const int | num_pages | ) |
Definition at line 6744 of file disk_manager.c.
References DISK_PAGES_TO_SECTS, and DISK_SECTS_ROUND_UP.
Referenced by createdb(), disk_add_volume_extension(), and disk_format_first_volume().
int disk_set_boot_hfid | ( | THREAD_ENTRY * | thread_p, |
INT16 | volid, | ||
const HFID * | hfid | ||
) |
Definition at line 1089 of file disk_manager.c.
References disk_volume_header::boot_hfid, disk_verify_volume_header(), DISK_VOLHEADER_PAGE, ER_FAILED, FREE, HFID_COPY, log_append_undoredo_data(), NO_ERROR, NULL, log_data_addr::offset, OLD_PAGE, vpid::pageid, pgbuf_fix, PGBUF_LATCH_WRITE, pgbuf_set_dirty(), PGBUF_UNCONDITIONAL_LATCH, log_data_addr::pgptr, RVDK_RESET_BOOT_HFID, log_data_addr::vfid, disk_volume_header::volid, and vpid::volid.
Referenced by boot_create_all_volumes().
int disk_set_checkpoint | ( | THREAD_ENTRY * | thread_p, |
INT16 | volid, | ||
const LOG_LSA * | log_chkpt_lsa | ||
) |
Definition at line 5421 of file disk_manager.c.
References ASSERT_ERROR, disk_volume_header::chkpt_lsa, disk_get_volheader, disk_verify_volume_header(), DONT_FREE, FREE, log_skip_logging(), NO_ERROR, NULL, log_lsa::offset, log_data_addr::offset, log_lsa::pageid, pgbuf_flush(), PGBUF_LATCH_WRITE, pgbuf_set_dirty(), log_data_addr::pgptr, and log_data_addr::vfid.
Referenced by logpb_backup_for_volume(), and logpb_checkpoint().
int disk_set_creation | ( | THREAD_ENTRY * | thread_p, |
INT16 | volid, | ||
const char * | new_vol_fullname, | ||
const INT64 * | new_dbcreation, | ||
const LOG_LSA * | new_chkptlsa, | ||
bool | logchange, | ||
DISK_FLUSH_TYPE | flush_page | ||
) |
Definition at line 850 of file disk_manager.c.
References ARG_FILE_LINE, assert, ASSERT_ERROR, disk_volume_header::chkpt_lsa, disk_recv_change_creation::chkpt_lsa, disk_volume_header::db_creation, disk_recv_change_creation::db_creation, DB_MAX_PATH_LENGTH, DISK_FLUSH, DISK_FLUSH_AND_INVALIDATE, disk_get_volheader, disk_verify_volume_header(), disk_vhdr_get_vol_fullname(), disk_vhdr_set_vol_fullname(), DONT_FREE, ER_BO_FULL_DATABASE_NAME_IS_TOO_LONG, ER_ERROR_SEVERITY, ER_FAILED, ER_FATAL_ERROR_SEVERITY, ER_OUT_OF_VIRTUAL_MEMORY, er_set(), error(), FREE, free_and_init, log_append_undoredo_data(), LOG_DATA_ADDR_INITIALIZER, log_skip_logging(), NO_ERROR, NULL, pgbuf_flush(), pgbuf_invalidate, PGBUF_LATCH_WRITE, pgbuf_set_dirty(), pgbuf_unfix_and_init, log_data_addr::pgptr, RVDK_CHANGE_CREATION, strlen, and disk_recv_change_creation::vol_fullname.
Referenced by fileio_restore_volume(), log_recreate(), logpb_copy_volume(), and logpb_rename_all_volumes_files().
int disk_set_link | ( | THREAD_ENTRY * | thread_p, |
INT16 | volid, | ||
INT16 | next_volid, | ||
const char * | next_volext_fullname, | ||
bool | logchange, | ||
DISK_FLUSH_TYPE | flush | ||
) |
Definition at line 969 of file disk_manager.c.
References ARG_FILE_LINE, assert, ASSERT_ERROR, DISK_FLUSH_AND_INVALIDATE, disk_get_volheader, disk_verify_volume_header(), disk_vhdr_get_next_vol_fullname(), disk_vhdr_set_next_vol_fullname(), DISK_VOLHEADER_PAGE, DONT_FREE, ER_ERROR_SEVERITY, ER_FAILED, ER_OUT_OF_VIRTUAL_MEMORY, er_set(), error(), FREE, free_and_init, log_append_undo_data2(), log_append_undoredo_data(), LOG_DATA_ADDR_INITIALIZER, log_skip_logging(), logpb_force_flush_pages(), disk_recv_link_perm_volume::next_vol_fullname, disk_volume_header::next_volid, disk_recv_link_perm_volume::next_volid, NO_ERROR, NULL, NULL_VOLID, log_data_addr::offset, vpid::pageid, pgbuf_flush(), pgbuf_invalidate, PGBUF_LATCH_WRITE, pgbuf_set_dirty(), pgbuf_unfix_and_init, log_data_addr::pgptr, RVDK_LINK_PERM_VOLEXT, RVPGBUF_FLUSH_PAGE, strlen, log_data_addr::vfid, disk_volume_header::volid, and vpid::volid.
Referenced by disk_format(), fileio_restore_volume(), logpb_copy_database(), and logpb_rename_all_volumes_files().
int disk_spacedb | ( | THREAD_ENTRY * | thread_p, |
SPACEDB_ALL * | spaceall, | ||
SPACEDB_ONEVOL ** | spacevols | ||
) |
Definition at line 5927 of file disk_manager.c.
References ARG_FILE_LINE, assert, ASSERT_ERROR, DB_MAX_PATH_LENGTH, DB_PERMANENT_VOLTYPE, DB_TEMPORARY_DATA_PURPOSE, DB_TEMPORARY_VOLTYPE, disk_get_volheader, disk_lock_extend(), DISK_SECTS_NPAGES, disk_unlock_extend(), disk_vhdr_get_vol_fullname(), ER_ERROR_SEVERITY, ER_OUT_OF_VIRTUAL_MEMORY, er_set(), disk_perm_info::extend_info, disk_temp_info::extend_info, free_and_init, i, LOG_MAX_DBVOLID, NO_ERROR, spacedb_all::npage_free, spacedb_all::npage_used, disk_cache_volinfo::nsect_free, disk_extend_info::nsect_free, disk_temp_info::nsect_perm_free, disk_temp_info::nsect_perm_total, disk_volume_header::nsect_total, disk_extend_info::nsect_total, NULL, spacedb_all::nvols, disk_cache::nvols_perm, disk_cache::nvols_temp, disk_cache::perm_purpose_info, PGBUF_LATCH_READ, pgbuf_unfix_and_init, disk_cache_volinfo::purpose, SPACEDB_PERM_PERM_ALL, SPACEDB_PERM_TEMP_ALL, SPACEDB_TEMP_TEMP_ALL, SPACEDB_TOTAL_ALL, disk_cache::temp_purpose_info, and disk_cache::vols.
Referenced by netcl_spacedb(), and netsr_spacedb().
int disk_unformat | ( | THREAD_ENTRY * | thread_p, |
const char * | vol_fullname | ||
) |
Definition at line 820 of file disk_manager.c.
References fileio_find_volume_id_with_label(), fileio_unformat(), NO_ERROR, NULL_VOLID, pgbuf_flush_all(), pgbuf_invalidate_all, and disk_volume_header::volid.
Referenced by disk_add_volume(), disk_format(), and disk_rv_undo_format().
void disk_unlock_extend | ( | void | ) |
Definition at line 2784 of file disk_manager.c.
References assert, disk_cache::mutex_extend, disk_cache::owner_extend, pthread_mutex_unlock, STATIC_INLINE, and thread_get_current_entry_index().
Referenced by boot_find_next_permanent_volid(), disk_add_volume_extension(), disk_reserve_from_cache(), disk_spacedb(), logpb_backup(), xboot_check_db_consistency(), xboot_find_last_permanent(), xboot_find_last_temp(), xboot_find_number_permanent_volumes(), and xboot_find_number_temp_volumes().
int disk_unreserve_ordered_sectors | ( | THREAD_ENTRY * | thread_p, |
DB_VOLPURPOSE | purpose, | ||
int | nsects, | ||
VSID * | vsids | ||
) |
Definition at line 4634 of file disk_manager.c.
References ASSERT_ERROR, CSECT_DISK_CHECK, csect_enter_as_reader, csect_exit, disk_unreserve_ordered_sectors_without_csect(), INF_WAIT, and NO_ERROR.
Referenced by file_create(), and file_destroy().
void disk_volheader_check_magic | ( | THREAD_ENTRY * | thread_p, |
const PAGE_PTR | page_volheader | ||
) |
Definition at line 6726 of file disk_manager.c.
References assert, CUBRID_MAGIC_DATABASE_VOLUME, CUBRID_MAGIC_MAX_LENGTH, disk_volume_header::magic, PAGE_VOLHEADER, and pgbuf_check_page_ptype().
Referenced by pgbuf_set_dirty().
int disk_volume_header_end_scan | ( | THREAD_ENTRY * | thread_p, |
void ** | ctx | ||
) |
Definition at line 3080 of file disk_manager.c.
References db_private_free_and_init, and NO_ERROR.
Referenced by showstmt_scan_init().
SCAN_CODE disk_volume_header_next_scan | ( | THREAD_ENTRY * | thread_p, |
int | cursor, | ||
DB_VALUE ** | out_values, | ||
int | out_cnt, | ||
void * | ctx | ||
) |
Definition at line 2948 of file disk_manager.c.
References assert, ASSERT_ERROR, disk_volume_header::boot_hfid, disk_volume_header::chkpt_lsa, disk_volume_header::db_charset, disk_volume_header::db_creation, db_localdatetime(), db_make_datetime(), db_make_int(), db_make_string(), db_make_string_copy(), disk_get_volheader, disk_purpose_to_string(), disk_type_to_string(), error(), hfid_to_string(), disk_volume_header::hint_allocsect, disk_volume_header::iopagesize, lsa_to_string(), disk_volume_header::magic, disk_volume_header::next_volid, NO_ERROR, disk_cache_volinfo::nsect_free, disk_volume_header::nsect_max, disk_volume_header::nsect_total, NULL, disk_volume_header::offset_to_next_vol_fullname, disk_volume_header::offset_to_vol_fullname, disk_volume_header::offset_to_vol_remarks, PGBUF_LATCH_READ, pgbuf_unfix, disk_volume_header::purpose, S_END, S_ERROR, S_SUCCESS, disk_volume_header::sect_npgs, disk_volume_header::stab_first_page, disk_volume_header::stab_npages, disk_volume_header::sys_lastpage, disk_volume_header::type, disk_volume_header::var_fields, disk_cache::vols, and disk_vol_header_context::volume_id.
Referenced by showstmt_scan_init().
int disk_volume_header_start_scan | ( | THREAD_ENTRY * | thread_p, |
int | type, | ||
DB_VALUE ** | arg_values, | ||
int | arg_cnt, | ||
void ** | ctx | ||
) |
Definition at line 2896 of file disk_manager.c.
References ARG_FILE_LINE, assert, ASSERT_ERROR_AND_SET, db_get_int(), DB_INT16_MAX, db_private_alloc, db_private_free, DB_TYPE_INTEGER, DB_VALUE_TYPE, ER_DIAG_VOLID_NOT_EXIST, ER_ERROR_SEVERITY, er_set(), error(), NO_ERROR, NULL, disk_vol_header_context::volume_id, and xdisk_is_volume_exist().
Referenced by showstmt_scan_init().
INT16 xdisk_get_purpose_and_sys_lastpage | ( | THREAD_ENTRY * | thread_p, |
INT16 | volid, | ||
DISK_VOLPURPOSE * | vol_purpose, | ||
INT32 * | sys_lastpage | ||
) |
Definition at line 5600 of file disk_manager.c.
References ASSERT_ERROR, disk_get_volheader, disk_verify_volume_header(), NO_ERROR, NULL, NULL_VOLID, PGBUF_LATCH_READ, pgbuf_unfix_and_init, disk_volume_header::purpose, disk_volume_header::sys_lastpage, and disk_volume_header::volid.
Referenced by logpb_backup_for_volume().