XRootD
Loading...
Searching...
No Matches
XrdOssCsiFileAio Class Reference

#include <XrdOssCsiFileAio.hh>

+ Inheritance diagram for XrdOssCsiFileAio:
+ Collaboration diagram for XrdOssCsiFileAio:

Public Member Functions

 XrdOssCsiFileAio (XrdOssCsiFileAioStore *store)
 
 ~XrdOssCsiFileAio ()
 
virtual void doneRead ()
 
virtual void doneWrite ()
 
void Init (XrdSfsAio *aiop, XrdOssCsiFile *file, bool isPgOp, uint64_t opts, bool isread)
 
virtual void Recycle ()
 
void SchedReadJob ()
 
void SchedReadJob2 ()
 
void SchedWriteJob ()
 
void SchedWriteJob2 ()
 
- Public Member Functions inherited from XrdSfsAio
 XrdSfsAio ()
 
virtual ~XrdSfsAio ()
 
virtual void doneRead ()=0
 
virtual void doneWrite ()=0
 
virtual void Recycle ()=0
 

Static Public Member Functions

static XrdOssCsiFileAioAlloc (XrdOssCsiFileAioStore *store)
 

Public Attributes

uint64_t pgOpts_
 
XrdOssCsiRangeGuard rg_
 
- Public Attributes inherited from XrdSfsAio
uint32_t * cksVec
 
ssize_t Result
 
struct aiocb sfsAio
 
const char * TIdent
 

Friends

class XrdOssCsiFileAioStore
 

Detailed Description

Definition at line 109 of file XrdOssCsiFileAio.hh.

Constructor & Destructor Documentation

◆ XrdOssCsiFileAio()

XrdOssCsiFileAio::XrdOssCsiFileAio ( XrdOssCsiFileAioStore store)
inline

Definition at line 205 of file XrdOssCsiFileAio.hh.

205: store_(store) { }

◆ ~XrdOssCsiFileAio()

XrdOssCsiFileAio::~XrdOssCsiFileAio ( )
inline

Definition at line 206 of file XrdOssCsiFileAio.hh.

206{ }

Member Function Documentation

◆ Alloc()

static XrdOssCsiFileAio * XrdOssCsiFileAio::Alloc ( XrdOssCsiFileAioStore store)
inlinestatic

Definition at line 171 of file XrdOssCsiFileAio.hh.

172 {
173 XrdOssCsiFileAio *p=NULL;
174 if (store)
175 {
176 std::lock_guard<std::mutex> guard(store->mtx_);
177 if ((p = store->list_)) store->list_ = p->next_;
178 }
179 if (!p) p = new XrdOssCsiFileAio(store);
180 return p;
181 }
XrdOssCsiFileAio * list_
Definition XrdOssCsi.hh:53

References XrdOssCsiFileAioStore::list_, and XrdOssCsiFileAioStore::mtx_.

Referenced by XrdOssCsiFile::pgRead(), XrdOssCsiFile::pgWrite(), XrdOssCsiFile::Read(), and XrdOssCsiFile::Write().

+ Here is the caller graph for this function:

◆ doneRead()

virtual void XrdOssCsiFileAio::doneRead ( )
inlinevirtual

Implements XrdSfsAio.

Definition at line 117 of file XrdOssCsiFileAio.hh.

118 {
119 parentaio_->Result = this->Result;
120 // schedule the result check and verify/fetchrange
122 }
ssize_t Result
Definition XrdSfsAio.hh:65

References XrdSfsAio::Result, and SchedReadJob2().

+ Here is the call graph for this function:

◆ doneWrite()

virtual void XrdOssCsiFileAio::doneWrite ( )
inlinevirtual

Implements XrdSfsAio.

Definition at line 124 of file XrdOssCsiFileAio.hh.

125 {
126 parentaio_->Result = this->Result;
127 // schedule the result check and write any extra
129 }

References XrdSfsAio::Result, and SchedWriteJob2().

+ Here is the call graph for this function:

◆ Init()

void XrdOssCsiFileAio::Init ( XrdSfsAio aiop,
XrdOssCsiFile file,
bool  isPgOp,
uint64_t  opts,
bool  isread 
)
inline

Definition at line 153 of file XrdOssCsiFileAio.hh.

154 {
155 parentaio_ = aiop;
156 this->sfsAio.aio_fildes = aiop->sfsAio.aio_fildes;
157 this->sfsAio.aio_buf = aiop->sfsAio.aio_buf;
158 this->sfsAio.aio_nbytes = aiop->sfsAio.aio_nbytes;
159 this->sfsAio.aio_offset = aiop->sfsAio.aio_offset;
160 this->sfsAio.aio_reqprio = aiop->sfsAio.aio_reqprio;
161 this->cksVec = aiop->cksVec;
162 this->TIdent = aiop->TIdent;
163 file_ = file;
164 isPgOp_ = isPgOp;
165 pgOpts_ = opts;
166 Sched_ = XrdOssCsi::Sched_;
167 job_.Init(file, this, aiop, isPgOp, isread);
168 file_->aioInc();
169 }
struct myOpts opts
off_t aio_offset
Definition XrdSfsAio.hh:49
size_t aio_nbytes
Definition XrdSfsAio.hh:48
int aio_reqprio
Definition XrdSfsAio.hh:50
int aio_fildes
Definition XrdSfsAio.hh:46
void * aio_buf
Definition XrdSfsAio.hh:47
void Init(XrdOssCsiFile *fp, XrdOssCsiFileAio *nio, XrdSfsAio *aiop, bool isPg, bool read)
static XrdScheduler * Sched_
Definition XrdOssCsi.hh:216
uint32_t * cksVec
Definition XrdSfsAio.hh:63
const char * TIdent
Definition XrdSfsAio.hh:67
struct aiocb sfsAio
Definition XrdSfsAio.hh:62

References aiocb::aio_buf, aiocb::aio_fildes, aiocb::aio_nbytes, aiocb::aio_offset, aiocb::aio_reqprio, XrdOssCsiFile::aioInc(), XrdSfsAio::cksVec, XrdOssCsiFileAioJob::Init(), opts, pgOpts_, XrdOssCsi::Sched_, XrdSfsAio::sfsAio, and XrdSfsAio::TIdent.

Referenced by XrdOssCsiFile::pgRead(), XrdOssCsiFile::pgWrite(), XrdOssCsiFile::Read(), and XrdOssCsiFile::Write().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ Recycle()

virtual void XrdOssCsiFileAio::Recycle ( )
inlinevirtual

Implements XrdSfsAio.

Definition at line 131 of file XrdOssCsiFileAio.hh.

132 {
133 rg_.ReleaseAll();
134 parentaio_ = NULL;
135 XrdOssCsiFile *f = file_;
136 file_ = NULL;
137 if (store_)
138 {
139 std::lock_guard<std::mutex> guard(store_->mtx_);
140 next_ = store_->list_;
141 store_->list_ = this;
142 }
143 else
144 {
145 delete this;
146 }
147 if (f)
148 {
149 f->aioDec();
150 }
151 }
XrdOssCsiRangeGuard rg_

References XrdOssCsiFile::aioDec(), XrdOssCsiFileAioStore::list_, XrdOssCsiFileAioStore::mtx_, and XrdOssCsiRangeGuard::ReleaseAll().

Referenced by XrdOssCsiFileAioJob::DoItRead1(), XrdOssCsiFileAioJob::DoItRead2(), XrdOssCsiFileAioJob::DoItWrite1(), and XrdOssCsiFileAioJob::DoItWrite2().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ SchedReadJob()

void XrdOssCsiFileAio::SchedReadJob ( )
inline

Definition at line 200 of file XrdOssCsiFileAio.hh.

201 {
202 Sched_->Schedule((XrdJob *)&job_);
203 }
void Schedule(XrdJob *jp)

References XrdScheduler::Schedule().

Referenced by XrdOssCsiFile::pgRead(), and XrdOssCsiFile::Read().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ SchedReadJob2()

void XrdOssCsiFileAio::SchedReadJob2 ( )
inline

Definition at line 194 of file XrdOssCsiFileAio.hh.

195 {
196 job_.PrepareRead2();
197 Sched_->Schedule((XrdJob *)&job_);
198 }

References XrdOssCsiFileAioJob::PrepareRead2(), and XrdScheduler::Schedule().

Referenced by doneRead().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ SchedWriteJob()

void XrdOssCsiFileAio::SchedWriteJob ( )
inline

Definition at line 189 of file XrdOssCsiFileAio.hh.

190 {
191 Sched_->Schedule((XrdJob *)&job_);
192 }

References XrdScheduler::Schedule().

Referenced by XrdOssCsiFile::pgWrite(), and XrdOssCsiFile::Write().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ SchedWriteJob2()

void XrdOssCsiFileAio::SchedWriteJob2 ( )
inline

Definition at line 183 of file XrdOssCsiFileAio.hh.

184 {
185 job_.PrepareWrite2();
186 Sched_->Schedule((XrdJob *)&job_);
187 }

References XrdOssCsiFileAioJob::PrepareWrite2(), and XrdScheduler::Schedule().

Referenced by doneWrite().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

Friends And Related Symbol Documentation

◆ XrdOssCsiFileAioStore

friend class XrdOssCsiFileAioStore
friend

Definition at line 111 of file XrdOssCsiFileAio.hh.

Member Data Documentation

◆ pgOpts_

uint64_t XrdOssCsiFileAio::pgOpts_

◆ rg_


The documentation for this class was generated from the following file: