diff options
author | Seppo Jaakola <seppo.jaakola@codership.com> | 2013-05-26 11:26:58 +0300 |
---|---|---|
committer | Seppo Jaakola <seppo.jaakola@codership.com> | 2013-05-26 11:26:58 +0300 |
commit | bd0eae595fc5d050913ea01bd4c6a8e47f379176 (patch) | |
tree | dc2915fa2f49d6c015d7f6f4d54fda9ae0ae046e /storage/innobase/fil/fil0fil.c | |
parent | 9d1546fe2cdced5efb4af831fa2e560b7f80fb54 (diff) | |
parent | cb246b20d6e0dad16797b9e09bef6f0431b88d37 (diff) | |
download | mariadb-git-bd0eae595fc5d050913ea01bd4c6a8e47f379176.tar.gz |
References: MDEV-4572 - merge with mariaDB 5.5.31
bzr merge lp:maria/5.5 -rtag:mariadb-5.5.31
Text conflict in cmake/cpack_rpm.cmake
Text conflict in debian/dist/Debian/control
Text conflict in debian/dist/Ubuntu/control
Text conflict in sql/CMakeLists.txt
Conflict adding file sql/db.opt. Moved existing file to sql/db.opt.moved.
Conflict adding file sql/db.opt.moved. Moved existing file to sql/db.opt.moved.moved.
Text conflict in sql/mysqld.cc
Text conflict in support-files/mysql.spec.sh
8 conflicts encountered.
Diffstat (limited to 'storage/innobase/fil/fil0fil.c')
-rw-r--r-- | storage/innobase/fil/fil0fil.c | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/storage/innobase/fil/fil0fil.c b/storage/innobase/fil/fil0fil.c index 2f875663039..c3a206fb009 100644 --- a/storage/innobase/fil/fil0fil.c +++ b/storage/innobase/fil/fil0fil.c @@ -4023,6 +4023,24 @@ fil_extend_space_to_desired_size( start_page_no = space->size; file_start_page_no = space->size - node->size; +#ifdef HAVE_POSIX_FALLOCATE + if (srv_use_posix_fallocate) { + offset_high = size_after_extend * page_size / (4ULL*1024*1024*1024); + offset_low = size_after_extend * page_size % (4ULL*1024*1024*1024); + + mutex_exit(&fil_system->mutex); + success = os_file_set_size(node->name, node->handle, + offset_low, offset_high); + mutex_enter(&fil_system->mutex); + if (success) { + node->size += (size_after_extend - start_page_no); + space->size += (size_after_extend - start_page_no); + os_has_said_disk_full = FALSE; + } + goto complete_io; + } +#endif + /* Extend at most 64 pages at a time */ buf_size = ut_min(64, size_after_extend - start_page_no) * page_size; buf2 = mem_alloc(buf_size + page_size); @@ -4075,6 +4093,10 @@ fil_extend_space_to_desired_size( mem_free(buf2); +#ifdef HAVE_POSIX_FALLOCATE +complete_io: +#endif + fil_node_complete_io(node, fil_system, OS_FILE_WRITE); *actual_size = space->size; |