From 7c81a515161cd952c39535546540a1d5b1314b37 Mon Sep 17 00:00:00 2001 From: Michael Widenius Date: Sun, 23 Mar 2014 21:09:38 +0200 Subject: [PATCH] Make copy_up_file_and_fill() safe for disk full Fixed use-copy option to mysql-test-run mysql-test/mysql-test-run.pl: Fixed use-copy and added comment sql/log.cc: Make copy_up_file_and_fill() safe for disk full --- mysql-test/mysql-test-run.pl | 14 ++++++++++++-- sql/log.cc | 3 ++- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/mysql-test/mysql-test-run.pl b/mysql-test/mysql-test-run.pl index 40aa827e3ce..d3e866673a3 100755 --- a/mysql-test/mysql-test-run.pl +++ b/mysql-test/mysql-test-run.pl @@ -2686,7 +2686,7 @@ sub setup_vardir() { { $plugindir="$opt_vardir/plugins"; mkpath($plugindir); - if (IS_WINDOWS && !$opt_embedded_server || $opt_use_copy) + if (IS_WINDOWS && !$opt_embedded_server) { for (<$bindir/storage/*$opt_vs_config/*.dll>, <$bindir/plugin/*$opt_vs_config/*.dll>, @@ -2708,7 +2708,14 @@ sub setup_vardir() { <$bindir/sql/*.so>) { my $pname=basename($_); - symlink rel2abs($_), "$plugindir/$pname"; + if ($opt_use_copy) + { + copy rel2abs($_), "$plugindir/$pname"; + } + else + { + symlink rel2abs($_), "$plugindir/$pname"; + } set_plugin_var($pname); } } @@ -6416,6 +6423,9 @@ Options to control what test suites or cases to run skip-test-list=FILE Skip the tests listed in FILE. Each line in the file is an entry and should be formatted as: : + use-copy Copy plugins instead of symlinking them. This is + only useful when running on a system that doesn't + support symlinks. Options that specify ports diff --git a/sql/log.cc b/sql/log.cc index 33f15100d67..901e4e5041d 100644 --- a/sql/log.cc +++ b/sql/log.cc @@ -3590,7 +3590,8 @@ static bool copy_up_file_and_fill(IO_CACHE *index_file, my_off_t offset) if (!bytes_read) break; // end of file mysql_file_seek(file, offset-init_offset, MY_SEEK_SET, MYF(0)); - if (mysql_file_write(file, io_buf, bytes_read, MYF(MY_WME | MY_NABP))) + if (mysql_file_write(file, io_buf, bytes_read, + MYF(MY_WME | MY_NABP | MY_WAIT_IF_FULL))) goto err; } /* The following will either truncate the file or fill the end with \n' */