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

Referenced by Alloc().

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

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

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

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
121  SchedReadJob2();
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
128  SchedWriteJob2();
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)
void aioInc()
Definition: XrdOssCsi.hh:111
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 ( void  )
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_
void aioDec()
Definition: XrdOssCsi.hh:120

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  }
Definition: XrdJob.hh:43
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 Function 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: