mirror of
https://github.com/MariaDB/server.git
synced 2025-01-19 21:42:35 +01:00
Bug#25460 - High concurrency MyISAM access causes severe mysqld crash.
Decreased code duplication by calling memory mapping function through mi_extra().
This commit is contained in:
parent
5f235d9dc2
commit
62171d25cf
1 changed files with 8 additions and 16 deletions
|
@ -506,22 +506,6 @@ MI_INFO *mi_open(const char *name, int mode, uint open_flags)
|
|||
share->data_file_type = DYNAMIC_RECORD;
|
||||
my_afree((gptr) disk_cache);
|
||||
mi_setup_functions(share);
|
||||
if (open_flags & HA_OPEN_MMAP)
|
||||
{
|
||||
info.s= share;
|
||||
if (mi_dynmap_file(&info, share->state.state.data_file_length))
|
||||
{
|
||||
/* purecov: begin inspected */
|
||||
/* Ignore if mmap fails. Use file I/O instead. */
|
||||
DBUG_PRINT("warning", ("mmap failed: errno: %d", errno));
|
||||
/* purecov: end */
|
||||
}
|
||||
else
|
||||
{
|
||||
share->file_read= mi_mmap_pread;
|
||||
share->file_write= mi_mmap_pwrite;
|
||||
}
|
||||
}
|
||||
share->is_log_table= FALSE;
|
||||
#ifdef THREAD
|
||||
thr_lock_init(&share->lock);
|
||||
|
@ -552,6 +536,14 @@ MI_INFO *mi_open(const char *name, int mode, uint open_flags)
|
|||
}
|
||||
}
|
||||
#endif
|
||||
/*
|
||||
Memory mapping can only be requested after initializing intern_lock.
|
||||
*/
|
||||
if (open_flags & HA_OPEN_MMAP)
|
||||
{
|
||||
info.s= share;
|
||||
mi_extra(&info, HA_EXTRA_MMAP, 0);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue