#include "univ.i"
#include <dirent.h>
#include <sys/stat.h>
#include <time.h>
Go to the source code of this file.
Classes | |
struct | os_file_stat_struct |
Macros | |
#define | os0file_h |
#define | OS_FILE_FROM_FD(fd) fd |
#define | OS_FILE_LOG_BLOCK_SIZE srv_log_block_size |
#define | OS_AIO_N_PENDING_IOS_PER_THREAD 32 |
#define | OS_WIN31 1 |
#define | OS_WIN95 2 |
#define | OS_WINNT 3 |
#define | OS_WIN2000 4 |
#define | OS_WINXP 5 |
#define | OS_WINVISTA 6 |
#define | OS_WIN7 7 |
#define | os_file_create(key, name, create, purpose, type, success) os_file_create_func(name, create, purpose, type, success) |
#define | os_file_create_simple(key, name, create, access, success) os_file_create_simple_func(name, create_mode, access, success) |
#define | os_file_create_simple_no_error_handling(key, name, create_mode, access, success) |
#define | os_file_close(file) os_file_close_func(file) |
#define | os_aio(type, mode, name, file, buf, offset, offset_high, n, message1, message2) |
#define | os_file_read(file, buf, offset, offset_high, n) os_file_read_func(file, buf, offset, offset_high, n) |
#define | os_file_read_no_error_handling(file, buf, offset,offset_high, n) os_file_read_no_error_handling_func(file, buf, offset, offset_high, n) |
#define | os_file_write(name, file, buf, offset, offset_high, n) os_file_write_func(name, file, buf, offset, offset_high, n) |
#define | os_file_flush(file) os_file_flush_func(file) |
#define | os_file_rename(key, oldpath, newpath) os_file_rename_func(oldpath, newpath) |
#define | OS_FILE_MAX_PATH 4000 |
#define | OS_FILE_OPEN 51 |
#define | OS_FILE_CREATE 52 |
#define | OS_FILE_OVERWRITE 53 |
#define | OS_FILE_OPEN_RAW 54 |
#define | OS_FILE_CREATE_PATH 55 |
#define | OS_FILE_OPEN_RETRY |
#define | OS_FILE_READ_ONLY 333 |
#define | OS_FILE_READ_WRITE 444 |
#define | OS_FILE_READ_ALLOW_DELETE 555 /* for ibbackup */ |
#define | OS_FILE_AIO 61 |
#define | OS_FILE_NORMAL 62 |
#define | OS_DATA_FILE 100 |
#define | OS_LOG_FILE 101 |
#define | OS_FILE_NOT_FOUND 71 |
#define | OS_FILE_DISK_FULL 72 |
#define | OS_FILE_ALREADY_EXISTS 73 |
#define | OS_FILE_PATH_ERROR 74 |
#define | OS_FILE_AIO_RESOURCES_RESERVED |
#define | OS_FILE_SHARING_VIOLATION 76 |
#define | OS_FILE_ERROR_NOT_SPECIFIED 77 |
#define | OS_FILE_INSUFFICIENT_RESOURCE 78 |
#define | OS_FILE_AIO_INTERRUPTED 79 |
#define | OS_FILE_OPERATION_ABORTED 80 |
#define | OS_FILE_READ 10 |
#define | OS_FILE_WRITE 11 |
#define | OS_FILE_LOG 256 /* This can be ORed to type */ |
#define | OS_AIO_NORMAL 21 |
#define | OS_AIO_IBUF 22 |
#define | OS_AIO_LOG 23 |
#define | OS_AIO_SYNC 24 |
#define | OS_AIO_SIMULATED_WAKE_LATER 512 |
Typedefs | |
typedef struct fil_node_struct | fil_node_t |
typedef int | os_file_t |
typedef enum os_file_type_enum | os_file_type_t |
typedef struct os_file_stat_struct | os_file_stat_t |
typedef DIR * | os_file_dir_t |
Enumerations | |
enum | os_file_type_enum { OS_FILE_TYPE_UNKNOWN = 0, OS_FILE_TYPE_FILE, OS_FILE_TYPE_DIR, OS_FILE_TYPE_LINK } |
Functions | |
UNIV_INTERN ulint | os_get_os_version (void) |
UNIV_INTERN void | os_io_init_simple (void) |
FILE * | os_file_create_tmpfile (void) |
UNIV_INTERN os_file_dir_t | os_file_opendir (const char *dirname, ibool error_is_fatal) |
UNIV_INTERN int | os_file_closedir (os_file_dir_t dir) |
UNIV_INTERN int | os_file_readdir_next_file (const char *dirname, os_file_dir_t dir, os_file_stat_t *info) |
UNIV_INTERN ibool | os_file_create_directory (const char *pathname, ibool fail_if_exists) |
UNIV_INTERN os_file_t | os_file_create_simple_func (const char *name, ulint create_mode, ulint access_type, ibool *success) |
UNIV_INTERN os_file_t | os_file_create_simple_no_error_handling_func (const char *name, ulint create_mode, ulint access_type, ibool *success) |
UNIV_INTERN void | os_file_set_nocache (int fd, const char *file_name, const char *operation_name) |
UNIV_INTERN os_file_t | os_file_create_func (const char *name, ulint create_mode, ulint purpose, ulint type, ibool *success) |
UNIV_INTERN ibool | os_file_delete (const char *name) |
UNIV_INTERN ibool | os_file_delete_if_exists (const char *name) |
UNIV_INTERN ibool | os_file_rename_func (const char *oldpath, const char *newpath) |
UNIV_INTERN ibool | os_file_close_func (os_file_t file) |
UNIV_INTERN ibool | os_file_get_size (os_file_t file, ulint *size, ulint *size_high) |
UNIV_INTERN ib_int64_t | os_file_get_size_as_iblonglong (os_file_t file) |
UNIV_INTERN ibool | os_file_set_size (const char *name, os_file_t file, ulint size, ulint size_high) |
UNIV_INTERN ibool | os_file_set_eof (FILE *file) |
UNIV_INTERN ibool | os_file_flush_func (os_file_t file) |
UNIV_INTERN ulint | os_file_get_last_error (ibool report_all_errors) |
UNIV_INTERN ibool | os_file_read_func (os_file_t file, void *buf, ulint offset, ulint offset_high, ulint n) |
UNIV_INTERN void | os_file_read_string (FILE *file, char *str, ulint size) |
UNIV_INTERN ibool | os_file_read_no_error_handling_func (os_file_t file, void *buf, ulint offset, ulint offset_high, ulint n) |
UNIV_INTERN ibool | os_file_write_func (const char *name, os_file_t file, const void *buf, ulint offset, ulint offset_high, ulint n) |
UNIV_INTERN ibool | os_file_status (const char *path, ibool *exists, os_file_type_t *type) |
UNIV_INTERN char * | os_file_dirname (const char *path) |
UNIV_INTERN ibool | os_file_create_subdirs_if_needed (const char *path) |
UNIV_INTERN ibool | os_aio_init (ulint n_per_seg, ulint n_read_segs, ulint n_write_segs, ulint n_slots_sync) |
UNIV_INTERN void | os_aio_free (void) |
UNIV_INTERN ibool | os_aio_func (ulint type, ulint mode, const char *name, os_file_t file, void *buf, ulint offset, ulint offset_high, ulint n, fil_node_t *message1, void *message2) |
UNIV_INTERN void | os_aio_wake_all_threads_at_shutdown (void) |
UNIV_INTERN void | os_aio_wait_until_no_pending_writes (void) |
UNIV_INTERN void | os_aio_simulated_wake_handler_threads (void) |
UNIV_INTERN void | os_aio_simulated_put_read_threads_to_sleep (void) |
UNIV_INTERN ibool | os_aio_simulated_handle (ulint segment, fil_node_t **message1, void **message2, ulint *type) |
UNIV_INTERN ibool | os_aio_validate (void) |
UNIV_INTERN void | os_aio_print (FILE *file) |
UNIV_INTERN void | os_aio_refresh_stats (void) |
UNIV_INTERN ibool | os_file_get_status (const char *path, os_file_stat_t *stat_info) |
UNIV_INTERN int | innobase_mysql_tmpfile (void) |
Variables | |
ibool | os_has_said_disk_full |
ibool | os_aio_print_debug |
ulint | os_file_n_pending_preads |
ulint | os_file_n_pending_pwrites |
ulint | os_n_pending_reads |
ulint | os_n_pending_writes |
ulint | os_innodb_umask |
ulint | os_n_file_reads |
ulint | os_n_file_writes |
ulint | os_n_fsyncs |
uint32_t | srv_log_block_size |
The interface to the operating system file io
Created 10/21/1995 Heikki Tuuri
Definition in file os0file.h.
#define os_aio | ( | type, | |
mode, | |||
name, | |||
file, | |||
buf, | |||
offset, | |||
offset_high, | |||
n, | |||
message1, | |||
message2 | |||
) |
#define OS_AIO_IBUF 22 |
Asynchronous i/o for ibuf pages or ibuf bitmap pages
Definition at line 158 of file os0file.h.
Referenced by fil_io(), and os_aio_func().
#define OS_AIO_LOG 23 |
Asynchronous i/o for the log
Definition at line 161 of file os0file.h.
Referenced by fil_io(), and os_aio_func().
#define OS_AIO_N_PENDING_IOS_PER_THREAD 32 |
#define OS_AIO_NORMAL 21 |
Modes for aio operations Normal asynchronous i/o not for ibuf pages or ibuf bitmap pages
Definition at line 155 of file os0file.h.
Referenced by fil_io(), and os_aio_func().
#define OS_AIO_SIMULATED_WAKE_LATER 512 |
This can be ORed to mode in the call of os_aio(...), if the caller wants to post several i/o requests in a batch, and only after that wake the i/o-handler thread; this has effect only in simulated aio
Definition at line 180 of file os0file.h.
Referenced by buf_LRU_file_restore(), buf_read_ahead_linear(), buf_read_page_low(), buf_read_recv_pages(), fil_io(), and os_aio_func().
#define OS_AIO_SYNC 24 |
Asynchronous i/o where the calling thread will itself wait for the i/o to complete, doing also the job of the i/o-handler thread; can be used for any pages, ibuf or non-ibuf. This is used to save CPU time, as we can do with fewer thread switches. Plain synchronous i/o is not as good, because it must serialize the file seek and read or write, causing a bottleneck for parallelism.
Definition at line 162 of file os0file.h.
Referenced by fil_extend_space_to_desired_size(), fil_io(), and os_aio_func().
#define OS_DATA_FILE 100 |
Types for file create
Definition at line 125 of file os0file.h.
Referenced by buf_LRU_file_dump(), fil_create_new_single_table_tablespace(), and os_file_create_func().
#define OS_FILE_AIO_RESOURCES_RESERVED |
#define os_file_create_simple_no_error_handling | ( | key, | |
name, | |||
create_mode, | |||
access, | |||
success | |||
) |
#define OS_FILE_FROM_FD | ( | fd) | fd |
#define OS_FILE_LOG_BLOCK_SIZE srv_log_block_size |
The next value should be smaller or equal to the smallest sector size used
on any disk. A log block is required to be a portion of disk which is written so that if the start and the end of a block get written to disk, then the whole block gets written. This should be true even in most cases of a crash: if this fails for a log block, then it is equivalent to a media failure in the log.
Definition at line 104 of file os0file.h.
Referenced by fil_io(), log_close(), log_group_init(), log_group_read_checkpoint_info(), log_group_write_buf(), log_init(), log_write_low(), log_write_up_to(), os_aio_func(), recv_recovery_from_checkpoint_start_func(), recv_reset_logs(), recv_scan_log_recs(), and recv_sys_init().
#define OS_FILE_NOT_FOUND 71 |
Error codes from os_file_get_last_error
Definition at line 130 of file os0file.h.
Referenced by os_file_get_last_error().
#define OS_FILE_OPEN 51 |
Options for file_create
Definition at line 107 of file os0file.h.
Referenced by buf_LRU_file_restore(), fil_open_single_table_tablespace(), fil_reset_too_high_lsns(), os_file_create_func(), os_file_create_simple_func(), and os_file_create_simple_no_error_handling_func().
#define OS_FILE_OPEN_RETRY |
#define OS_FILE_READ 10 |
Types for aio operations
Definition at line 144 of file os0file.h.
Referenced by buf_read_page_low(), fil_io(), fil_is_exist(), fil_space_get_flags(), fil_space_get_size(), log_group_read_checkpoint_info(), log_group_read_log_seg(), os_aio_func(), os_aio_simulated_handle(), recv_recovery_from_checkpoint_start_func(), and trx_sys_doublewrite_init_or_restore_pages().
#define OS_WIN2000 4 |
Microsoft Windows 2000
Definition at line 196 of file os0file.h.
Referenced by innobase_start_or_create_for_mysql(), and os_get_os_version().
#define OS_WIN31 1 |
Microsoft Windows 3.x
Definition at line 193 of file os0file.h.
Referenced by innobase_start_or_create_for_mysql(), and os_get_os_version().
#define OS_WIN7 7 |
Microsoft Windows 7 or Windows Server 2008 R2
Definition at line 203 of file os0file.h.
Referenced by os_get_os_version().
#define OS_WIN95 2 |
Microsoft Windows 95
Definition at line 194 of file os0file.h.
Referenced by innobase_start_or_create_for_mysql(), and os_get_os_version().
#define OS_WINNT 3 |
Microsoft Windows NT 3.x
Definition at line 195 of file os0file.h.
Referenced by innobase_start_or_create_for_mysql(), and os_get_os_version().
#define OS_WINVISTA 6 |
Microsoft Windows Vista or Windows Server 2008
Definition at line 200 of file os0file.h.
Referenced by os_get_os_version().
#define OS_WINXP 5 |
Microsoft Windows XP or Windows Server 2003
Definition at line 197 of file os0file.h.
Referenced by innobase_start_or_create_for_mysql(), and os_get_os_version().
typedef struct fil_node_struct fil_node_t |
typedef DIR* os_file_dir_t |
UNIV_INTERN int innobase_mysql_tmpfile | ( | void | ) |
Creates a temporary file that will be deleted on close. This function is defined in ha_innodb.cc.
Creates a temporary file.
Definition at line 1447 of file ha_innodb.cc.
Referenced by os_file_create_tmpfile(), and row_merge_build_indexes().
UNIV_INTERN ibool os_aio_func | ( | ulint | type, |
ulint | mode, | ||
const char * | name, | ||
os_file_t | file, | ||
void * | buf, | ||
ulint | offset, | ||
ulint | offset_high, | ||
ulint | n, | ||
fil_node_t * | message1, | ||
void * | message2 | ||
) |
NOTE! Use the corresponding macro os_aio(), not directly this function! Requests an asynchronous i/o operation.
NOTE! Use the corresponding macro os_aio(), not directly this function! Requests an asynchronous i/o operation.
type | in: OS_FILE_READ or OS_FILE_WRITE |
mode | in: OS_AIO_NORMAL, ..., possibly ORed to OS_AIO_SIMULATED_WAKE_LATER: the last flag advises this function not to wake i/o-handler threads, but the caller will do the waking explicitly later, in this way the caller can post several requests in a batch; NOTE that the batch must not be so big that it exhausts the slots in aio arrays! 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! |
name | in: name of the file or path as a null-terminated string |
file | in: handle to a file |
buf | in: buffer where to read or from which to write |
offset | in: least significant 32 bits of file offset where to read or write |
offset_high | in: most significant 32 bits of offset |
n | in: number of bytes to read or write |
message1 | in: message for the aio handler (can be used to identify a completed aio operation); ignored if mode is OS_AIO_SYNC |
message2 | in: message for the aio handler (can be used to identify a completed aio operation); ignored if mode is OS_AIO_SYNC |
Definition at line 3980 of file os0file.cc.
References os_aio_func(), OS_AIO_IBUF, OS_AIO_LOG, OS_AIO_NORMAL, OS_AIO_SIMULATED_WAKE_LATER, OS_AIO_SYNC, os_aio_validate(), OS_FILE_LOG_BLOCK_SIZE, OS_FILE_READ, os_aio_slot_struct::pos, ut_a, ut_ad, and ut_error.
Referenced by os_aio_func().
UNIV_INTERN void os_aio_print | ( | FILE * | file) |
Prints info of the aio arrays. in: file where to print
Prints info of the aio arrays.
file | in: file where to print |
Definition at line 5031 of file os0file.cc.
References os_aio_slot_struct::len, os_aio_slot_struct::message1, os_aio_slot_struct::message2, os_aio_array_struct::mutex, os_aio_array_struct::n_reserved, os_aio_array_struct::n_segments, os_aio_array_struct::n_slots, os_aio_print(), os_file_n_pending_preads, os_file_n_pending_pwrites, os_mutex_enter(), os_mutex_exit(), os_aio_slot_struct::reserved, and ut_a.
Referenced by os_aio_print(), and srv_printf_innodb_monitor().
UNIV_INTERN void os_aio_refresh_stats | ( | void | ) |
Refreshes the statistics used to print per-second averages.
Definition at line 5177 of file os0file.cc.
References os_aio_refresh_stats().
Referenced by os_aio_refresh_stats().
UNIV_INTERN ibool os_aio_simulated_handle | ( | ulint | global_segment, |
fil_node_t ** | message1, | ||
void ** | message2, | ||
ulint * | type | ||
) |
Does simulated aio. This function should be called by an i/o-handler thread.
Does simulated aio. This function should be called by an i/o-handler thread.
global_segment | in: the number of the segment in the aio arrays to wait for; segment 0 is the ibuf i/o thread, segment 1 the log i/o thread, then follow the non-ibuf read threads, and as the last are the non-ibuf write threads |
message1 | out: the messages passed with the aio request; note that also in the case where the aio operation failed, these output parameters are valid and can be used to restart the operation, for example |
type | out: OS_FILE_WRITE or ..._READ |
Definition at line 4616 of file os0file.cc.
References os_aio_slot_struct::buf, os_aio_slot_struct::file, os_aio_slot_struct::io_already_done, os_aio_slot_struct::len, os_aio_slot_struct::message1, os_aio_slot_struct::message2, os_aio_array_struct::mutex, os_aio_array_struct::n_segments, os_aio_array_struct::n_slots, os_aio_slot_struct::name, os_aio_slot_struct::offset, os_aio_slot_struct::offset_high, os_aio_print_debug, os_aio_simulated_handle(), os_aio_validate(), os_event_reset(), OS_FILE_READ, os_mutex_enter(), os_mutex_exit(), os_aio_slot_struct::reservation_time, os_aio_slot_struct::reserved, srv_set_io_thread_op_info(), os_aio_slot_struct::type, ut_a, ut_ad, ut_align(), ut_free(), ut_malloc(), and ut_memcpy().
Referenced by fil_aio_wait(), and os_aio_simulated_handle().
UNIV_INTERN void os_aio_simulated_put_read_threads_to_sleep | ( | void | ) |
This function can be called if one wants to post a batch of reads and prefers an i/o-handler thread to handle them all at once later. You must call os_aio_simulated_wake_handler_threads later to ensure the threads are not left sleeping!
Definition at line 3895 of file os0file.cc.
References os_aio_simulated_put_read_threads_to_sleep(), and os_event_reset().
Referenced by buf_read_ahead_linear(), and os_aio_simulated_put_read_threads_to_sleep().
UNIV_INTERN void os_aio_simulated_wake_handler_threads | ( | void | ) |
Wakes up simulated aio i/o-handler threads if they have something to do.
Definition at line 3870 of file os0file.cc.
References os_aio_simulated_wake_handler_threads().
Referenced by buf_LRU_file_restore(), buf_LRU_get_free_block(), buf_read_ahead_linear(), buf_read_ibuf_merge_pages(), buf_read_recv_pages(), and os_aio_simulated_wake_handler_threads().
UNIV_INTERN ibool os_aio_validate | ( | void | ) |
Validates the consistency of the aio system.
Validates the consistency the aio system.
Definition at line 4981 of file os0file.cc.
References os_aio_validate().
Referenced by os_aio_func(), os_aio_simulated_handle(), and os_aio_validate().
UNIV_INTERN void os_aio_wait_until_no_pending_writes | ( | void | ) |
Waits until there are no pending writes in os_aio_write_array. There can be other, synchronous, pending writes.
Definition at line 3537 of file os0file.cc.
References os_aio_array_struct::is_empty, and os_aio_wait_until_no_pending_writes().
Referenced by os_aio_wait_until_no_pending_writes().
UNIV_INTERN void os_aio_wake_all_threads_at_shutdown | ( | void | ) |
Wakes up all async i/o threads so that they know to exit themselves in shutdown.
Definition at line 3499 of file os0file.cc.
References os_aio_wake_all_threads_at_shutdown(), and os_event_set().
Referenced by innobase_shutdown_for_mysql(), and os_aio_wake_all_threads_at_shutdown().
UNIV_INTERN ibool os_file_close_func | ( | os_file_t | file) |
NOTE! Use the corresponding macro os_file_close(), not directly this function! Closes a file handle. In case of error, error number can be retrieved with os_file_get_last_error.
NOTE! Use the corresponding macro os_file_close(), not directly this function! Closes a file handle. In case of error, error number can be retrieved with os_file_get_last_error.
file | in, own: handle to a file |
Definition at line 1782 of file os0file.cc.
References os_file_close_func(), and ut_a.
Referenced by os_file_close_func().
UNIV_INTERN int os_file_closedir | ( | os_file_dir_t | dir) |
Closes a directory stream.
Closes a directory stream.
dir | in: directory stream |
Definition at line 792 of file os0file.cc.
References os_file_closedir().
Referenced by fil_load_single_table_tablespaces(), and os_file_closedir().
UNIV_INTERN ibool os_file_create_directory | ( | const char * | pathname, |
ibool | fail_if_exists | ||
) |
This function attempts to create a directory named pathname. The new directory gets default permissions. On Unix, the permissions are (0770 & ~umask). If the directory exists already, nothing is done and the call succeeds, unless the fail_if_exists arguments is true.
This function attempts to create a directory named pathname. The new directory gets default permissions. On Unix the permissions are (0770 & ~umask). If the directory exists already, nothing is done and the call succeeds, unless the fail_if_exists arguments is true.
pathname | in: directory name as null-terminated string |
fail_if_exists | in: if TRUE, pre-existing directory is treated as an error. |
Definition at line 1004 of file os0file.cc.
References os_file_create_directory().
Referenced by os_file_create_directory(), and os_file_create_subdirs_if_needed().
UNIV_INTERN os_file_t os_file_create_func | ( | const char * | name, |
ulint | create_mode, | ||
ulint | purpose, | ||
ulint | type, | ||
ibool * | success | ||
) |
NOTE! Use the corresponding macro os_file_create(), not directly this function! Opens an existing file or creates a new.
NOTE! Use the corresponding macro os_file_create(), not directly this function! Opens an existing file or creates a new.
name | in: name of the file or path as a null-terminated string |
create_mode | in: OS_FILE_OPEN if an existing file is opened (if does not exist, error), or OS_FILE_CREATE if a new file is created (if exists, error), OS_FILE_OVERWRITE if a new file is created or an old overwritten; OS_FILE_OPEN_RAW, if a raw device or disk partition should be opened |
purpose | in: OS_FILE_AIO, if asynchronous, non-buffered i/o is desired, OS_FILE_NORMAL, if any normal file; NOTE that it also depends on type, os_aio_.. and srv_.. variables whether we really use async i/o or unbuffered i/o: look in the function source code for the exact rules |
type | in: OS_DATA_FILE or OS_LOG_FILE |
success | out: TRUE if succeed, FALSE if error |
Definition at line 1353 of file os0file.cc.
References OS_DATA_FILE, os_file_create_func(), OS_FILE_OPEN, os_file_set_nocache(), os_innodb_umask, os_thread_sleep(), srv_file_per_table, SRV_UNIX_ALL_O_DIRECT, SRV_UNIX_O_DIRECT, SRV_UNIX_O_DSYNC, SRV_WIN_IO_UNBUFFERED, ut_a, ut_error, and ut_print_timestamp().
Referenced by os_file_create_func().
UNIV_INTERN os_file_t os_file_create_simple_func | ( | const char * | name, |
ulint | create_mode, | ||
ulint | access_type, | ||
ibool * | success | ||
) |
NOTE! Use the corresponding macro os_file_create_simple(), not directly this function! A simple function to open or create a file.
NOTE! Use the corresponding macro os_file_create_simple(), not directly this function! A simple function to open or create a file.
name | in: name of the file or path as a null-terminated string |
create_mode | in: OS_FILE_OPEN if an existing file is opened (if does not exist, error), or OS_FILE_CREATE if a new file is created (if exists, error), or OS_FILE_CREATE_PATH if new file (if exists, error) and subdirectories along its path are created (if needed) |
access_type | in: OS_FILE_READ_ONLY or OS_FILE_READ_WRITE |
success | out: TRUE if succeed, FALSE if error |
Definition at line 1049 of file os0file.cc.
References os_file_create_simple_func(), os_file_create_subdirs_if_needed(), OS_FILE_OPEN, ut_a, and ut_error.
Referenced by os_file_create_simple_func().
UNIV_INTERN os_file_t os_file_create_simple_no_error_handling_func | ( | const char * | name, |
ulint | create_mode, | ||
ulint | access_type, | ||
ibool * | success | ||
) |
NOTE! Use the corresponding macro os_file_create_simple_no_error_handling(), not directly this function! A simple function to open or create a file.
NOTE! Use the corresponding macro os_file_create_simple_no_error_handling(), not directly this function! A simple function to open or create a file.
name | in: name of the file or path as a null-terminated string |
create_mode | in: OS_FILE_OPEN if an existing file is opened (if does not exist, error), or OS_FILE_CREATE if a new file is created (if exists, error) |
access_type | in: OS_FILE_READ_ONLY, OS_FILE_READ_WRITE, or OS_FILE_READ_ALLOW_DELETE; the last option is used by a backup program reading the file |
success | out: TRUE if succeed, FALSE if error |
Definition at line 1192 of file os0file.cc.
References os_file_create_simple_no_error_handling_func(), OS_FILE_OPEN, ut_a, and ut_error.
Referenced by os_file_create_simple_no_error_handling_func().
UNIV_INTERN ibool os_file_create_subdirs_if_needed | ( | const char * | path) |
Creates all missing subdirectories along the given path.
Creates all missing subdirectories along the given path.
path | in: path name |
Definition at line 3077 of file os0file.cc.
References mem_free, os_file_create_directory(), os_file_create_subdirs_if_needed(), os_file_dirname(), and os_file_status().
Referenced by os_file_create_simple_func(), and os_file_create_subdirs_if_needed().
FILE* os_file_create_tmpfile | ( | void | ) |
Creates a temporary file. This function is like tmpfile(3), but the temporary file is created in the MySQL temporary directory.
Definition at line 704 of file os0file.cc.
References innobase_mysql_tmpfile(), os_file_create_tmpfile(), and ut_print_timestamp().
Referenced by dict_init(), innobase_start_or_create_for_mysql(), lock_sys_create(), and os_file_create_tmpfile().
UNIV_INTERN ibool os_file_delete | ( | const char * | name) |
Deletes a file. The file has to be closed before calling this.
Deletes a file. The file has to be closed before calling this.
name | in: file path as a null-terminated string |
Definition at line 1677 of file os0file.cc.
References os_file_delete(), os_file_get_last_error(), and os_thread_sleep().
Referenced by fil_create_new_single_table_tablespace(), fil_delete_tablespace(), and os_file_delete().
UNIV_INTERN ibool os_file_delete_if_exists | ( | const char * | name) |
Deletes a file if it exists. The file has to be closed before calling this.
Deletes a file if it exists. The file has to be closed before calling this.
name | in: file path as a null-terminated string |
Definition at line 1615 of file os0file.cc.
References os_file_delete_if_exists(), os_file_get_last_error(), and os_thread_sleep().
Referenced by fil_delete_tablespace(), and os_file_delete_if_exists().
UNIV_INTERN char* os_file_dirname | ( | const char * | path) |
The function os_file_dirname returns a directory component of a null-terminated pathname string. In the usual case, dirname returns the string up to, but not including, the final '/', and basename is the component following the final '/'. Trailing '/' charac ters are not counted as part of the pathname.
If path does not contain a slash, dirname returns the string ".".
Concatenating the string returned by dirname, a "/", and the basename yields a complete pathname.
The return value is a copy of the directory component of the pathname. The copy is allocated from heap. It is the caller responsibility to free it after it is no longer needed.
The following list of examples (taken from SUSv2) shows the strings returned by dirname and basename for different paths:
path dirname basename "/usr/lib" "/usr" "lib" "/usr/" "/" "usr" "usr" "." "usr" "/" "/" "/" "." "." "." ".." "." ".."
The function os_file_dirname returns a directory component of a null-terminated pathname string. In the usual case, dirname returns the string up to, but not including, the final '/', and basename is the component following the final '/'. Trailing '/' charac ters are not counted as part of the pathname.
If path does not contain a slash, dirname returns the string ".".
Concatenating the string returned by dirname, a "/", and the basename yields a complete pathname.
The return value is a copy of the directory component of the pathname. The copy is allocated from heap. It is the caller responsibility to free it after it is no longer needed.
The following list of examples (taken from SUSv2) shows the strings returned by dirname and basename for different paths:
path dirname basename "/usr/lib" "/usr" "lib" "/usr/" "/" "usr" "usr" "." "usr" "/" "/" "/" "." "." "." ".." "." ".."
path | in: pathname |
Definition at line 3047 of file os0file.cc.
References mem_strdup(), mem_strdupl(), and os_file_dirname().
Referenced by os_file_create_subdirs_if_needed(), and os_file_dirname().
UNIV_INTERN ibool os_file_flush_func | ( | os_file_t | file) |
NOTE! Use the corresponding macro os_file_flush(), not directly this function! Flushes the write buffers of a given file to the disk.
NOTE! Use the corresponding macro os_file_flush(), not directly this function! Flushes the write buffers of a given file to the disk.
file | in, own: handle to a file |
Definition at line 2084 of file os0file.cc.
References os_file_flush_func(), srv_start_raw_disk_in_use, ut_a, ut_error, and ut_print_timestamp().
Referenced by os_file_flush_func().
UNIV_INTERN ulint os_file_get_last_error | ( | ibool | report_all_errors) |
Retrieves the last error number if an error occurs in a file io function. The number should be retrieved before any other OS calls (because they may overwrite the error number). If the number is not known to this program, the OS error number + 100 is returned.
Retrieves the last error number if an error occurs in a file io function. The number should be retrieved before any other OS calls (because they may overwrite the error number). If the number is not known to this program, the OS error number + 100 is returned.
report_all_errors | in: TRUE if we want an error message printed of all errors |
Definition at line 360 of file os0file.cc.
References os_file_get_last_error(), OS_FILE_NOT_FOUND, srv_is_being_started, and ut_print_timestamp().
Referenced by buf_LRU_file_dump(), buf_LRU_file_restore(), fil_create_new_single_table_tablespace(), fil_open_single_table_tablespace(), fil_reset_too_high_lsns(), os_file_delete(), os_file_delete_if_exists(), and os_file_get_last_error().
UNIV_INTERN ibool os_file_get_size | ( | os_file_t | file, |
ulint * | size, | ||
ulint * | size_high | ||
) |
Gets a file size.
Gets a file size.
file | in: handle to a file |
size | out: least significant 32 bits of file size |
size_high | out: most significant 32 bits of size |
Definition at line 1857 of file os0file.cc.
References os_file_get_size().
Referenced by buf_LRU_file_restore(), os_file_get_size(), and os_file_get_size_as_iblonglong().
UNIV_INTERN ib_int64_t os_file_get_size_as_iblonglong | ( | os_file_t | file) |
Gets file size as a 64-bit integer ib_int64_t.
Gets file size as a 64-bit integer ib_int64_t.
file | in: handle to a file |
Definition at line 1905 of file os0file.cc.
References os_file_get_size(), and os_file_get_size_as_iblonglong().
Referenced by fil_extend_space_to_desired_size(), fil_reset_too_high_lsns(), and os_file_get_size_as_iblonglong().
UNIV_INTERN ibool os_file_get_status | ( | const char * | path, |
os_file_stat_t * | stat_info | ||
) |
This function returns information about the specified file
This function returns information about the specified file
path | in: pathname of the file |
stat_info | information of a file in a directory |
Definition at line 2937 of file os0file.cc.
References os_file_stat_struct::atime, os_file_stat_struct::ctime, os_file_stat_struct::mtime, os_file_get_status(), os_file_stat_struct::size, and os_file_stat_struct::type.
Referenced by ha_innobase::info(), and os_file_get_status().
UNIV_INTERN os_file_dir_t os_file_opendir | ( | const char * | dirname, |
ibool | error_is_fatal | ||
) |
The os_file_opendir() function opens a directory stream corresponding to the directory named by the dirname argument. The directory stream is positioned at the first entry. In both Unix and Windows we automatically skip the '.' and '..' items at the start of the directory listing.
The os_file_opendir() function opens a directory stream corresponding to the directory named by the dirname argument. The directory stream is positioned at the first entry. In both Unix and Windows we automatically skip the '.' and '..' items at the start of the directory listing.
dirname | in: directory name; it must not contain a trailing '\' or '/' |
error_is_fatal | in: TRUE if we should treat an error as a fatal error; if we try to open symlinks then we do not wish a fatal error if it happens not to be a directory |
Definition at line 736 of file os0file.cc.
References os_file_opendir(), ut_a, ut_free(), and ut_malloc().
Referenced by fil_load_single_table_tablespaces(), and os_file_opendir().
UNIV_INTERN ibool os_file_read_func | ( | os_file_t | file, |
void * | buf, | ||
ulint | offset, | ||
ulint | offset_high, | ||
ulint | n | ||
) |
NOTE! Use the corresponding macro os_file_read(), not directly this function! Requests a synchronous read operation.
NOTE! Use the corresponding macro os_file_read(), not directly this function! Requests a synchronous positioned read operation.
file | in: handle to a file |
buf | in: buffer where to read |
offset | in: least significant 32 bits of file offset where to read |
offset_high | in: most significant 32 bits of offset |
n | in: number of bytes to read |
Definition at line 2401 of file os0file.cc.
References os_file_read_func(), os_mutex_enter(), os_mutex_exit(), os_n_pending_reads, ut_a, ut_ad, and ut_error.
Referenced by os_file_read_func().
UNIV_INTERN ibool os_file_read_no_error_handling_func | ( | os_file_t | file, |
void * | buf, | ||
ulint | offset, | ||
ulint | offset_high, | ||
ulint | n | ||
) |
NOTE! Use the corresponding macro os_file_read_no_error_handling(), not directly this function! Requests a synchronous positioned read operation. This function does not do any error handling. In case of error it returns FALSE.
NOTE! Use the corresponding macro os_file_read_no_error_handling(), not directly this function! Requests a synchronous positioned read operation. This function does not do any error handling. In case of error it returns FALSE.
file | in: handle to a file |
buf | in: buffer where to read |
offset | in: least significant 32 bits of file offset where to read |
offset_high | in: most significant 32 bits of offset |
n | in: number of bytes to read |
Definition at line 2530 of file os0file.cc.
References os_file_read_no_error_handling_func(), os_mutex_enter(), os_mutex_exit(), os_n_pending_reads, ut_a, and ut_ad.
Referenced by os_file_read_no_error_handling_func().
UNIV_INTERN void os_file_read_string | ( | FILE * | file, |
char * | str, | ||
ulint | size | ||
) |
Rewind file to its start, read at most size - 1 bytes from it to str, and NUL-terminate str. All errors are silently ignored. This function is mostly meant to be used with temporary files. in: size of buffer
Rewind file to its start, read at most size - 1 bytes from it to str, and NUL-terminate str. All errors are silently ignored. This function is mostly meant to be used with temporary files.
file | in: file to read from |
str | in: buffer where to read |
size | in: size of buffer |
Definition at line 2638 of file os0file.cc.
References os_file_read_string().
Referenced by os_file_read_string(), and trx_set_detailed_error_from_file().
UNIV_INTERN int os_file_readdir_next_file | ( | const char * | dirname, |
os_file_dir_t | dir, | ||
os_file_stat_t * | info | ||
) |
This function returns information of the next file in the directory. We jump over the '.' and '..' entries in the directory.
This function returns information of the next file in the directory. We jump over the '.' and '..' entries in the directory.
dirname | in: directory name or path |
dir | in: directory stream |
info | in/out: buffer where the info is returned |
Definition at line 827 of file os0file.cc.
References os_file_stat_struct::name, os_file_readdir_next_file(), os_file_stat_struct::size, os_file_stat_struct::type, ut_a, ut_free(), and ut_malloc().
Referenced by os_file_readdir_next_file().
UNIV_INTERN ibool os_file_rename_func | ( | const char * | oldpath, |
const char * | newpath | ||
) |
NOTE! Use the corresponding macro os_file_rename(), not directly this function! Renames a file (can also move it to another directory). It is safest that the file is closed before calling this function.
NOTE! Use the corresponding macro os_file_rename(), not directly this function! Renames a file (can also move it to another directory). It is safest that the file is closed before calling this function.
oldpath | in: old file path as a null-terminated string |
newpath | in: new file path |
Definition at line 1742 of file os0file.cc.
References os_file_rename_func().
Referenced by os_file_rename_func().
UNIV_INTERN ibool os_file_set_eof | ( | FILE * | file) |
Truncates a file at its current position.
Truncates a file at its current position.
file | in: file to be truncated |
Definition at line 2017 of file os0file.cc.
References os_file_set_eof().
Referenced by innodb_show_status(), os_file_set_eof(), and srv_monitor_thread().
UNIV_INTERN void os_file_set_nocache | ( | int | fd, |
const char * | file_name, | ||
const char * | operation_name | ||
) |
Tries to disable OS caching on an opened file descriptor. in: "open" or "create"; used in the diagnostic message
Tries to disable OS caching on an opened file descriptor.
fd | in: file descriptor to alter |
file_name | in: used in the diagnostic message |
operation_name | in: "open" or "create"; used in the diagnostic message |
Definition at line 1302 of file os0file.cc.
References os_file_set_nocache(), and ut_print_timestamp().
Referenced by os_file_create_func(), and os_file_set_nocache().
UNIV_INTERN ibool os_file_set_size | ( | const char * | name, |
os_file_t | file, | ||
ulint | size, | ||
ulint | size_high | ||
) |
Write the specified number of zeros to a newly created file.
Write the specified number of zeros to a newly created file.
name | in: name of the file or path as a null-terminated string |
file | in: handle to a file |
size | in: least significant 32 bits of file size |
size_high | in: most significant 32 bits of size |
Definition at line 1928 of file os0file.cc.
References os_file_set_size(), ut_a, ut_align(), ut_free(), ut_malloc(), and ut_min().
Referenced by fil_create_new_single_table_tablespace(), and os_file_set_size().
UNIV_INTERN ibool os_file_status | ( | const char * | path, |
ibool * | exists, | ||
os_file_type_t * | type | ||
) |
Check the existence and type of the given file.
Check the existence and type of the given file.
path | in: pathname of the file |
exists | out: TRUE if file exists |
type | out: type of the file (if it exists) |
Definition at line 2865 of file os0file.cc.
References os_file_status().
Referenced by os_file_create_subdirs_if_needed(), and os_file_status().
UNIV_INTERN ibool os_file_write_func | ( | const char * | name, |
os_file_t | file, | ||
const void * | buf, | ||
ulint | offset, | ||
ulint | offset_high, | ||
ulint | n | ||
) |
NOTE! Use the corresponding macro os_file_write(), not directly this function! Requests a synchronous write operation.
NOTE! Use the corresponding macro os_file_write(), not directly this function! Requests a synchronous write operation.
name | in: name of the file or path as a null-terminated string |
file | in: handle to a file |
buf | in: buffer from which to write |
offset | in: least significant 32 bits of file offset where to write |
offset_high | in: most significant 32 bits of offset |
n | in: number of bytes to write |
Definition at line 2662 of file os0file.cc.
References os_file_write_func(), os_mutex_enter(), os_mutex_exit(), os_n_pending_writes, os_thread_sleep(), ut_a, ut_ad, and ut_print_timestamp().
Referenced by os_file_write_func().
UNIV_INTERN ulint os_get_os_version | ( | void | ) |
Gets the operating system version. Currently works only on Windows.
Definition at line 313 of file os0file.cc.
References os_get_os_version(), OS_WIN2000, OS_WIN31, OS_WIN7, OS_WIN95, OS_WINNT, OS_WINVISTA, OS_WINXP, ut_a, and ut_error.
Referenced by innobase_start_or_create_for_mysql(), and os_get_os_version().
UNIV_INTERN void os_io_init_simple | ( | void | ) |
Creates the seek mutexes used in positioned reads and writes.
Definition at line 686 of file os0file.cc.
References os_io_init_simple(), and os_mutex_create().
Referenced by os_io_init_simple().
ibool os_aio_print_debug |
Flag: enable debug printout for asynchronous i/o
Definition at line 149 of file os0file.cc.
Referenced by buf_read_recv_pages(), and os_aio_simulated_handle().
ulint os_file_n_pending_preads |
Number of pending os_file_pread() operations
Definition at line 299 of file os0file.cc.
Referenced by buf_read_recv_pages(), os_aio_print(), and sync_array_print_long_waits().
ulint os_file_n_pending_pwrites |
Number of pending os_file_pwrite() operations
Definition at line 301 of file os0file.cc.
Referenced by os_aio_print(), and sync_array_print_long_waits().
ulint os_innodb_umask |
Umask for creating files
Definition at line 71 of file os0file.cc.
Referenced by innobase_init(), and os_file_create_func().
ulint os_n_pending_reads |
Number of pending read operations
Definition at line 305 of file os0file.cc.
Referenced by os_file_read_func(), os_file_read_no_error_handling_func(), and srv_export_innodb_status().
ulint os_n_pending_writes |
Number of pending write operations
Definition at line 303 of file os0file.cc.
Referenced by os_file_write_func(), and srv_export_innodb_status().