1 #ifndef _XRDOSSCSIFILEAIO_H
2 #define _XRDOSSCSIFILEAIO_H
56 jobtype_ = (read_) ? JobReadStep1 : JobWriteStep1;
61 jobtype_ = JobWriteStep2;
66 jobtype_ = JobReadStep2;
106 enum { JobReadStep1, JobReadStep2, JobWriteStep1, JobWriteStep2 } jobtype_;
139 std::lock_guard<std::mutex> guard(store_->
mtx_);
140 next_ = store_->
list_;
141 store_->
list_ =
this;
167 job_.
Init(file,
this, aiop, isPgOp, isread);
176 std::lock_guard<std::mutex> guard(store->
mtx_);
177 if ((p = store->
list_)) store->
list_ = p->next_;
234 ssize_t nread = nio_->
Result;
245 if (rret == 0)
break;
361 ssize_t nwritten = nio_->
Result;
ssize_t read(int fildes, void *buf, size_t nbyte)
virtual ~XrdOssCsiFileAioJob()
void Init(XrdOssCsiFile *fp, XrdOssCsiFileAio *nio, XrdSfsAio *aiop, bool isPg, bool read)
XrdOssCsiFileAio(XrdOssCsiFileAioStore *store)
static XrdOssCsiFileAio * Alloc(XrdOssCsiFileAioStore *store)
void Init(XrdSfsAio *aiop, XrdOssCsiFile *file, bool isPgOp, uint64_t opts, bool isread)
int FetchRange(XrdOssDF *, const void *, off_t, size_t, uint32_t *, uint64_t, XrdOssCsiRangeGuard &)
void LockTrackinglen(XrdOssCsiRangeGuard &, off_t, off_t, bool)
int StoreRange(XrdOssDF *, const void *, off_t, size_t, uint32_t *, uint64_t, XrdOssCsiRangeGuard &)
int UpdateRange(XrdOssDF *, const void *, off_t, size_t, XrdOssCsiRangeGuard &)
int VerifyRange(XrdOssDF *, const void *, off_t, size_t, XrdOssCsiRangeGuard &)
static XrdScheduler * Sched_
virtual ssize_t Read(off_t offset, size_t size)
virtual ssize_t Write(const void *buffer, off_t offset, size_t size)
void Schedule(XrdJob *jp)
virtual void doneRead()=0
virtual void doneWrite()=0