mirror of
https://github.com/Zygo/bees.git
synced 2025-05-17 21:35:45 +02:00
bees: remove file open serialization mutex
It is no longer necessary. Signed-off-by: Zygo Blaxell <bees@furryterror.org> (cherry picked from commit 5c9104555768801701df15f512c4d3d7c579398b)
This commit is contained in:
parent
c6c3990d19
commit
c479b361cd
@ -103,8 +103,6 @@ operator<<(ostream &os, const BeesRangePair &brp)
|
|||||||
<< "\ndst = " << brp.second.fd() << " " << name_fd(brp.second.fd());
|
<< "\ndst = " << brp.second.fd() << " " << name_fd(brp.second.fd());
|
||||||
}
|
}
|
||||||
|
|
||||||
mutex BeesFileRange::s_mutex;
|
|
||||||
|
|
||||||
bool
|
bool
|
||||||
BeesFileRange::operator<(const BeesFileRange &that) const
|
BeesFileRange::operator<(const BeesFileRange &that) const
|
||||||
{
|
{
|
||||||
@ -156,7 +154,6 @@ off_t
|
|||||||
BeesFileRange::file_size() const
|
BeesFileRange::file_size() const
|
||||||
{
|
{
|
||||||
if (m_file_size <= 0) {
|
if (m_file_size <= 0) {
|
||||||
// Use method fd() not member m_fd() so we hold lock
|
|
||||||
Stat st(fd());
|
Stat st(fd());
|
||||||
m_file_size = st.st_size;
|
m_file_size = st.st_size;
|
||||||
// These checks could trigger on valid input, but that would mean we have
|
// These checks could trigger on valid input, but that would mean we have
|
||||||
@ -296,23 +293,18 @@ BeesFileRange::operator BeesBlockData() const
|
|||||||
Fd
|
Fd
|
||||||
BeesFileRange::fd() const
|
BeesFileRange::fd() const
|
||||||
{
|
{
|
||||||
unique_lock<mutex> lock(s_mutex);
|
return m_fd;
|
||||||
auto rv = m_fd;
|
|
||||||
return rv;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Fd
|
Fd
|
||||||
BeesFileRange::fd(const shared_ptr<BeesContext> &ctx) const
|
BeesFileRange::fd(const shared_ptr<BeesContext> &ctx) const
|
||||||
{
|
{
|
||||||
unique_lock<mutex> lock(s_mutex);
|
|
||||||
// If we don't have a fid we can't do much here
|
// If we don't have a fid we can't do much here
|
||||||
if (m_fid) {
|
if (m_fid) {
|
||||||
if (!m_fd) {
|
if (!m_fd) {
|
||||||
// If we don't have a fd, open by fid
|
// If we don't have a fd, open by fid
|
||||||
if (m_fid && ctx) {
|
if (m_fid && ctx) {
|
||||||
lock.unlock();
|
|
||||||
Fd new_fd = ctx->roots()->open_root_ino(m_fid);
|
Fd new_fd = ctx->roots()->open_root_ino(m_fid);
|
||||||
lock.lock();
|
|
||||||
m_fd = new_fd;
|
m_fd = new_fd;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@ -322,8 +314,7 @@ BeesFileRange::fd(const shared_ptr<BeesContext> &ctx) const
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
// We either had a fid and opened it, or we didn't and we're just stuck with our fd
|
// We either had a fid and opened it, or we didn't and we're just stuck with our fd
|
||||||
auto rv = m_fd;
|
return m_fd;
|
||||||
return rv;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
BeesFileRange
|
BeesFileRange
|
||||||
|
@ -254,7 +254,6 @@ ostream& operator<<(ostream &os, const BeesFileId &bfi);
|
|||||||
|
|
||||||
class BeesFileRange {
|
class BeesFileRange {
|
||||||
protected:
|
protected:
|
||||||
static mutex s_mutex;
|
|
||||||
mutable Fd m_fd;
|
mutable Fd m_fd;
|
||||||
mutable BeesFileId m_fid;
|
mutable BeesFileId m_fid;
|
||||||
off_t m_begin, m_end;
|
off_t m_begin, m_end;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user