0
0
Fork 0
mirror of https://github.com/matrix-construct/construct synced 2024-06-25 21:38:18 +02:00

ircd::fs::aio: Fix bitrot assertion; simplify aio related.

This commit is contained in:
Jason Volk 2019-08-10 19:16:34 -07:00
parent 84d4b091fe
commit 588b0aa9bc
3 changed files with 16 additions and 48 deletions

View file

@ -137,7 +137,6 @@ ircd::fs::support_rwf_write_life
//
ircd::fs::init::init()
:_aio_{}
{
debug_support();
debug_paths();
@ -483,10 +482,10 @@ ircd::fs::flush(const fd &fd,
#ifdef IRCD_USE_AIO
if(aio::system && opts.aio)
{
if(!opts.metadata && aio::support_fdsync)
return aio::fdsync(fd, opts);
if(aio::support_fdsync && !opts.metadata)
return aio::fsync(fd, opts);
if(aio::support_fsync)
if(aio::support_fsync && opts.metadata)
return aio::fsync(fd, opts);
}
#endif
@ -1116,7 +1115,7 @@ ircd::fs::write(const fd &fd,
assert(opts.op == op::WRITE);
#ifdef IRCD_USE_AIO
if(likely(aio::system) && opts.aio)
if(aio::system && opts.aio)
return aio::write(fd, iov, opts);
#endif
@ -1335,7 +1334,10 @@ ircd::fs::reflect(const ready &ready)
decltype(ircd::fs::aio::support)
extern __attribute__((weak))
ircd::fs::aio::support;
ircd::fs::aio::support
{
false
};
decltype(ircd::fs::aio::support_fsync)
extern __attribute__((weak))
@ -1355,7 +1357,10 @@ ircd::fs::aio::support_fdsync
decltype(ircd::fs::aio::MAX_EVENTS)
extern __attribute__((weak))
ircd::fs::aio::MAX_EVENTS;
ircd::fs::aio::MAX_EVENTS
{
0
};
decltype(ircd::fs::aio::MAX_REQPRIO)
extern __attribute__((weak))
@ -1404,10 +1409,10 @@ ircd::fs::aio::system;
#ifndef IRCD_USE_AIO
ircd::fs::aio::init::init()
{
assert(!context);
assert(!system);
log::warning
{
log, "No support for asynchronous local filesystem IO..."
log, "No support for asynchronous local filesystem IO with AIO..."
};
}
#endif
@ -1416,7 +1421,7 @@ ircd::fs::aio::init::init()
ircd::fs::aio::init::~init()
noexcept
{
assert(!context);
assert(!system);
}
#endif

View file

@ -128,7 +128,7 @@ ircd::fs::aio::request::fsync::fsync(const int &fd,
:request{fd, &opts}
{
assert(opts.op == op::SYNC);
aio_lio_opcode = IOCB_CMD_FSYNC;
aio_lio_opcode = opts.metadata? IOCB_CMD_FSYNC : IOCB_CMD_FDSYNC;
aio_buf = 0;
aio_nbytes = 0;
@ -147,34 +147,6 @@ ircd::fs::aio::fsync(const fd &fd,
request();
}
//
// request::fdsync
//
ircd::fs::aio::request::fdsync::fdsync(const int &fd,
const sync_opts &opts)
:request{fd, &opts}
{
assert(opts.op == op::SYNC);
aio_lio_opcode = IOCB_CMD_FDSYNC;
aio_buf = 0;
aio_nbytes = 0;
aio_offset = 0;
}
void
ircd::fs::aio::fdsync(const fd &fd,
const sync_opts &opts)
{
aio::request::fdsync request
{
fd, opts
};
request();
}
//
// request::read
//

View file

@ -29,7 +29,6 @@ namespace ircd::fs::aio
size_t write(const fd &, const const_iovec_view &, const write_opts &);
size_t read(const fd &, const const_iovec_view &, const read_opts &);
void fdsync(const fd &, const sync_opts &);
void fsync(const fd &, const sync_opts &);
}
@ -121,7 +120,6 @@ struct ircd::fs::aio::request
{
struct read;
struct write;
struct fdsync;
struct fsync;
ssize_t retval {-2L};
@ -155,13 +153,6 @@ struct ircd::fs::aio::request::write
write(const int &fd, const const_iovec_view &, const write_opts &);
};
/// fdsync request control block
struct ircd::fs::aio::request::fdsync
:request
{
fdsync(const int &fd, const sync_opts &);
};
/// fsync request control block
struct ircd::fs::aio::request::fsync
:request