MDEV-11254: innodb-use-trim has no effect in 10.2
Problem was that implementation merged from 10.1 was incompatible
with InnoDB 5.7.
buf0buf.cc: Add functions to return should we punch hole and
how big.
buf0flu.cc: Add written page to IORequest
fil0fil.cc: Remove unneeded status call and add test is
sparse files and punch hole supported by file system when
tablespace is created. Add call to get file system
block size. Used file node is added to IORequest. Added
functions to check is punch hole supported and setting
punch hole.
ha_innodb.cc: Remove unneeded status variables (trim512-32768)
and trim_op_saved. Deprecate innodb_use_trim and
set it ON by default. Add function to set innodb-use-trim
dynamically.
dberr.h: Add error code DB_IO_NO_PUNCH_HOLE
if punch hole operation fails.
fil0fil.h: Add punch_hole variable to fil_space_t and
block size to fil_node_t.
os0api.h: Header to helper functions on buf0buf.cc and
fil0fil.cc for os0file.h
os0file.h: Remove unneeded m_block_size from IORequest
and add bpage to IORequest to know actual size of
the block and m_fil_node to know tablespace file
system block size and does it support punch hole.
os0file.cc: Add function punch_hole() to IORequest
to do punch_hole operation,
get the file system block size and determine
does file system support sparse files (for punch hole).
page0size.h: remove implicit copy disable and
use this implicit copy to implement copy_from()
function.
buf0dblwr.cc, buf0flu.cc, buf0rea.cc, fil0fil.cc, fil0fil.h,
os0file.h, os0file.cc, log0log.cc, log0recv.cc:
Remove unneeded write_size parameter from fil_io
calls.
srv0mon.h, srv0srv.h, srv0mon.cc: Remove unneeded
trim512-trim32678 status variables. Removed
these from monitor tests.
2017-01-24 13:40:58 +01:00
|
|
|
/***********************************************************************
|
|
|
|
|
|
|
|
Copyright (c) 2017, MariaDB Corporation.
|
|
|
|
|
|
|
|
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; version 2 of the License.
|
|
|
|
|
|
|
|
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.,
|
|
|
|
51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA
|
|
|
|
|
|
|
|
***********************************************************************/
|
|
|
|
|
|
|
|
/**************************************************//**
|
|
|
|
@file os0api.h
|
|
|
|
The interface to the helper functions.
|
|
|
|
These functions are used on os0file.h where
|
|
|
|
including full full header is not feasible and
|
|
|
|
implemented on buf0buf.cc and fil0fil.cc.
|
|
|
|
*******************************************************/
|
|
|
|
|
|
|
|
#ifndef OS_API_H
|
|
|
|
#define OS_API_H 1
|
|
|
|
|
|
|
|
/** Page control block */
|
2017-01-25 11:33:39 +01:00
|
|
|
class buf_page_t;
|
MDEV-11254: innodb-use-trim has no effect in 10.2
Problem was that implementation merged from 10.1 was incompatible
with InnoDB 5.7.
buf0buf.cc: Add functions to return should we punch hole and
how big.
buf0flu.cc: Add written page to IORequest
fil0fil.cc: Remove unneeded status call and add test is
sparse files and punch hole supported by file system when
tablespace is created. Add call to get file system
block size. Used file node is added to IORequest. Added
functions to check is punch hole supported and setting
punch hole.
ha_innodb.cc: Remove unneeded status variables (trim512-32768)
and trim_op_saved. Deprecate innodb_use_trim and
set it ON by default. Add function to set innodb-use-trim
dynamically.
dberr.h: Add error code DB_IO_NO_PUNCH_HOLE
if punch hole operation fails.
fil0fil.h: Add punch_hole variable to fil_space_t and
block size to fil_node_t.
os0api.h: Header to helper functions on buf0buf.cc and
fil0fil.cc for os0file.h
os0file.h: Remove unneeded m_block_size from IORequest
and add bpage to IORequest to know actual size of
the block and m_fil_node to know tablespace file
system block size and does it support punch hole.
os0file.cc: Add function punch_hole() to IORequest
to do punch_hole operation,
get the file system block size and determine
does file system support sparse files (for punch hole).
page0size.h: remove implicit copy disable and
use this implicit copy to implement copy_from()
function.
buf0dblwr.cc, buf0flu.cc, buf0rea.cc, fil0fil.cc, fil0fil.h,
os0file.h, os0file.cc, log0log.cc, log0recv.cc:
Remove unneeded write_size parameter from fil_io
calls.
srv0mon.h, srv0srv.h, srv0mon.cc: Remove unneeded
trim512-trim32678 status variables. Removed
these from monitor tests.
2017-01-24 13:40:58 +01:00
|
|
|
|
|
|
|
/** File Node */
|
|
|
|
struct fil_node_t;
|
|
|
|
|
|
|
|
/**
|
|
|
|
Should we punch hole to deallocate unused portion of the page.
|
|
|
|
@param[in] bpage Page control block
|
|
|
|
@return true if punch hole should be used, false if not */
|
|
|
|
bool
|
|
|
|
buf_page_should_punch_hole(
|
|
|
|
const buf_page_t* bpage)
|
|
|
|
MY_ATTRIBUTE((warn_unused_result));
|
|
|
|
|
|
|
|
/**
|
|
|
|
Calculate the length of trim (punch_hole) operation.
|
|
|
|
@param[in] bpage Page control block
|
|
|
|
@param[in] write_length Write length
|
|
|
|
@return length of the trim or zero. */
|
|
|
|
ulint
|
|
|
|
buf_page_get_trim_length(
|
|
|
|
const buf_page_t* bpage,
|
|
|
|
ulint write_length)
|
|
|
|
MY_ATTRIBUTE((warn_unused_result));
|
|
|
|
|
|
|
|
/**
|
|
|
|
Get should we punch hole to tablespace.
|
|
|
|
@param[in] space Tablespace
|
|
|
|
@return true, if punch hole should be tried, false if not. */
|
|
|
|
bool
|
|
|
|
fil_node_should_punch_hole(
|
|
|
|
const fil_node_t* node)
|
|
|
|
MY_ATTRIBUTE((warn_unused_result));
|
|
|
|
|
|
|
|
/**
|
|
|
|
Set punch hole to tablespace to given value.
|
|
|
|
@param[in] space Tablespace
|
|
|
|
@param[in] val value to be set. */
|
|
|
|
void
|
|
|
|
fil_space_set_punch_hole(
|
|
|
|
fil_node_t* node,
|
|
|
|
bool val);
|
|
|
|
|
|
|
|
#endif /* OS_API_H */
|