diff options
author | unknown <monty@mysql.com> | 2003-11-02 15:55:02 +0200 |
---|---|---|
committer | unknown <monty@mysql.com> | 2003-11-02 15:55:02 +0200 |
commit | c97a38c4d3b2afd4c93771fca61eede965fe71cf (patch) | |
tree | cb9bb7181d68f8c4f3d892367e08536d2f609a19 /mysys/my_sync.c | |
parent | 116cf0102464ce330a758fa3bec2239bfc5872d5 (diff) | |
download | mariadb-git-c97a38c4d3b2afd4c93771fca61eede965fe71cf.tar.gz |
Call my_sync() after all data is written to .frm file
Added my_sync() to mysys which will do fsync/fdatasync/_commit() on a file.
VC++Files/mysys/mysys.dsp:
Added my_sync.c
configure.in:
Added testing of fsync and fdatasync
include/my_sys.h:
Added my_sync()
include/mysys_err.h:
Added my_sync()
isam/extra.c:
Added my_sync()
myisam/mi_extra.c:
Added my_sync()
myisam/mi_locking.c:
Added my_sync()
mysql-test/mysql-test-run.sh:
Added option --valgrind-all
mysys/Makefile.am:
Added my_sync.c
mysys/errors.c:
Added my_sync()
mysys/my_symlink.c:
Removed compiler warning
mysys/thr_alarm.c:
Fix for link error on windows
sql/unireg.cc:
Call my_sync() after all data is written to .frm file
BitKeeper/etc/logging_ok:
Logging to logging@openlogging.org accepted
Diffstat (limited to 'mysys/my_sync.c')
-rw-r--r-- | mysys/my_sync.c | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/mysys/my_sync.c b/mysys/my_sync.c new file mode 100644 index 00000000000..317ca039346 --- /dev/null +++ b/mysys/my_sync.c @@ -0,0 +1,60 @@ +/* Copyright (C) 2003 MySQL AB + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ + +#include "mysys_priv.h" +#include "mysys_err.h" +#include <errno.h> + +/* + Sync data in file to disk + + SYNOPSIS + my_sync() + fd File descritor to sync + my_flags Flags (now only MY_WME is supported) + + NOTE + If file system supports its, only file data is synced, not inode date + + RETURN + 0 ok + -1 error +*/ + +int my_sync(File fd, myf my_flags) +{ + int res; + DBUG_ENTER("my_sync"); + DBUG_PRINT("my",("Fd: %d my_flags: %d", fd, my_flags)); + +#if defined(HAVE_FDATASYNC) + res= fdatasync(fd); +#elif defined(HAVE_FSYNC) + res=fsync(fd); +#elif defined(__WIN__) + res= _commit(fd); +#else + res= 0; /* No sync (strange OS) */ +#endif + if (res) + { + if (!(my_errno= errno)) + my_errno= -1; /* Unknown error */ + if (my_flags & MY_WME) + my_error(EE_SYNC, MYF(ME_BELL+ME_WAITTANG), my_filename(fd), my_errno); + } + DBUG_RETURN(res); +} /* my_read */ |