CURRENT branch

Russ Allbery rra at stanford.edu
Mon May 18 04:08:59 UTC 2009


Julien ÉLIE <julien at trigofacile.com> writes:

> When we run tdx_search_open(), the remap is now done only when the
> high water mark becomes superior to the mapped high water mark.  Here,
> high water mark = 4 is not superior to the mapped high water mark = 5.
> Therefore, tdx_search() does not see it and ends up with that error.
>
> It is what happens.  The articles would be seen by tdx_search() if the
> DAT file was remapped by tdx_search_open(), but we have to change the
> logic which triggers that:
>
>    if (end > data->high && high > data->high) {
>        unmap_index(data);
>        map_index(data);
>        data->high = high;
>        unmap_data(data);
>    }
>
> Maybe a boolean in the group_data structure to say whether the file should
> be remapped?  (The boolean would be set during tdx_data_add().)

I think what your current fix will do is force the file to be remapped
any time any article write has happened except for a write at the
high-water mark and a search or article read that isn't at the
high-water mark.  Note that whenever you remap, you break any static
searches (that's what OVSTATICSEARCH is all about), so the comment in
the commit is a little wrong.

I think that the patch does more than is necessary.  It should be fine
if we fill in a hole in the overview below high; the active mmap should
still see that change on disk.  The problem, and what I suspect the test
is triggering, is when we've *rebased* the overview because we wrote
below the overview base number rather than just anything below the
high-water mark.  I suspect that if we just remapped when we rebased,
that would also solve the problem.

We still break the guarantee of OVSTATICSEARCH if there's an outstanding
search, though.  I wonder if we should really keep track of whether
there's an open search and change behavior in that case.

-- 
Russ Allbery (rra at stanford.edu)             <http://www.eyrie.org/~eagle/>

    Please send questions to the list rather than mailing me directly.
     <http://www.eyrie.org/~eagle/faqs/questions.html> explains why.



More information about the inn-workers mailing list