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 ()

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) { }

References XrdOssCsiFileAioStore.

Referenced by Alloc().

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

◆ ~XrdOssCsiFileAio()

XrdOssCsiFileAio::~XrdOssCsiFileAio ( )
inline

Definition at line 206 of file XrdOssCsiFileAio.hh.

206{ }

Member Function Documentation

◆ Alloc()

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
XrdOssCsiFileAio(XrdOssCsiFileAioStore *store)

References XrdOssCsiFileAio(), XrdOssCsiFileAioStore::list_, XrdOssCsiFileAioStore::mtx_, and XrdOssCsiFileAioStore.

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:

◆ 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
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 XrdSfsAio::XrdSfsAio(), aiocb::aio_buf, aiocb::aio_fildes, aiocb::aio_nbytes, aiocb::aio_offset, aiocb::aio_reqprio, XrdSfsAio::cksVec, 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(), and rg_.

Here is the call graph for this function:

◆ SchedReadJob()

void XrdOssCsiFileAio::SchedReadJob ( )
inline

Definition at line 200 of file XrdOssCsiFileAio.hh.

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

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

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 }

Referenced by doneRead().

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 }

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

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 }

Referenced by doneWrite().

Here is the caller graph for this function:

◆ XrdOssCsiFileAioStore

friend class XrdOssCsiFileAioStore
friend

Definition at line 111 of file XrdOssCsiFileAio.hh.

References XrdOssCsiFileAioStore.

Referenced by XrdOssCsiFileAio(), Alloc(), and XrdOssCsiFileAioStore.

Member Data Documentation

◆ pgOpts_

uint64_t XrdOssCsiFileAio::pgOpts_

Definition at line 115 of file XrdOssCsiFileAio.hh.

Referenced by Init().

◆ rg_

XrdOssCsiRangeGuard XrdOssCsiFileAio::rg_

Definition at line 114 of file XrdOssCsiFileAio.hh.

Referenced by Recycle().


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