On Thu, May 11, 2017 at 11:25 AM, jan <jan.lindstrom@mariadb.com> wrote:
revision-id: 8edbb1117a9e1fd81fbd08b8f1d06c72efe38f44 (mariadb-10.2.5-168-g8edbb1117a9)
parent(s): f4df8c00c957146f04db031f1f9f80aab229d1d2
author: Jan Lindström
committer: Jan Lindström
timestamp: 2017-05-11 11:15:37 +0300
message:

MDEV-12741: innodb.ibuf_not_empty failed in buildbot with "InnoDB: Trying to do I/O to a tablespace which does not exist"

Background thread is doing ibuf merge, in buf0rea.cc buf_read_ibuf_merge_pages().
It first tries to get page_size and if space is not found it deletes them, but
as we do not hold any mutexes, space can be marked as stopped between that
and buf_read_page_low() for same space. This naturally leads seen error
message on log.

buf_read_page_low(): Add parameter ignore_missing_space = false that
is passed to fil_io()
[snip]
@@ -178,7 +180,7 @@ buf_read_page_low(

        *err = fil_io(
                request, sync, page_id, page_size, 0, page_size.physical(),
-               dst, bpage);
+               dst, bpage, ignore_missing_space);

        if (sync) {
                thd_wait_end(NULL);

Can you please add the parameter to the IORequest? It would seem to be a more appropriate place for this.
(Ideally, fil_io() would only take the request as a parameter, but we do not want to do such a big refactoring right now.)

Marko