packages (MYSQL_5_1): mysql/mysql-innodb_deadlock_count.patch, mysql/mysql-...

glen glen at pld-linux.org
Tue Mar 8 09:52:47 CET 2011


Author: glen                         Date: Tue Mar  8 08:52:47 2011 GMT
Module: packages                      Tag: MYSQL_5_1
---- Log message:
- update percona patches from lp:percona-server/5.1 using percona.sh

---- Files affected:
packages/mysql:
   mysql-innodb_deadlock_count.patch (1.1.2.2 -> 1.1.2.3) , mysql-innodb_fix_misc.patch (1.1.2.2 -> 1.1.2.3) , mysql-innodb_swap_builtin_plugin.patch (1.1.2.2 -> 1.1.2.3) , mysql-userstat.patch (1.2.2.1 -> 1.2.2.2) , mysql.spec (1.496.2.5 -> 1.496.2.6) , percona.sh (1.7 -> 1.7.4.1) , mysql-bugfix48929.patch (NONE -> 1.1.2.1)  (NEW), mysql-control_online_alter_index.patch (NONE -> 1.1.2.1)  (NEW), mysql-fix-bug671764.patch (NONE -> 1.1.2.1)  (NEW), mysql-innodb_buffer_pool_shm.patch (NONE -> 1.1.2.1)  (NEW), mysql-innodb_fast_shutdown.patch (NONE -> 1.1.2.1)  (NEW), mysql-log_connection_error.patch (NONE -> 1.1.2.1)  (NEW), mysql-mysql-syslog.patch (NONE -> 1.1.2.1)  (NEW), mysql-mysql_remove_eol_carret.patch (NONE -> 1.1.2.1)  (NEW), mysql-remove_fcntl_excessive_calls.patch (NONE -> 1.1.2.1)  (NEW), mysql-response-time-distribution.patch (NONE -> 1.1.2.1)  (NEW), mysql-show_slave_status_nolock.patch (NONE -> 1.1.2.1)  (NEW), mysql-sql_no_fcache.patch (NONE -> 1.1.2.1)  (NEW)

---- Diffs:

================================================================
Index: packages/mysql/mysql-innodb_deadlock_count.patch
diff -u packages/mysql/mysql-innodb_deadlock_count.patch:1.1.2.2 packages/mysql/mysql-innodb_deadlock_count.patch:1.1.2.3
--- packages/mysql/mysql-innodb_deadlock_count.patch:1.1.2.2	Sat Feb 19 23:35:53 2011
+++ packages/mysql/mysql-innodb_deadlock_count.patch	Tue Mar  8 09:52:41 2011
@@ -31,7 +31,7 @@
 diff -ruN a/storage/innodb_plugin/include/srv0srv.h b/storage/innodb_plugin/include/srv0srv.h
 --- a/storage/innodb_plugin/include/srv0srv.h	2010-08-10 15:32:14.478241628 +0400
 +++ b/storage/innodb_plugin/include/srv0srv.h	2010-08-10 15:32:14.936991959 +0400
-@@ -673,6 +673,7 @@
+@@ -675,6 +675,7 @@
  	ulint innodb_buffer_pool_write_requests;/*!< srv_buf_pool_write_requests */
  	ulint innodb_buffer_pool_read_ahead;	/*!< srv_read_ahead */
  	ulint innodb_buffer_pool_read_ahead_evicted;/*!< srv_read_ahead evicted*/
@@ -53,7 +53,7 @@
 diff -ruN a/storage/innodb_plugin/srv/srv0srv.c b/storage/innodb_plugin/srv/srv0srv.c
 --- a/storage/innodb_plugin/srv/srv0srv.c	2010-08-10 15:32:14.478241628 +0400
 +++ b/storage/innodb_plugin/srv/srv0srv.c	2010-08-10 15:32:14.936991959 +0400
-@@ -438,7 +438,7 @@
+@@ -440,7 +440,7 @@
  static ulint	srv_n_rows_updated_old		= 0;
  static ulint	srv_n_rows_deleted_old		= 0;
  static ulint	srv_n_rows_read_old		= 0;
@@ -62,7 +62,7 @@
  UNIV_INTERN ulint		srv_n_lock_wait_count		= 0;
  UNIV_INTERN ulint		srv_n_lock_wait_current_count	= 0;
  UNIV_INTERN ib_int64_t	srv_n_lock_wait_time		= 0;
-@@ -2149,6 +2149,8 @@
+@@ -2151,6 +2151,8 @@
  		= UT_LIST_GET_LEN(buf_pool->flush_list);
  	export_vars.innodb_buffer_pool_pages_free
  		= UT_LIST_GET_LEN(buf_pool->free);

================================================================
Index: packages/mysql/mysql-innodb_fix_misc.patch
diff -u packages/mysql/mysql-innodb_fix_misc.patch:1.1.2.2 packages/mysql/mysql-innodb_fix_misc.patch:1.1.2.3
--- packages/mysql/mysql-innodb_fix_misc.patch:1.1.2.2	Sat Feb 19 23:35:53 2011
+++ packages/mysql/mysql-innodb_fix_misc.patch	Tue Mar  8 09:52:41 2011
@@ -2,13 +2,308 @@
 # introduced : 11 or before
 # maintainer : Yasufumi
 #
+# Bug fix for
+# http://bugs.mysql.com/56433 (always: because good for all users, and safe)
+# and http://bugs.mysql.com/51325 (optional: innodb_lazy_drop_table)
+# were added. They may be removed in the future when will be fixed officially.
+#
 #!!! notice !!!
 # Any small change to this file in the main branch
 # should be done or reviewed by the maintainer!
+diff -ruN a/storage/innodb_plugin/buf/buf0buf.c b/storage/innodb_plugin/buf/buf0buf.c
+--- a/storage/innodb_plugin/buf/buf0buf.c	2011-02-21 20:31:57.781983359 +0900
++++ b/storage/innodb_plugin/buf/buf0buf.c	2011-02-21 20:32:39.523946003 +0900
+@@ -3224,6 +3224,7 @@
+ 		bpage->state	= BUF_BLOCK_ZIP_PAGE;
+ 		bpage->space	= space;
+ 		bpage->offset	= offset;
++		bpage->space_was_being_deleted = FALSE;
+ 
+ #ifdef UNIV_DEBUG
+ 		bpage->in_page_hash = FALSE;
+diff -ruN a/storage/innodb_plugin/buf/buf0flu.c b/storage/innodb_plugin/buf/buf0flu.c
+--- a/storage/innodb_plugin/buf/buf0flu.c	2011-02-21 20:31:57.784983260 +0900
++++ b/storage/innodb_plugin/buf/buf0flu.c	2011-02-21 20:32:39.524915732 +0900
+@@ -367,7 +367,7 @@
+ 
+ 	if (UNIV_LIKELY(bpage->in_LRU_list && buf_page_in_file(bpage))) {
+ 
+-		return(bpage->oldest_modification == 0
++		return((bpage->oldest_modification == 0 || bpage->space_was_being_deleted)
+ 		       && buf_page_get_io_fix(bpage) == BUF_IO_NONE
+ 		       && bpage->buf_fix_count == 0);
+ 	}
+@@ -406,6 +406,13 @@
+ 	    && buf_page_get_io_fix(bpage) == BUF_IO_NONE) {
+ 		ut_ad(bpage->in_flush_list);
+ 
++		if (bpage->space_was_being_deleted) {
++			/* should be removed from flush_list here */
++			/* because buf_flush_try_neighbors() cannot flush without fil_space_get_size(space) */
++			buf_flush_remove(bpage);
++			return(FALSE);
++		}
++
+ 		if (flush_type != BUF_FLUSH_LRU) {
+ 
+ 			return(TRUE);
+diff -ruN a/storage/innodb_plugin/buf/buf0lru.c b/storage/innodb_plugin/buf/buf0lru.c
+--- a/storage/innodb_plugin/buf/buf0lru.c	2011-02-21 20:31:57.451983310 +0900
++++ b/storage/innodb_plugin/buf/buf0lru.c	2011-02-21 20:32:39.526949096 +0900
+@@ -530,6 +530,30 @@
+ 	}
+ }
+ 
++/******************************************************************//**
++*/
++UNIV_INTERN
++void
++buf_LRU_mark_space_was_deleted(
++/*===========================*/
++	ulint	id)	/*!< in: space id */
++{
++	buf_page_t*	bpage;
++
++	mutex_enter(&LRU_list_mutex);
++
++	bpage = UT_LIST_GET_FIRST(buf_pool->LRU);
++
++	while (bpage != NULL) {
++		if (buf_page_get_space(bpage) == id) {
++			bpage->space_was_being_deleted = TRUE;
++		}
++		bpage = UT_LIST_GET_NEXT(LRU, bpage);
++	}
++
++	mutex_exit(&LRU_list_mutex);
++}
++
+ /********************************************************************//**
+ Insert a compressed block into buf_pool->zip_clean in the LRU order. */
+ UNIV_INTERN
+@@ -1498,6 +1522,10 @@
+ 		return(BUF_LRU_NOT_FREED);
+ 	}
+ 
++	if (bpage->space_was_being_deleted && bpage->oldest_modification != 0) {
++		buf_flush_remove(bpage);
++	}
++
+ #ifdef UNIV_IBUF_COUNT_DEBUG
+ 	ut_a(ibuf_count_get(bpage->space, bpage->offset) == 0);
+ #endif /* UNIV_IBUF_COUNT_DEBUG */
+diff -ruN a/storage/innodb_plugin/fil/fil0fil.c b/storage/innodb_plugin/fil/fil0fil.c
+--- a/storage/innodb_plugin/fil/fil0fil.c	2011-02-21 20:31:57.838984412 +0900
++++ b/storage/innodb_plugin/fil/fil0fil.c	2011-02-21 20:32:39.528914782 +0900
+@@ -242,6 +242,7 @@
+ struct fil_system_struct {
+ #ifndef UNIV_HOTBACKUP
+ 	mutex_t		mutex;		/*!< The mutex protecting the cache */
++	mutex_t		file_extend_mutex;
+ #endif /* !UNIV_HOTBACKUP */
+ 	hash_table_t*	spaces;		/*!< The hash table of spaces in the
+ 					system; they are hashed on the space
+@@ -816,7 +817,7 @@
+ 	ut_ad(node && system);
+ 	ut_ad(mutex_own(&(system->mutex)));
+ 	ut_a(node->open);
+-	ut_a(node->n_pending == 0);
++	ut_a(node->n_pending == 0 || srv_lazy_drop_table);
+ 	ut_a(node->n_pending_flushes == 0);
+ 	ut_a(node->modification_counter == node->flush_counter);
+ 
+@@ -1028,7 +1029,7 @@
+ 	ut_ad(node && system && space);
+ 	ut_ad(mutex_own(&(system->mutex)));
+ 	ut_a(node->magic_n == FIL_NODE_MAGIC_N);
+-	ut_a(node->n_pending == 0);
++	ut_a(node->n_pending == 0 || srv_lazy_drop_table);
+ 
+ 	if (node->open) {
+ 		/* We fool the assertion in fil_node_close_file() to think
+@@ -1549,6 +1550,7 @@
+ 	fil_system = mem_zalloc(sizeof(fil_system_t));
+ 
+ 	mutex_create(&fil_system->mutex, SYNC_ANY_LATCH);
++	mutex_create(&fil_system->file_extend_mutex, SYNC_OUTER_ANY_LATCH);
+ 
+ 	fil_system->spaces = hash_create(hash_size);
+ 	fil_system->name_hash = hash_create(hash_size);
+@@ -2295,7 +2297,11 @@
+ 	completely and permanently. The flag is_being_deleted also prevents
+ 	fil_flush() from being applied to this tablespace. */
+ 
++	if (srv_lazy_drop_table) {
++		buf_LRU_mark_space_was_deleted(id);
++	} else {
+ 	buf_LRU_invalidate_tablespace(id);
++	}
+ #endif
+ 	/* printf("Deleting tablespace %s id %lu\n", space->name, id); */
+ 
+@@ -4348,6 +4354,10 @@
+ 	ulint		page_size;
+ 	ibool		success		= TRUE;
+ 
++	/* file_extend_mutex is for http://bugs.mysql.com/56433 */
++	/* to protect from the other fil_extend_space_to_desired_size() */
++	/* during temprary releasing &fil_system->mutex */
++	mutex_enter(&fil_system->file_extend_mutex);
+ 	fil_mutex_enter_and_prepare_for_io(space_id);
+ 
+ 	space = fil_space_get_by_id(space_id);
+@@ -4359,6 +4369,7 @@
+ 		*actual_size = space->size;
+ 
+ 		mutex_exit(&fil_system->mutex);
++		mutex_exit(&fil_system->file_extend_mutex);
+ 
+ 		return(TRUE);
+ 	}
+@@ -4391,6 +4402,8 @@
+ 		offset_low  = ((start_page_no - file_start_page_no)
+ 			       % (4096 * ((1024 * 1024) / page_size)))
+ 			* page_size;
++
++		mutex_exit(&fil_system->mutex);
+ #ifdef UNIV_HOTBACKUP
+ 		success = os_file_write(node->name, node->handle, buf,
+ 					offset_low, offset_high,
+@@ -4400,8 +4413,10 @@
+ 				 node->name, node->handle, buf,
+ 				 offset_low, offset_high,
+ 				 page_size * n_pages,
+-				 NULL, NULL, NULL);
++				 NULL, NULL, space_id, NULL);
+ #endif
++		mutex_enter(&fil_system->mutex);
++
+ 		if (success) {
+ 			node->size += n_pages;
+ 			space->size += n_pages;
+@@ -4447,6 +4462,7 @@
+ 	printf("Extended %s to %lu, actual size %lu pages\n", space->name,
+ 	size_after_extend, *actual_size); */
+ 	mutex_exit(&fil_system->mutex);
++	mutex_exit(&fil_system->file_extend_mutex);
+ 
+ 	fil_flush(space_id);
+ 
+@@ -4811,6 +4827,22 @@
+ 		srv_data_written+= len;
+ 	}
+ 
++	/* if the table space was already deleted, space might not exist already. */
++	if (message
++	    && space_id < SRV_LOG_SPACE_FIRST_ID
++	    && ((buf_page_t*)message)->space_was_being_deleted) {
++
++		if (mode == OS_AIO_NORMAL) {
++			buf_page_io_complete(message, trx);
++			return(DB_SUCCESS); /*fake*/
++		}
++		if (type == OS_FILE_READ) {
++			return(DB_TABLESPACE_DELETED);
++		} else {
++			return(DB_SUCCESS); /*fake*/
++		}
++	}
++
+ 	/* Reserve the fil_system mutex and make sure that we can open at
+ 	least one file while holding it, if the file is not already open */
+ 
+@@ -4940,10 +4972,24 @@
+ #else
+ 	/* Queue the aio request */
+ 	ret = os_aio(type, mode | wake_later, node->name, node->handle, buf,
+-		     offset_low, offset_high, len, node, message, trx);
++		     offset_low, offset_high, len, node, message, space_id, trx);
+ #endif
+ 	} /**/
+ 
++	/* if the table space was already deleted, space might not exist already. */
++	if (message
++	    && space_id < SRV_LOG_SPACE_FIRST_ID
++	    && ((buf_page_t*)message)->space_was_being_deleted) {
++
++		if (mode == OS_AIO_SYNC) {
++			if (type == OS_FILE_READ) {
++				return(DB_TABLESPACE_DELETED);
++			} else {
++				return(DB_SUCCESS); /*fake*/
++			}
++		}
++	}
++
+ 	ut_a(ret);
+ 
+ 	if (mode == OS_AIO_SYNC) {
+@@ -5043,6 +5089,7 @@
+ 	fil_node_t*	fil_node;
+ 	void*		message;
+ 	ulint		type;
++	ulint		space_id = 0;
+ 
+ 	ut_ad(fil_validate());
+ 
+@@ -5050,7 +5097,7 @@
+ 		srv_set_io_thread_op_info(segment, "native aio handle");
+ #ifdef WIN_ASYNC_IO
+ 		ret = os_aio_windows_handle(segment, 0, &fil_node,
+-					    &message, &type);
++					    &message, &type, &space_id);
+ #else
+ 		ret = 0; /* Eliminate compiler warning */
+ 		ut_error;
+@@ -5059,7 +5106,22 @@
+ 		srv_set_io_thread_op_info(segment, "simulated aio handle");
+ 
+ 		ret = os_aio_simulated_handle(segment, &fil_node,
+-					      &message, &type);
++					      &message, &type, &space_id);
++	}
++
++	/* if the table space was already deleted, fil_node might not exist already. */
++	if (message
++	    && space_id < SRV_LOG_SPACE_FIRST_ID
++	    && ((buf_page_t*)message)->space_was_being_deleted) {
++
++		/* intended not to be uncompress read page */
++		ut_a(buf_page_get_io_fix(message) == BUF_IO_WRITE
++		     || !buf_page_get_zip_size(message)
++		     || buf_page_get_state(message) != BUF_BLOCK_FILE_PAGE);
++
++		srv_set_io_thread_op_info(segment, "complete io for buf page");
++		buf_page_io_complete(message, NULL);
++		return;
+ 	}
+ 
+ 	ut_a(ret);
 diff -ruN a/storage/innodb_plugin/handler/ha_innodb.cc b/storage/innodb_plugin/handler/ha_innodb.cc
 --- a/storage/innodb_plugin/handler/ha_innodb.cc	2010-08-27 16:50:59.626327847 +0900
 +++ b/storage/innodb_plugin/handler/ha_innodb.cc	2010-08-27 16:55:20.281021252 +0900
-@@ -11783,7 +11783,7 @@
+@@ -11685,6 +11685,12 @@
+   "except for the deletion.",
+   NULL, NULL, 0, 0, 1, 0);
+ 
++static MYSQL_SYSVAR_ULONG(lazy_drop_table, srv_lazy_drop_table,
++  PLUGIN_VAR_RQCMDARG,
++  "At deleting tablespace, only miminum needed processes at the time are done. "
++  "e.g. for http://bugs.mysql.com/51325",
++  NULL, NULL, 0, 0, 1, 0);
++
+ static struct st_mysql_sys_var* innobase_system_variables[]= {
+   MYSQL_SYSVAR(page_size),
+   MYSQL_SYSVAR(log_block_size),
+@@ -11774,6 +11780,7 @@
+   MYSQL_SYSVAR(auto_lru_dump),
+   MYSQL_SYSVAR(use_purge_thread),
+   MYSQL_SYSVAR(pass_corrupt_table),
++  MYSQL_SYSVAR(lazy_drop_table),
+   NULL
+ };
+ 
+@@ -11783,7 +11790,7 @@
    &innobase_storage_engine,
    innobase_hton_name,
    "Innobase Oy",
@@ -17,6 +312,99 @@
    PLUGIN_LICENSE_GPL,
    innobase_init, /* Plugin Init */
    NULL, /* Plugin Deinit */
+diff -ruN a/storage/innodb_plugin/include/buf0buf.h b/storage/innodb_plugin/include/buf0buf.h
+--- a/storage/innodb_plugin/include/buf0buf.h	2011-02-21 20:31:57.863983187 +0900
++++ b/storage/innodb_plugin/include/buf0buf.h	2011-02-21 20:32:39.537912716 +0900
+@@ -1156,6 +1156,7 @@
+ 					0 if the block was never accessed
+ 					in the buffer pool */
+ 	/* @} */
++	ibool		space_was_being_deleted;
+ 	ibool		is_corrupt;
+ # ifdef UNIV_DEBUG_FILE_ACCESSES
+ 	ibool		file_page_was_freed;
+diff -ruN a/storage/innodb_plugin/include/buf0buf.ic b/storage/innodb_plugin/include/buf0buf.ic
+--- a/storage/innodb_plugin/include/buf0buf.ic	2011-02-21 20:31:57.725983812 +0900
++++ b/storage/innodb_plugin/include/buf0buf.ic	2011-02-21 20:32:39.538913061 +0900
+@@ -384,6 +384,7 @@
+ 	buf_block_set_state(block, BUF_BLOCK_FILE_PAGE);
+ 	block->page.space = space;
+ 	block->page.offset = page_no;
++	block->page.space_was_being_deleted = FALSE;
+ }
+ 
+ /*********************************************************************//**
+diff -ruN a/storage/innodb_plugin/include/buf0lru.h b/storage/innodb_plugin/include/buf0lru.h
+--- a/storage/innodb_plugin/include/buf0lru.h	2011-02-21 20:31:57.480924269 +0900
++++ b/storage/innodb_plugin/include/buf0lru.h	2011-02-21 20:32:39.539912965 +0900
+@@ -84,6 +84,13 @@
+ buf_LRU_invalidate_tablespace(
+ /*==========================*/
+ 	ulint	id);	/*!< in: space id */
++/******************************************************************//**
++*/
++UNIV_INTERN
++void
++buf_LRU_mark_space_was_deleted(
++/*===========================*/
++	ulint	id);	/*!< in: space id */
+ /********************************************************************//**
+ Insert a compressed block into buf_pool->zip_clean in the LRU order. */
+ UNIV_INTERN
+diff -ruN a/storage/innodb_plugin/include/os0file.h b/storage/innodb_plugin/include/os0file.h
+--- a/storage/innodb_plugin/include/os0file.h	2011-02-21 20:31:57.870987755 +0900
++++ b/storage/innodb_plugin/include/os0file.h	2011-02-21 20:32:39.540912738 +0900
+@@ -657,6 +657,7 @@
+ 				(can be used to identify a completed
+ 				aio operation); ignored if mode is
+ 				OS_AIO_SYNC */
++	ulint		space_id,
+ 	trx_t*		trx);
+ /************************************************************************//**
+ Wakes up all async i/o threads so that they know to exit themselves in
+@@ -717,7 +718,8 @@
+ 				parameters are valid and can be used to
+ 				restart the operation, for example */
+ 	void**	message2,
+-	ulint*	type);		/*!< out: OS_FILE_WRITE or ..._READ */
++	ulint*	type,		/*!< out: OS_FILE_WRITE or ..._READ */
++	ulint*	space_id);
+ #endif
+ 
+ /**********************************************************************//**
+@@ -739,7 +741,8 @@
+ 				parameters are valid and can be used to
+ 				restart the operation, for example */
+ 	void**	message2,
+-	ulint*	type);		/*!< out: OS_FILE_WRITE or ..._READ */
++	ulint*	type,		/*!< out: OS_FILE_WRITE or ..._READ */
++	ulint*	space_id);
+ /**********************************************************************//**
+ Validates the consistency of the aio system.
+ @return	TRUE if ok */
+diff -ruN a/storage/innodb_plugin/include/srv0srv.h b/storage/innodb_plugin/include/srv0srv.h
+--- a/storage/innodb_plugin/include/srv0srv.h	2011-02-21 20:31:57.824983518 +0900
++++ b/storage/innodb_plugin/include/srv0srv.h	2011-02-21 20:32:39.541913033 +0900
+@@ -235,6 +235,8 @@
+ 
+ extern ulint	srv_extra_rsegments;
+ extern ulint	srv_dict_size_limit;
++
++extern ulint	srv_lazy_drop_table;
+ /*-------------------------------------------*/
+ 
+ extern ulint	srv_n_rows_inserted;
+diff -ruN a/storage/innodb_plugin/include/sync0sync.h b/storage/innodb_plugin/include/sync0sync.h
+--- a/storage/innodb_plugin/include/sync0sync.h	2011-02-21 20:31:57.382982949 +0900
++++ b/storage/innodb_plugin/include/sync0sync.h	2011-02-21 20:32:39.543913340 +0900
+@@ -496,6 +496,7 @@
+ #define	SYNC_BUF_POOL		150
+ #define SYNC_BUF_FLUSH_LIST	149
+ #define SYNC_DOUBLEWRITE	140
++#define	SYNC_OUTER_ANY_LATCH	136
+ #define	SYNC_ANY_LATCH		135
+ #define SYNC_THR_LOCAL		133
+ #define	SYNC_MEM_HASH		131
 diff -ruN a/storage/innodb_plugin/include/univ.i b/storage/innodb_plugin/include/univ.i
 --- a/storage/innodb_plugin/include/univ.i	2010-04-30 16:37:05.000000000 +0900
 +++ b/storage/innodb_plugin/include/univ.i	2010-04-30 16:41:46.000000000 +0900
@@ -63,6 +451,88 @@
  		recv_sys->found_corrupt_log = TRUE;
  
  		return(NULL);
+diff -ruN a/storage/innodb_plugin/os/os0file.c b/storage/innodb_plugin/os/os0file.c
+--- a/storage/innodb_plugin/os/os0file.c	2011-02-21 20:31:57.437945953 +0900
++++ b/storage/innodb_plugin/os/os0file.c	2011-02-21 20:32:39.546945763 +0900
+@@ -142,6 +142,7 @@
+ //					made and only the slot message
+ //					needs to be passed to the caller
+ //					of os_aio_simulated_handle */
++	ulint		space_id;
+ 	fil_node_t*	message1;	/*!< message which is given by the */
+ 	void*		message2;	/*!< the requester of an aio operation
+ 					and which can be used to identify
+@@ -3390,7 +3391,8 @@
+ 				offset */
+ 	ulint		offset_high, /*!< in: most significant 32 bits of
+ 				offset */
+-	ulint		len)	/*!< in: length of the block to read or write */
++	ulint		len,	/*!< in: length of the block to read or write */
++	ulint		space_id)
+ {
+ 	os_aio_slot_t*	slot;
+ 	ulint		i;
+@@ -3472,6 +3474,7 @@
+ 	slot->offset_high = offset_high;
+ //	slot->io_already_done = FALSE;
+ 	slot->status = OS_AIO_NOT_ISSUED;
++	slot->space_id = space_id;
+ 
+ #ifdef WIN_ASYNC_IO
+ 	control = &(slot->control);
+@@ -3680,6 +3683,7 @@
+ 				(can be used to identify a completed
+ 				aio operation); ignored if mode is
+ 				OS_AIO_SYNC */
++	ulint		space_id,
+ 	trx_t*		trx)
+ {
+ 	os_aio_array_t*	array;
+@@ -3762,7 +3766,7 @@
+ 		trx->io_read += n;
+ 	}
+ 	slot = os_aio_array_reserve_slot(type, array, message1, message2, file,
+-					 name, buf, offset, offset_high, n);
++					 name, buf, offset, offset_high, n, space_id);
+ 	if (type == OS_FILE_READ) {
+ 		if (os_aio_use_native_aio) {
+ #ifdef WIN_ASYNC_IO
+@@ -3872,7 +3876,8 @@
+ 				parameters are valid and can be used to
+ 				restart the operation, for example */
+ 	void**	message2,
+-	ulint*	type)		/*!< out: OS_FILE_WRITE or ..._READ */
++	ulint*	type,		/*!< out: OS_FILE_WRITE or ..._READ */
++	ulint*	space_id)
+ {
+ 	ulint		orig_seg	= segment;
+ 	os_aio_array_t*	array;
+@@ -3926,6 +3931,7 @@
+ 	*message2 = slot->message2;
+ 
+ 	*type = slot->type;
++	*space_id = slot->space_id;
+ 
+ 	if (ret && len == slot->len) {
+ 		ret_val = TRUE;
+@@ -4009,7 +4015,8 @@
+ 				parameters are valid and can be used to
+ 				restart the operation, for example */
+ 	void**	message2,
+-	ulint*	type)		/*!< out: OS_FILE_WRITE or ..._READ */
++	ulint*	type,		/*!< out: OS_FILE_WRITE or ..._READ */
++	ulint*	space_id)
+ {
+ 	os_aio_array_t*	array;
+ 	ulint		segment;
+@@ -4300,6 +4307,7 @@
+ 	*message2 = slot->message2;
+ 
+ 	*type = slot->type;
++	*space_id = slot->space_id;
+ 
+ 	os_mutex_exit(array->mutex);
+ 
 diff -ruN a/storage/innodb_plugin/row/row0mysql.c b/storage/innodb_plugin/row/row0mysql.c
 --- a/storage/innodb_plugin/row/row0mysql.c	2010-07-20 16:33:04.097866666 +0900
 +++ b/storage/innodb_plugin/row/row0mysql.c	2010-07-20 16:33:53.995828763 +0900
@@ -130,6 +600,18 @@
  			trx_print(stderr, trx, 600);
  			fputc('\n', stderr);
  			ut_error;
+diff -ruN a/storage/innodb_plugin/srv/srv0srv.c b/storage/innodb_plugin/srv/srv0srv.c
+--- a/storage/innodb_plugin/srv/srv0srv.c	2011-02-21 20:31:57.900982316 +0900
++++ b/storage/innodb_plugin/srv/srv0srv.c	2011-02-21 20:32:39.549912950 +0900
+@@ -414,6 +414,8 @@
+ 
+ UNIV_INTERN ulint	srv_extra_rsegments = 0; /* extra rseg for users */
+ UNIV_INTERN ulint	srv_dict_size_limit = 0;
++
++UNIV_INTERN ulint	srv_lazy_drop_table = 0;
+ /*-------------------------------------------*/
+ UNIV_INTERN ulong	srv_n_spin_wait_rounds	= 30;
+ UNIV_INTERN ulong	srv_n_free_tickets_to_enter = 500;
 diff -ruN a/storage/innodb_plugin/srv/srv0start.c b/storage/innodb_plugin/srv/srv0start.c
 --- a/storage/innodb_plugin/srv/srv0start.c	2010-04-30 16:37:05.000000000 +0900
 +++ b/storage/innodb_plugin/srv/srv0start.c	2010-04-30 16:41:46.000000000 +0900
@@ -142,6 +624,17 @@
  			"log sequence number %llu\n",
  			INNODB_VERSION_STR, srv_start_lsn);
  	}
+diff -ruN a/storage/innodb_plugin/sync/sync0sync.c b/storage/innodb_plugin/sync/sync0sync.c
+--- a/storage/innodb_plugin/sync/sync0sync.c	2011-02-25 14:09:57.710270419 +0900
++++ b/storage/innodb_plugin/sync/sync0sync.c	2011-02-25 14:12:20.138232965 +0900
+@@ -1161,6 +1161,7 @@
+ 	case SYNC_LOG:
+ 	case SYNC_THR_LOCAL:
+ 	case SYNC_ANY_LATCH:
++	case SYNC_OUTER_ANY_LATCH:
+ 	case SYNC_TRX_SYS_HEADER:
+ 	case SYNC_FILE_FORMAT_TAG:
+ 	case SYNC_DOUBLEWRITE:
 diff -ruN a/storage/innodb_plugin/trx/trx0purge.c b/storage/innodb_plugin/trx/trx0purge.c
 --- a/storage/innodb_plugin/trx/trx0purge.c	2010-07-21 14:52:46.538653893 +0900
 +++ b/storage/innodb_plugin/trx/trx0purge.c	2010-07-21 14:57:46.505530034 +0900

================================================================
Index: packages/mysql/mysql-innodb_swap_builtin_plugin.patch
diff -u packages/mysql/mysql-innodb_swap_builtin_plugin.patch:1.1.2.2 packages/mysql/mysql-innodb_swap_builtin_plugin.patch:1.1.2.3
--- packages/mysql/mysql-innodb_swap_builtin_plugin.patch:1.1.2.2	Sat Feb 19 23:35:53 2011
+++ packages/mysql/mysql-innodb_swap_builtin_plugin.patch	Tue Mar  8 09:52:41 2011
@@ -6,114 +6,6 @@
 # Any small change to this file in the main branch
 # should be done or reviewed by the maintainer!
 diff -ruN a/configure b/configure
---- a/configure	2010-04-06 23:13:20.000000000 +0900
-+++ b/configure	2010-04-28 19:12:59.000000000 +0900
-@@ -2056,13 +2056,13 @@
-    === InnoDB Storage Engine ===
-   Plugin Name:      innobase
-   Description:      Transactional Tables using InnoDB
--  Supports build:   static and dynamic
-+  Supports build:   dynamic
-   Configurations:   max, max-no-ndb
- 
-    === InnoDB Storage Engine ===
-   Plugin Name:      innodb_plugin
-   Description:      Transactional Tables using InnoDB
--  Supports build:   dynamic
-+  Supports build:   static and dynamic
<<Diff was trimmed, longer than 597 lines>>

---- CVS-web:
    http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/mysql/mysql-innodb_deadlock_count.patch?r1=1.1.2.2&r2=1.1.2.3&f=u
    http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/mysql/mysql-innodb_fix_misc.patch?r1=1.1.2.2&r2=1.1.2.3&f=u
    http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/mysql/mysql-innodb_swap_builtin_plugin.patch?r1=1.1.2.2&r2=1.1.2.3&f=u
    http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/mysql/mysql-userstat.patch?r1=1.2.2.1&r2=1.2.2.2&f=u
    http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/mysql/mysql.spec?r1=1.496.2.5&r2=1.496.2.6&f=u
    http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/mysql/percona.sh?r1=1.7&r2=1.7.4.1&f=u



More information about the pld-cvs-commit mailing list