[Date Prev][Date Next] [Chronological] [Thread] [Top]

Re: (ITS#7682) LMDB: [PATCH] mdb_env_copy should retry open() if O_DIRECT fails



This was fixed in LMDB 0.9.9, except:  If both O_DIRECT and
F_NOCACHE are #defined, both are used.  Looks a bit strange.
Maybe just one should be used in that case.  (Which?)  Also I'm
still wondering if env_open needs to fail if F_NOCACHE fails.

Anyway, maybe it should be something like this.  The "else {}"
is in case O_DIRECT is an unsupported dummy definiton:

#ifdef O_DIRECT
    if ((rc = fcntl(newfd, F_GETFL)) != -1)
        (void) fcntl(newfd, F_SETFL, rc | O_DIRECT);
    else
#endif
    {
#ifdef F_NOCACHE    /* __APPLE__ */
        (void) fcntl(newfd, F_NOCACHE, 1);
#endif
    }

-- 
Hallvard