0
0
Fork 0
mirror of https://github.com/matrix-construct/construct synced 2024-06-26 05:48:20 +02:00

ircd::fs: Add an evict() front to cache interface; add preconditions.

This commit is contained in:
Jason Volk 2019-05-03 04:34:16 -07:00
parent e75c9fe54c
commit d9812f3e86
2 changed files with 31 additions and 1 deletions

View file

@ -32,6 +32,9 @@ namespace ircd::fs
// Prefetch data for subsequent read(); offset given in opts (WILLNEED).
size_t prefetch(const fd &, const size_t &, const read_opts & = read_opts_default);
// Evict data which won't be read anymore (DONTNEED).
size_t evict(const fd &, const size_t &, const read_opts & = read_opts_default);
}
/// Options for a read operation

View file

@ -486,14 +486,31 @@ ircd::fs::read_opts
const ircd::fs::read_opts_default
{};
size_t
ircd::fs::evict(const fd &fd,
const size_t &count,
const read_opts &opts)
{
#if defined(POSIX_FADV_DONTNEED)
return advise(fd, count, opts, POSIX_FADV_DONTNEED);
#else
return 0UL;
#endif
}
size_t
ircd::fs::prefetch(const fd &fd,
const size_t &count,
const read_opts &opts)
{
return advise(fd, count, opts, POSIX_FADV_WILLNEED);
#if defined(POSIX_FADV_WILLNEED)
return advise(fd, count, opts, POSIX_FADV_WILLNEED);
#else
return 0UL;
#endif
}
#if defined(HAVE_POSIX_FADVISE)
size_t
ircd::fs::advise(const fd &fd,
const size_t &count,
@ -518,6 +535,16 @@ ircd::fs::advise(const fd &fd,
while(off + cnt < opts.offset + count);
return count;
}
#else
size_t
ircd::fs::advise(const fd &fd,
const size_t &count,
const read_opts &opts,
const int &advice)
{
return 0UL;
}
#endif
bool
ircd::fs::fincore(const fd &fd,