From 79d4c15ff534fd0ae188d2ec2f63a47351f2ac96 Mon Sep 17 00:00:00 2001 From: Jason Volk Date: Thu, 23 Aug 2018 21:24:56 -0700 Subject: [PATCH] ircd::fs: Deinline and improve append() related. --- include/ircd/fs/write.h | 12 ------------ ircd/fs.cc | 19 ++++++++++++++++--- 2 files changed, 16 insertions(+), 15 deletions(-) diff --git a/include/ircd/fs/write.h b/include/ircd/fs/write.h index 7e4b8ad3b..24a0f65bd 100644 --- a/include/ircd/fs/write.h +++ b/include/ircd/fs/write.h @@ -52,15 +52,3 @@ inline ircd::fs::write_opts::write_opts(const off_t &offset) :offset{offset} {} -inline ircd::const_buffer -ircd::fs::append(const string_view &path, - const const_buffer &buf, - const write_opts &opts) -{ - const fd fd - { - path, std::ios::out | std::ios::app - }; - - return write(fd, buf, opts); -} diff --git a/ircd/fs.cc b/ircd/fs.cc index a2f3d7131..1edfb4a7d 100644 --- a/ircd/fs.cc +++ b/ircd/fs.cc @@ -433,16 +433,29 @@ ircd::fs::overwrite(const fd &fd, return write(fd, buf, opts); } +ircd::const_buffer +ircd::fs::append(const string_view &path, + const const_buffer &buf, + const write_opts &opts) +{ + const fd fd + { + path, std::ios::out | std::ios::app + }; + + return write(fd, buf, opts); +} + ircd::const_buffer ircd::fs::append(const fd &fd, const const_buffer &buf, const write_opts &opts_) try { - assert(opts_.offset == 0); - auto opts(opts_); - opts.offset = syscall(::lseek, fd, 0, SEEK_END); + if(!opts.offset) + opts.offset = syscall(::lseek, fd, 0, SEEK_END); + return write(fd, buf, opts); } catch(const error &e)