# Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: toshikuni-fukaya@cybozu.co.jp-20130122005501-\ # vc9xqiogy02xfmoe # target_branch: file:///home/fukaya/mariadb/maria/trunk/ # testament_sha1: 5da3bd435589381472f4c9aa60d14aa006c46bab # timestamp: 2013-01-22 10:14:57 +0900 # base_revision_id: wlad@montyprogram.com-20130118174907-\ # pn27v90e4xkqzfi3 # # Begin patch === modified file 'config.h.cmake' --- config.h.cmake 2012-07-31 17:29:07 +0000 +++ config.h.cmake 2013-01-22 00:55:01 +0000 @@ -214,6 +214,7 @@ #cmakedefine HAVE_POLL 1 #cmakedefine HAVE_PORT_CREATE 1 #cmakedefine HAVE_POSIX_FALLOCATE 1 +#cmakedefine HAVE_FALLOCATE 1 #cmakedefine HAVE_PREAD 1 #cmakedefine HAVE_PAUSE_INSTRUCTION 1 #cmakedefine HAVE_FAKE_PAUSE_INSTRUCTION 1 === modified file 'configure.cmake' --- configure.cmake 2012-08-15 06:34:18 +0000 +++ configure.cmake 2013-01-22 00:55:01 +0000 @@ -398,6 +398,7 @@ CHECK_FUNCTION_EXISTS (poll HAVE_POLL) CHECK_FUNCTION_EXISTS (port_create HAVE_PORT_CREATE) CHECK_FUNCTION_EXISTS (posix_fallocate HAVE_POSIX_FALLOCATE) +CHECK_FUNCTION_EXISTS (fallocate HAVE_FALLOCATE) CHECK_FUNCTION_EXISTS (pread HAVE_PREAD) CHECK_FUNCTION_EXISTS (pthread_attr_create HAVE_PTHREAD_ATTR_CREATE) CHECK_FUNCTION_EXISTS (pthread_attr_getstacksize HAVE_PTHREAD_ATTR_GETSTACKSIZE) === modified file 'storage/innobase/fil/fil0fil.c' --- storage/innobase/fil/fil0fil.c 2012-09-20 12:44:33 +0000 +++ storage/innobase/fil/fil0fil.c 2013-01-22 00:55:01 +0000 @@ -3961,6 +3961,7 @@ ulint offset_low; ulint page_size; ibool success = TRUE; + ibool fallenback = TRUE; fil_mutex_enter_and_prepare_for_io(space_id); @@ -3989,6 +3990,31 @@ start_page_no = space->size; file_start_page_no = space->size - node->size; +#ifdef HAVE_FALLOCATE + { + ulint n_pages = size_after_extend - start_page_no; + if(fallocate(node->handle, 0, node->size * page_size, + n_pages * page_size) == 0) { + node->size += n_pages; + space->size += n_pages; + os_has_said_disk_full = FALSE; + fallenback = FALSE; + goto extend_after; + } else if (errno != ENOSYS && errno != EOPNOTSUPP) { + n_pages = ((ulint) + (os_file_get_size_as_iblonglong( + node->handle) + / page_size)) - node->size; + + node->size += n_pages; + space->size += n_pages; + fallenback = FALSE; + goto extend_after; + } + /* fall back if filesystem does not support fallocate */ + } +#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); @@ -4041,7 +4067,8 @@ mem_free(buf2); - fil_node_complete_io(node, fil_system, OS_FILE_WRITE); +extend_after: + fil_node_complete_io(node, fil_system, fallenback ? OS_FILE_WRITE : OS_FILE_READ); *actual_size = space->size; === modified file 'storage/innobase/os/os0file.c' --- storage/innobase/os/os0file.c 2013-01-15 18:13:32 +0000 +++ storage/innobase/os/os0file.c 2013-01-22 00:55:01 +0000 @@ -1970,6 +1970,15 @@ current_size = 0; desired_size = (ib_int64_t)size + (((ib_int64_t)size_high) << 32); +#ifdef HAVE_FALLOCATE + if (fallocate(file, 0, 0, desired_size) == 0) { + return (TRUE); + } else if (errno != ENOSYS && errno != EOPNOTSUPP) { + goto error_handling; + } + /* fall back if filesystem does not support fallocate */ +#endif + /* Write up to 1 megabyte at a time. */ buf_size = ut_min(64, (ulint) (desired_size / UNIV_PAGE_SIZE)) * UNIV_PAGE_SIZE; # Begin bundle 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 4u5IpwoSADKiLUA=