#endif
}
-void IOUringEngine::submit_stat(const char *path, std::function<void()> cb)
+void IOUringEngine::submit_stat(const char *path [[maybe_unused]], std::function<void(bool)> cb [[maybe_unused]])
{
assert(supports_stat);
++pending_reads;
}
-void IOUringEngine::submit_stat_internal(io_uring_sqe *sqe, char *path, std::function<void()> cb)
+void IOUringEngine::submit_stat_internal(io_uring_sqe *sqe, char *path, std::function<void(bool)> cb)
{
PendingRead *pending = new PendingRead;
pending->op = OP_STAT;
pending->stat.pathname = path;
pending->stat.buf = new struct statx;
- io_uring_prep_statx(sqe, /*fd=*/-1, pending->stat.pathname, AT_STATX_SYNC_AS_STAT, STATX_MODE, pending->stat.buf);
+ io_uring_prep_statx(sqe, /*fd=*/-1, pending->stat.pathname, AT_STATX_SYNC_AS_STAT | AT_SYMLINK_NOFOLLOW, STATX_MODE, pending->stat.buf);
io_uring_sqe_set_data(sqe, pending);
++pending_reads;
}
--pending_reads;
size_t old_pending_reads = pending_reads;
- pending->stat_cb();
+ pending->stat_cb(cqe->res == 0);
free(pending->stat.pathname);
delete pending->stat.buf;
delete pending;