Drizzled Public API Documentation

os0file.h File Reference
#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 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
 

Detailed Description

The interface to the operating system file io

Created 10/21/1995 Heikki Tuuri

Definition in file os0file.h.

Macro Definition Documentation

#define os_aio (   type,
  mode,
  name,
  file,
  buf,
  offset,
  offset_high,
  n,
  message1,
  message2 
)
Value:
os_aio_func(type, mode, name, file, buf, offset, offset_high, n,\
message1, message2)

Definition at line 343 of file os0file.h.

#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

Win NT does not allow more than 64

Definition at line 150 of file os0file.h.

#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
Value:
75 /* wait for OS aio resources
to become available again */

Definition at line 134 of file os0file.h.

#define os_file_create_simple_no_error_handling (   key,
  name,
  create_mode,
  access,
  success 
)
Value:
name, create_mode, access, success)

Definition at line 336 of file os0file.h.

#define OS_FILE_FROM_FD (   fd)    fd
Convert a C file descriptor to a native file handle
Parameters
fdfile descriptor
Returns
native file handle

Definition at line 91 of file os0file.h.

#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_RETRY
Value:
56 /* for os_file_create() on
the first ibdata file */

Definition at line 112 of file os0file.h.

#define OS_WIN2000   4

Microsoft Windows 2000

Definition at line 196 of file os0file.h.

Referenced by innobase_start_or_create_for_mysql().

#define OS_WIN31   1

Microsoft Windows 3.x

Definition at line 193 of file os0file.h.

Referenced by innobase_start_or_create_for_mysql().

#define OS_WIN7   7

Microsoft Windows 7 or Windows Server 2008 R2

Definition at line 203 of file os0file.h.

#define OS_WIN95   2

Microsoft Windows 95

Definition at line 194 of file os0file.h.

Referenced by innobase_start_or_create_for_mysql().

#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().

#define OS_WINVISTA   6

Microsoft Windows Vista or Windows Server 2008

Definition at line 200 of file os0file.h.

#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().

Typedef Documentation

typedef struct fil_node_struct fil_node_t

File node of a tablespace or the log data space

Definition at line 48 of file os0file.h.

typedef DIR* os_file_dir_t

directory stream

Definition at line 395 of file os0file.h.

typedef int os_file_t

File handle

Definition at line 87 of file os0file.h.

Function Documentation

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.

Returns
temporary file descriptor, or < 0 on error

Creates a temporary file.

Returns
temporary file descriptor, or < 0 on error

Definition at line 1479 of file ha_innodb.cc.

Referenced by os_file_create_tmpfile().

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.

Returns
TRUE if request was queued successfully, FALSE if fail in: message for the aio handler (can be used to identify a completed aio operation); ignored if mode is OS_AIO_SYNC

NOTE! Use the corresponding macro os_aio(), not directly this function! Requests an asynchronous i/o operation.

Returns
TRUE if request was queued successfully, FALSE if fail
Parameters
typein: OS_FILE_READ or OS_FILE_WRITE
modein: 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!
namein: name of the file or path as a null-terminated string
filein: handle to a file
bufin: buffer where to read or from which to write
offsetin: least significant 32 bits of file offset where to read or write
offset_highin: most significant 32 bits of offset
nin: number of bytes to read or write
message1in: message for the aio handler (can be used to identify a completed aio operation); ignored if mode is OS_AIO_SYNC
message2in: message for the aio handler (can be used to identify a completed aio operation); ignored if mode is OS_AIO_SYNC

Definition at line 4018 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_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)
UNIV_INTERN void os_aio_refresh_stats ( void  )

Refreshes the statistics used to print per-second averages.

Definition at line 5215 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.

Returns
TRUE if the aio operation succeeded out: OS_FILE_WRITE or ..._READ

Does simulated aio. This function should be called by an i/o-handler thread.

Returns
TRUE if the aio operation succeeded
Parameters
global_segmentin: 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
message1out: 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
typeout: OS_FILE_WRITE or ..._READ

Definition at line 4654 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_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 3933 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 3908 of file os0file.cc.

References os_aio_simulated_wake_handler_threads().

Referenced by buf_LRU_file_restore(), 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.

Returns
TRUE if ok

Validates the consistency the aio system.

Returns
TRUE if ok

Definition at line 5019 of file os0file.cc.

References os_aio_validate().

Referenced by 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 3575 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 3537 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.

Returns
TRUE if success in, own: handle to a 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.

Returns
TRUE if success
Parameters
filein, own: handle to a file

Definition at line 1820 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.

Returns
0 if success, -1 if failure in: directory stream

Closes a directory stream.

Returns
0 if success, -1 if failure
Parameters
dirin: directory stream

Definition at line 817 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.

Returns
TRUE if call succeeds, FALSE on error in: if TRUE, pre-existing directory is treated as an error.

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.

Returns
TRUE if call succeeds, FALSE on error
Parameters
pathnamein: directory name as null-terminated string
fail_if_existsin: if TRUE, pre-existing directory is treated as an error.

Definition at line 1042 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.

Returns
own: handle to the file, not defined if error, error number can be retrieved with os_file_get_last_error out: TRUE if succeed, FALSE if error

NOTE! Use the corresponding macro os_file_create(), not directly this function! Opens an existing file or creates a new.

Returns
own: handle to the file, not defined if error, error number can be retrieved with os_file_get_last_error
Parameters
namein: name of the file or path as a null-terminated string
create_modein: 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
purposein: 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
typein: OS_DATA_FILE or OS_LOG_FILE
successout: TRUE if succeed, FALSE if error

Definition at line 1391 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.

Returns
own: handle to the file, not defined if error, error number can be retrieved with os_file_get_last_error out: TRUE if succeed, FALSE if error

NOTE! Use the corresponding macro os_file_create_simple(), not directly this function! A simple function to open or create a file.

Returns
own: handle to the file, not defined if error, error number can be retrieved with os_file_get_last_error
Parameters
namein: name of the file or path as a null-terminated string
create_modein: 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_typein: OS_FILE_READ_ONLY or OS_FILE_READ_WRITE
successout: TRUE if succeed, FALSE if error

Definition at line 1087 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.

Returns
own: handle to the file, not defined if error, error number can be retrieved with os_file_get_last_error out: TRUE if succeed, FALSE if error

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.

Returns
own: handle to the file, not defined if error, error number can be retrieved with os_file_get_last_error
Parameters
namein: name of the file or path as a null-terminated string
create_modein: 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_typein: 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
successout: TRUE if succeed, FALSE if error

Definition at line 1230 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.

Returns
TRUE if call succeeded FALSE otherwise in: path name

Creates all missing subdirectories along the given path.

Returns
TRUE if call succeeded FALSE otherwise
Parameters
pathin: path name

Definition at line 3115 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.

Returns
temporary file handle, or NULL on error

Definition at line 729 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.

Returns
TRUE if success in: file path as a null-terminated string

Deletes a file. The file has to be closed before calling this.

Returns
TRUE if success
Parameters
namein: file path as a null-terminated string

Definition at line 1715 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.

Returns
TRUE if success in: file path as a null-terminated string

Deletes a file if it exists. The file has to be closed before calling this.

Returns
TRUE if success
Parameters
namein: file path as a null-terminated string

Definition at line 1653 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"
   "/"        "/"      "/"
   "."        "."      "."
   ".."       "."      ".."
Returns
own: directory component of the pathname in: pathname

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"
   "/"        "/"      "/"
   "."        "."      "."
   ".."       "."      ".."
Returns
own: directory component of the pathname
Parameters
pathin: pathname

Definition at line 3085 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.

Returns
TRUE if success in, own: handle to a file

NOTE! Use the corresponding macro os_file_flush(), not directly this function! Flushes the write buffers of a given file to the disk.

Returns
TRUE if success
Parameters
filein, own: handle to a file

Definition at line 2122 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.

Returns
error number, or OS error number + 100 in: TRUE if we want an error message printed of 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.

Returns
error number, or OS error number + 100
Parameters
report_all_errorsin: TRUE if we want an error message printed of all errors

Definition at line 385 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.

Returns
TRUE if success out: most significant 32 bits of size

Gets a file size.

Returns
TRUE if success
Parameters
filein: handle to a file
sizeout: least significant 32 bits of file size
size_highout: most significant 32 bits of size

Definition at line 1895 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.

Returns
size in bytes, -1 if error in: handle to a file

Gets file size as a 64-bit integer ib_int64_t.

Returns
size in bytes, -1 if error
Parameters
filein: handle to a file

Definition at line 1943 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

Returns
TRUE if stat information found information of a file in a directory

This function returns information about the specified file

Returns
TRUE if stat information found
Parameters
pathin: pathname of the file
stat_infoinformation of a file in a directory

Definition at line 2975 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.

Returns
directory stream, NULL if error 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

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.

Returns
directory stream, NULL if error
Parameters
dirnamein: directory name; it must not contain a trailing '\' or '/'
error_is_fatalin: 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 761 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.

Returns
TRUE if request was successful, FALSE if fail in: number of bytes to read

NOTE! Use the corresponding macro os_file_read(), not directly this function! Requests a synchronous positioned read operation.

Returns
TRUE if request was successful, FALSE if fail
Parameters
filein: handle to a file
bufin: buffer where to read
offsetin: least significant 32 bits of file offset where to read
offset_highin: most significant 32 bits of offset
nin: number of bytes to read

Definition at line 2439 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.

Returns
TRUE if request was successful, FALSE if fail in: number of bytes to read

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.

Returns
TRUE if request was successful, FALSE if fail
Parameters
filein: handle to a file
bufin: buffer where to read
offsetin: least significant 32 bits of file offset where to read
offset_highin: most significant 32 bits of offset
nin: number of bytes to read

Definition at line 2568 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.

Parameters
filein: file to read from
strin: buffer where to read
sizein: size of buffer

Definition at line 2676 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.

Returns
0 if ok, -1 if error, 1 if at the end of the directory in/out: buffer where the info is returned

This function returns information of the next file in the directory. We jump over the '.' and '..' entries in the directory.

Returns
0 if ok, -1 if error, 1 if at the end of the directory
Parameters
dirnamein: directory name or path
dirin: directory stream
infoin/out: buffer where the info is returned

Definition at line 852 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.

Returns
TRUE if success in: new file path

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.

Returns
TRUE if success
Parameters
oldpathin: old file path as a null-terminated string
newpathin: new file path

Definition at line 1780 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.

Returns
TRUE if success in: file to be truncated

Truncates a file at its current position.

Returns
TRUE if success
Parameters
filein: file to be truncated

Definition at line 2055 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.

Parameters
fdin: file descriptor to alter
file_namein: used in the diagnostic message
operation_namein: "open" or "create"; used in the diagnostic message

Definition at line 1340 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.

Returns
TRUE if success in: most significant 32 bits of size

Write the specified number of zeros to a newly created file.

Returns
TRUE if success
Parameters
namein: name of the file or path as a null-terminated string
filein: handle to a file
sizein: least significant 32 bits of file size
size_highin: most significant 32 bits of size

Definition at line 1966 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.

Returns
TRUE if call succeeded out: type of the file (if it exists)

Check the existence and type of the given file.

Returns
TRUE if call succeeded
Parameters
pathin: pathname of the file
existsout: TRUE if file exists
typeout: type of the file (if it exists)

Definition at line 2903 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.

Returns
TRUE if request was successful, FALSE if fail in: number of bytes to write

NOTE! Use the corresponding macro os_file_write(), not directly this function! Requests a synchronous write operation.

Returns
TRUE if request was successful, FALSE if fail
Parameters
namein: name of the file or path as a null-terminated string
filein: handle to a file
bufin: buffer from which to write
offsetin: least significant 32 bits of file offset where to write
offset_highin: most significant 32 bits of offset
nin: number of bytes to write

Definition at line 2700 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 void os_io_init_simple ( void  )

Creates the seek mutexes used in positioned reads and writes.

Definition at line 711 of file os0file.cc.

References os_io_init_simple(), and os_mutex_create().

Referenced by os_io_init_simple().

Variable Documentation

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().