![]() |
XRootD
|
#include <XrdOssCsiPages.hh>
Public Types | |
typedef std::pair< off_t, off_t > | Sizes_t |
Public Member Functions | |
XrdOssCsiPages (const std::string &fn, std::unique_ptr< XrdOssCsiTagstore > ts, bool wh, bool am, bool dpe, bool dlw, const char *) | |
~XrdOssCsiPages () | |
void | BasicConsistencyCheck (XrdOssDF *) |
int | Close () |
int | FetchRange (XrdOssDF *, const void *, off_t, size_t, uint32_t *, uint64_t, XrdOssCsiRangeGuard &) |
void | Flush () |
int | Fsync () |
bool | IsReadOnly () const |
int | LockResetSizes (XrdOssDF *, off_t) |
void | LockTrackinglen (XrdOssCsiRangeGuard &, off_t, off_t, bool) |
int | Open (const char *path, off_t dsize, int flags, XrdOucEnv &envP) |
int | StoreRange (XrdOssDF *, const void *, off_t, size_t, uint32_t *, uint64_t, XrdOssCsiRangeGuard &) |
void | TrackedSizeRelease () |
int | TrackedSizesGet (Sizes_t &, bool) |
int | truncate (XrdOssDF *, off_t, XrdOssCsiRangeGuard &) |
int | UpdateRange (XrdOssDF *, const void *, off_t, size_t, XrdOssCsiRangeGuard &) |
int | VerificationStatus () |
int | VerifyRange (XrdOssDF *, const void *, off_t, size_t, XrdOssCsiRangeGuard &) |
Static Public Member Functions | |
static void | pgDoCalc (const void *, off_t, size_t, uint32_t *) |
static int | pgWritePrelockCheck (const void *, off_t, size_t, const uint32_t *, uint64_t) |
Protected Member Functions | |
ssize_t | apply_sequential_aligned_modify (const void *, off_t, size_t, const uint32_t *, bool, bool, uint32_t, uint32_t) |
std::string | ByteMismatchError (size_t blen, off_t off, uint8_t user, uint8_t page) |
std::string | CRCMismatchError (size_t blen, off_t pgnum, uint32_t got, uint32_t expected) |
int | FetchRangeAligned (const void *, off_t, size_t, const Sizes_t &, uint32_t *, uint64_t) |
int | FetchRangeUnaligned (XrdOssDF *, const void *, off_t, size_t, const Sizes_t &, uint32_t *, uint64_t) |
int | FetchRangeUnaligned_postblock (XrdOssDF *, const void *, off_t, size_t, off_t, uint32_t *, uint32_t *, size_t, uint64_t) |
int | FetchRangeUnaligned_preblock (XrdOssDF *, const void *, off_t, size_t, off_t, uint32_t *, uint32_t *, uint64_t) |
int | LockMakeUnverified () |
int | LockSetTrackedSize (off_t) |
int | LockTruncateSize (off_t, bool) |
std::string | PageReadError (size_t blen, off_t pgnum, int ret) |
int | StoreRangeAligned (const void *, off_t, size_t, const Sizes_t &, uint32_t *) |
int | StoreRangeUnaligned (XrdOssDF *, const void *, off_t, size_t, const Sizes_t &, const uint32_t *) |
int | StoreRangeUnaligned_postblock (XrdOssDF *, const void *, size_t, off_t, off_t, const uint32_t *, uint32_t &) |
int | StoreRangeUnaligned_preblock (XrdOssDF *, const void *, size_t, off_t, off_t, const uint32_t *, uint32_t &) |
std::string | TagsReadError (off_t start, size_t n, int ret) |
std::string | TagsWriteError (off_t start, size_t n, int ret) |
int | UpdateRangeAligned (const void *, off_t, size_t, const Sizes_t &) |
int | UpdateRangeHoleUntilPage (XrdOssDF *, off_t, const Sizes_t &) |
int | UpdateRangeUnaligned (XrdOssDF *, const void *, off_t, size_t, const Sizes_t &) |
int | VerifyRangeAligned (const void *, off_t, size_t, const Sizes_t &) |
int | VerifyRangeUnaligned (XrdOssDF *, const void *, off_t, size_t, const Sizes_t &) |
Static Protected Member Functions | |
static ssize_t | fullread (XrdOssDF *fd, void *buff, const off_t off, const size_t sz) |
static ssize_t | maxread (XrdOssDF *fd, void *buff, const off_t off, const size_t sz, size_t tg=0) |
Protected Attributes | |
bool | allowMissingTags_ |
bool | checklastpg_ |
bool | disablePgExtend_ |
const std::string | fn_ |
bool | hasMissingTags_ |
off_t | lastpgforloose_ |
bool | loosewrite_ |
const bool | loosewriteConfigured_ |
XrdSysMutex | rangeaddmtx_ |
XrdOssCsiRanges | ranges_ |
bool | rdonly_ |
const char * | tident |
const std::string | tident_ |
std::unique_ptr< XrdOssCsiTagstore > | ts_ |
XrdSysCondVar | tscond_ |
bool | tsforupdate_ |
bool | writeHoles_ |
Static Protected Attributes | |
static const size_t | stsize_ = 1024 |
Definition at line 46 of file XrdOssCsiPages.hh.
typedef std::pair<off_t,off_t> XrdOssCsiPages::Sizes_t |
Definition at line 49 of file XrdOssCsiPages.hh.
XrdOssCsiPages::XrdOssCsiPages | ( | const std::string & | fn, |
std::unique_ptr< XrdOssCsiTagstore > | ts, | ||
bool | wh, | ||
bool | am, | ||
bool | dpe, | ||
bool | dlw, | ||
const char * | tid | ||
) |
Definition at line 44 of file XrdOssCsiPages.cc.
|
inline |
Definition at line 52 of file XrdOssCsiPages.hh.
References Close().
|
protected |
Definition at line 288 of file XrdOssCsiPages.cc.
References XrdOucCRC::Calc32C(), EPNAME, XrdSys::PageSize, stsize_, TagsWriteError(), TRACE, and ts_.
Referenced by StoreRangeAligned(), and StoreRangeUnaligned().
void XrdOssCsiPages::BasicConsistencyCheck | ( | XrdOssDF * | fd | ) |
Definition at line 820 of file XrdOssCsiPages.cc.
References XrdOucCRC::Calc32C(), checklastpg_, CRCMismatchError(), EPNAME, lastpgforloose_, loosewrite_, maxread(), PageReadError(), XrdSys::PageSize, rdonly_, TagsReadError(), TagsWriteError(), TRACE, and ts_.
Referenced by LockResetSizes().
|
inlineprotected |
Definition at line 161 of file XrdOssCsiPages.hh.
References fn_.
Referenced by FetchRangeUnaligned_postblock(), and FetchRangeUnaligned_preblock().
int XrdOssCsiPages::Close | ( | ) |
Definition at line 88 of file XrdOssCsiPages.cc.
References hasMissingTags_, and ts_.
Referenced by ~XrdOssCsiPages().
|
inlineprotected |
Definition at line 148 of file XrdOssCsiPages.hh.
References fn_, and XrdSys::PageSize.
Referenced by BasicConsistencyCheck(), FetchRangeAligned(), FetchRangeUnaligned(), FetchRangeUnaligned_postblock(), FetchRangeUnaligned_preblock(), StoreRangeUnaligned_postblock(), StoreRangeUnaligned_preblock(), and truncate().
int XrdOssCsiPages::FetchRange | ( | XrdOssDF * | fd, |
const void * | buff, | ||
off_t | offset, | ||
size_t | blen, | ||
uint32_t * | csvec, | ||
uint64_t | opts, | ||
XrdOssCsiRangeGuard & | rg | ||
) |
Definition at line 627 of file XrdOssCsiPages.cc.
References EPNAME, FetchRangeAligned(), FetchRangeUnaligned(), fn_, XrdOssCsiRangeGuard::getTrackinglens(), hasMissingTags_, opts, XrdSys::PageSize, pgDoCalc(), TRACE, and XrdOssDF::Verify.
Referenced by XrdOssCsiFileAioJob::DoItRead2(), and XrdOssCsiFile::pgRead().
|
protected |
Definition at line 375 of file XrdOssCsiPages.cc.
References XrdOucCRC::Calc32C(), CRCMismatchError(), EPNAME, opts, XrdSys::PageSize, stsize_, TagsReadError(), TRACE, ts_, and XrdOssDF::Verify.
Referenced by FetchRange(), and VerifyRangeAligned().
|
protected |
Definition at line 786 of file XrdOssCsiPagesUnaligned.cc.
References XrdOucCRC::Calc32C(), CRCMismatchError(), EPNAME, FetchRangeUnaligned_postblock(), FetchRangeUnaligned_preblock(), opts, XrdSys::PageSize, stsize_, TagsReadError(), TRACE, ts_, and XrdOssDF::Verify.
Referenced by FetchRange(), and VerifyRangeUnaligned().
|
protected |
Definition at line 710 of file XrdOssCsiPagesUnaligned.cc.
References ByteMismatchError(), XrdOucCRC::Calc32C(), crc32c(), XrdOssCsiCrcUtils::crc32c_split1(), CRCMismatchError(), CrcUtils, EPNAME, fullread(), opts, PageReadError(), XrdSys::PageSize, TRACE, and XrdOssDF::Verify.
Referenced by FetchRangeUnaligned().
|
protected |
Definition at line 622 of file XrdOssCsiPagesUnaligned.cc.
References ByteMismatchError(), XrdOucCRC::Calc32C(), crc32c(), XrdOssCsiCrcUtils::crc32c_split1(), XrdOssCsiCrcUtils::crc32c_split2(), CRCMismatchError(), CrcUtils, EPNAME, fullread(), opts, PageReadError(), XrdSys::PageSize, TRACE, and XrdOssDF::Verify.
Referenced by FetchRangeUnaligned().
void XrdOssCsiPages::Flush | ( | ) |
Definition at line 98 of file XrdOssCsiPages.cc.
References hasMissingTags_, and ts_.
Referenced by XrdOssCsiFile::Flush().
int XrdOssCsiPages::Fsync | ( | void | ) |
Definition at line 103 of file XrdOssCsiPages.cc.
References hasMissingTags_, and ts_.
Referenced by XrdOssCsiFile::Fsync().
|
inlinestaticprotected |
Definition at line 123 of file XrdOssCsiPages.hh.
References maxread().
Referenced by FetchRangeUnaligned_postblock(), FetchRangeUnaligned_preblock(), StoreRangeUnaligned_postblock(), StoreRangeUnaligned_preblock(), and truncate().
|
inline |
Definition at line 68 of file XrdOssCsiPages.hh.
References rdonly_.
Referenced by XrdOssCsiFile::Open().
|
protected |
Definition at line 152 of file XrdOssCsiPages.cc.
Referenced by StoreRange(), and UpdateRange().
int XrdOssCsiPages::LockResetSizes | ( | XrdOssDF * | fd, |
off_t | sz | ||
) |
Definition at line 134 of file XrdOssCsiPages.cc.
References BasicConsistencyCheck(), hasMissingTags_, loosewrite_, loosewriteConfigured_, ts_, and tscond_.
|
protected |
Definition at line 128 of file XrdOssCsiPages.cc.
Referenced by StoreRange(), and UpdateRange().
void XrdOssCsiPages::LockTrackinglen | ( | XrdOssCsiRangeGuard & | rg, |
off_t | offset, | ||
off_t | offend, | ||
bool | rdonly | ||
) |
Definition at line 499 of file XrdOssCsiPages.cc.
References XrdOssCsiRanges::AddRange(), hasMissingTags_, XrdSys::PageSize, rangeaddmtx_, ranges_, XrdOssCsiRangeGuard::SetTrackingInfo(), TrackedSizeRelease(), TrackedSizesGet(), and XrdOssCsiRangeGuard::Wait().
Referenced by XrdOssCsiFileAioJob::DoItRead1(), XrdOssCsiFileAioJob::DoItWrite1(), XrdOssCsiFile::Ftruncate(), XrdOssCsiFile::pgRead(), XrdOssCsiFile::pgWrite(), XrdOssCsiFile::Read(), XrdOssCsiFile::ReadRaw(), XrdOssCsiFile::ReadV(), XrdOssCsiFile::Write(), and XrdOssCsiFile::WriteV().
|
protected |
Definition at line 146 of file XrdOssCsiPages.cc.
Referenced by truncate().
|
inlinestaticprotected |
Definition at line 132 of file XrdOssCsiPages.hh.
References XrdOssDF::Read().
Referenced by BasicConsistencyCheck(), fullread(), and StoreRangeUnaligned_preblock().
int XrdOssCsiPages::Open | ( | const char * | path, |
off_t | dsize, | ||
int | flags, | ||
XrdOucEnv & | envP | ||
) |
Definition at line 64 of file XrdOssCsiPages.cc.
References allowMissingTags_, XrdProxy::envP, EPNAME, fn_, hasMissingTags_, Info, loosewrite_, loosewriteConfigured_, rdonly_, TRACE, and ts_.
|
inlineprotected |
Definition at line 174 of file XrdOssCsiPages.hh.
References fn_, and XrdSys::PageSize.
Referenced by BasicConsistencyCheck(), FetchRangeUnaligned_postblock(), FetchRangeUnaligned_preblock(), StoreRangeUnaligned_postblock(), StoreRangeUnaligned_preblock(), and truncate().
|
static |
Definition at line 777 of file XrdOssCsiPages.cc.
References XrdOucCRC::Calc32C(), and XrdSys::PageSize.
Referenced by FetchRange(), and StoreRange().
|
static |
Definition at line 788 of file XrdOssCsiPages.cc.
References opts, XrdSys::PageSize, XrdOucCRC::Ver32C(), and XrdOssDF::Verify.
Referenced by XrdOssCsiFile::pgWrite().
int XrdOssCsiPages::StoreRange | ( | XrdOssDF * | fd, |
const void * | buff, | ||
off_t | offset, | ||
size_t | blen, | ||
uint32_t * | csvec, | ||
uint64_t | opts, | ||
XrdOssCsiRangeGuard & | rg | ||
) |
Definition at line 691 of file XrdOssCsiPages.cc.
References disablePgExtend_, XrdOssDF::doCalc, XrdOssCsiRangeGuard::getTrackinglens(), hasMissingTags_, LockMakeUnverified(), LockSetTrackedSize(), opts, XrdSys::PageSize, pgDoCalc(), StoreRangeAligned(), StoreRangeUnaligned(), and XrdOssCsiRangeGuard::unlockTrackinglen().
Referenced by XrdOssCsiFileAioJob::DoItWrite1(), and XrdOssCsiFile::pgWrite().
|
protected |
Definition at line 453 of file XrdOssCsiPages.cc.
References apply_sequential_aligned_modify(), EPNAME, XrdSys::PageSize, TRACE, and UpdateRangeHoleUntilPage().
Referenced by StoreRange(), and UpdateRangeAligned().
|
protected |
Definition at line 515 of file XrdOssCsiPagesUnaligned.cc.
References apply_sequential_aligned_modify(), EPNAME, XrdSys::PageSize, StoreRangeUnaligned_postblock(), StoreRangeUnaligned_preblock(), TagsWriteError(), TRACE, ts_, and UpdateRangeHoleUntilPage().
Referenced by StoreRange(), and UpdateRangeUnaligned().
|
protected |
Definition at line 414 of file XrdOssCsiPagesUnaligned.cc.
References XrdOucCRC::Calc32C(), crc32c(), XrdOssCsiCrcUtils::crc32c_combine(), CRCMismatchError(), CrcUtils, EPNAME, fn_, fullread(), loosewrite_, PageReadError(), XrdSys::PageSize, TagsReadError(), TRACE, and ts_.
Referenced by StoreRangeUnaligned().
|
protected |
Definition at line 131 of file XrdOssCsiPagesUnaligned.cc.
References XrdOucCRC::Calc32C(), checklastpg_, crc32c(), XrdOssCsiCrcUtils::crc32c_combine(), XrdOssCsiCrcUtils::crc32c_extendwith_zero(), CRCMismatchError(), CrcUtils, EPNAME, fn_, fullread(), lastpgforloose_, loosewrite_, maxread(), PageReadError(), XrdSys::PageSize, TagsReadError(), TRACE, and ts_.
Referenced by StoreRangeUnaligned().
|
inlineprotected |
Definition at line 186 of file XrdOssCsiPages.hh.
References fn_.
Referenced by BasicConsistencyCheck(), FetchRangeAligned(), FetchRangeUnaligned(), StoreRangeUnaligned_postblock(), StoreRangeUnaligned_preblock(), truncate(), and UpdateRangeHoleUntilPage().
|
inlineprotected |
Definition at line 195 of file XrdOssCsiPages.hh.
References fn_.
Referenced by apply_sequential_aligned_modify(), BasicConsistencyCheck(), StoreRangeUnaligned(), truncate(), and UpdateRangeHoleUntilPage().
void XrdOssCsiPages::TrackedSizeRelease | ( | ) |
Definition at line 158 of file XrdOssCsiPages.cc.
References XrdSysCondVar::Broadcast(), tscond_, and tsforupdate_.
Referenced by LockTrackinglen(), and XrdOssCsiRangeGuard::unlockTrackinglen().
int XrdOssCsiPages::TrackedSizesGet | ( | XrdOssCsiPages::Sizes_t & | rsizes, |
bool | forupdate | ||
) |
Definition at line 109 of file XrdOssCsiPages.cc.
References hasMissingTags_, ts_, tscond_, tsforupdate_, and XrdSysCondVar::Wait().
Referenced by XrdOssCsiFile::Fstat(), and LockTrackinglen().
int XrdOssCsiPages::truncate | ( | XrdOssDF * | fd, |
off_t | len, | ||
XrdOssCsiRangeGuard & | rg | ||
) |
Definition at line 543 of file XrdOssCsiPages.cc.
References XrdOucCRC::Calc32C(), crc32c(), CRCMismatchError(), EPNAME, fullread(), XrdOssCsiRangeGuard::getTrackinglens(), hasMissingTags_, LockTruncateSize(), PageReadError(), XrdSys::PageSize, TagsReadError(), TagsWriteError(), TRACE, ts_, XrdOssCsiRangeGuard::unlockTrackinglen(), and UpdateRangeHoleUntilPage().
Referenced by XrdOssCsiFile::Ftruncate().
int XrdOssCsiPages::UpdateRange | ( | XrdOssDF * | fd, |
const void * | buff, | ||
off_t | offset, | ||
size_t | blen, | ||
XrdOssCsiRangeGuard & | rg | ||
) |
Definition at line 169 of file XrdOssCsiPages.cc.
References XrdOssCsiRangeGuard::getTrackinglens(), hasMissingTags_, LockMakeUnverified(), LockSetTrackedSize(), XrdSys::PageSize, XrdOssCsiRangeGuard::unlockTrackinglen(), UpdateRangeAligned(), and UpdateRangeUnaligned().
Referenced by XrdOssCsiFileAioJob::DoItWrite1(), XrdOssCsiFile::Write(), and XrdOssCsiFile::WriteV().
|
protected |
Definition at line 485 of file XrdOssCsiPages.cc.
References StoreRangeAligned().
Referenced by UpdateRange().
|
protected |
Definition at line 52 of file XrdOssCsiPagesUnaligned.cc.
References crc32c(), XrdOssCsiCrcUtils::crc32c_extendwith_zero(), CrcUtils, EPNAME, fn_, XrdSys::PageSize, stsize_, TagsReadError(), TagsWriteError(), TRACE, ts_, and writeHoles_.
Referenced by StoreRangeAligned(), StoreRangeUnaligned(), and truncate().
|
protected |
Definition at line 120 of file XrdOssCsiPagesUnaligned.cc.
References StoreRangeUnaligned().
Referenced by UpdateRange().
int XrdOssCsiPages::VerificationStatus | ( | ) |
Definition at line 759 of file XrdOssCsiPages.cc.
References hasMissingTags_, XrdOss::PF_csVer, XrdOss::PF_csVun, ts_, and tscond_.
Referenced by XrdOssCsiFile::VerificationStatus().
int XrdOssCsiPages::VerifyRange | ( | XrdOssDF * | fd, |
const void * | buff, | ||
off_t | offset, | ||
size_t | blen, | ||
XrdOssCsiRangeGuard & | rg | ||
) |
Definition at line 220 of file XrdOssCsiPages.cc.
References EPNAME, fn_, XrdOssCsiRangeGuard::getTrackinglens(), hasMissingTags_, XrdSys::PageSize, TRACE, VerifyRangeAligned(), and VerifyRangeUnaligned().
Referenced by XrdOssCsiFileAioJob::DoItRead2(), XrdOssCsiFile::Read(), XrdOssCsiFile::ReadRaw(), and XrdOssCsiFile::ReadV().
|
protected |
Definition at line 448 of file XrdOssCsiPages.cc.
References FetchRangeAligned(), and XrdOssDF::Verify.
Referenced by VerifyRange().
|
protected |
Definition at line 611 of file XrdOssCsiPagesUnaligned.cc.
References FetchRangeUnaligned(), and XrdOssDF::Verify.
Referenced by VerifyRange().
|
protected |
Definition at line 84 of file XrdOssCsiPages.hh.
Referenced by Open().
|
protected |
Definition at line 102 of file XrdOssCsiPages.hh.
Referenced by BasicConsistencyCheck(), and StoreRangeUnaligned_preblock().
|
protected |
Definition at line 85 of file XrdOssCsiPages.hh.
Referenced by StoreRange().
|
protected |
Definition at line 96 of file XrdOssCsiPages.hh.
Referenced by ByteMismatchError(), CRCMismatchError(), FetchRange(), Open(), PageReadError(), StoreRangeUnaligned_postblock(), StoreRangeUnaligned_preblock(), TagsReadError(), TagsWriteError(), UpdateRangeHoleUntilPage(), and VerifyRange().
|
protected |
Definition at line 86 of file XrdOssCsiPages.hh.
Referenced by Close(), FetchRange(), Flush(), Fsync(), LockResetSizes(), LockTrackinglen(), Open(), StoreRange(), TrackedSizesGet(), truncate(), UpdateRange(), VerificationStatus(), and VerifyRange().
|
protected |
Definition at line 101 of file XrdOssCsiPages.hh.
Referenced by BasicConsistencyCheck(), and StoreRangeUnaligned_preblock().
|
protected |
Definition at line 89 of file XrdOssCsiPages.hh.
Referenced by BasicConsistencyCheck(), LockResetSizes(), Open(), StoreRangeUnaligned_postblock(), and StoreRangeUnaligned_preblock().
|
protected |
Definition at line 88 of file XrdOssCsiPages.hh.
Referenced by LockResetSizes(), and Open().
|
protected |
Definition at line 81 of file XrdOssCsiPages.hh.
Referenced by LockTrackinglen().
|
protected |
Definition at line 82 of file XrdOssCsiPages.hh.
Referenced by LockTrackinglen().
|
protected |
Definition at line 87 of file XrdOssCsiPages.hh.
Referenced by BasicConsistencyCheck(), IsReadOnly(), and Open().
|
staticprotected |
Definition at line 204 of file XrdOssCsiPages.hh.
Referenced by apply_sequential_aligned_modify(), FetchRangeAligned(), FetchRangeUnaligned(), and UpdateRangeHoleUntilPage().
|
protected |
Definition at line 98 of file XrdOssCsiPages.hh.
|
protected |
Definition at line 97 of file XrdOssCsiPages.hh.
|
protected |
Definition at line 80 of file XrdOssCsiPages.hh.
Referenced by apply_sequential_aligned_modify(), BasicConsistencyCheck(), Close(), FetchRangeAligned(), FetchRangeUnaligned(), Flush(), Fsync(), LockMakeUnverified(), LockResetSizes(), LockSetTrackedSize(), LockTruncateSize(), Open(), StoreRangeUnaligned(), StoreRangeUnaligned_postblock(), StoreRangeUnaligned_preblock(), TrackedSizesGet(), truncate(), UpdateRangeHoleUntilPage(), and VerificationStatus().
|
protected |
Definition at line 91 of file XrdOssCsiPages.hh.
Referenced by LockMakeUnverified(), LockResetSizes(), LockSetTrackedSize(), LockTruncateSize(), TrackedSizeRelease(), TrackedSizesGet(), and VerificationStatus().
|
protected |
Definition at line 92 of file XrdOssCsiPages.hh.
Referenced by TrackedSizeRelease(), and TrackedSizesGet().
|
protected |
Definition at line 83 of file XrdOssCsiPages.hh.
Referenced by UpdateRangeHoleUntilPage().