XRootD
XrdCephOssFile Class Reference

#include <XrdCephOssFile.hh>

+ Inheritance diagram for XrdCephOssFile:
+ Collaboration diagram for XrdCephOssFile:

Public Member Functions

 XrdCephOssFile (XrdCephOss *cephoss)
 
virtual ~XrdCephOssFile ()
 
virtual int Close (long long *retsz=0)
 
virtual int Fstat (struct stat *buff)
 
virtual int Fsync (void)
 
virtual int Ftruncate (unsigned long long)
 
virtual int Open (const char *path, int flags, mode_t mode, XrdOucEnv &env)
 
virtual ssize_t Read (off_t offset, size_t blen)
 
virtual ssize_t Read (void *buff, off_t offset, size_t blen)
 
virtual int Read (XrdSfsAio *aiop)
 
virtual ssize_t ReadRaw (void *, off_t, size_t)
 
virtual ssize_t Write (const void *buff, off_t offset, size_t blen)
 
virtual int Write (XrdSfsAio *aiop)
 
- Public Member Functions inherited from XrdOssDF
 XrdOssDF (const char *tid="", uint16_t dftype=0, int fdnum=-1)
 
virtual ~XrdOssDF ()
 
uint16_t DFType ()
 
virtual int Fchmod (mode_t mode)
 
virtual int Fctl (int cmd, int alen, const char *args, char **resp=0)
 
virtual void Flush ()
 Flush filesystem cached pages for this file (used for checksums). More...
 
virtual int Fsync (XrdSfsAio *aiop)
 
virtual int getFD ()
 
virtual off_t getMmap (void **addr)
 
virtual const char * getTID ()
 
virtual int isCompressed (char *cxidp=0)
 
virtual int Opendir (const char *path, XrdOucEnv &env)
 
virtual ssize_t pgRead (void *buffer, off_t offset, size_t rdlen, uint32_t *csvec, uint64_t opts)
 
virtual int pgRead (XrdSfsAio *aioparm, uint64_t opts)
 
virtual ssize_t pgWrite (void *buffer, off_t offset, size_t wrlen, uint32_t *csvec, uint64_t opts)
 
virtual int pgWrite (XrdSfsAio *aioparm, uint64_t opts)
 
virtual int Readdir (char *buff, int blen)
 
virtual ssize_t ReadV (XrdOucIOVec *readV, int rdvcnt)
 
virtual int StatRet (struct stat *buff)
 
virtual ssize_t WriteV (XrdOucIOVec *writeV, int wrvcnt)
 

Additional Inherited Members

- Static Public Attributes inherited from XrdOssDF
static const uint16_t DF_isDir = 0x0001
 Object is for a directory. More...
 
static const uint16_t DF_isFile = 0x0002
 Object is for a file. More...
 
static const uint16_t DF_isProxy = 0x0010
 Object is a proxy object. More...
 
static const uint64_t doCalc = 0x4000000000000000ULL
 pgw: Calculate checksums More...
 
static const int Fctl_ckpObj = 0
 
static const int Fctl_utimes = 1
 
static const uint64_t Verify = 0x8000000000000000ULL
 all: Verify checksums More...
 
- Protected Attributes inherited from XrdOssDF
uint16_t dfType
 
int fd
 
off_t pgwEOF
 
short rsvd
 
const char * tident
 

Detailed Description

This class implements XrdOssDF interface for usage with a CEPH storage.

This plugin is able to use any pool of ceph with any userId. There are several ways to provide the pool and userId to be used for a given operation. Here is the ordered list of possibilities. First one defined wins :

  • the path can be prepended with userId and pool. Syntax is : [[userId@]pool:]<actual path>
  • the XrdOucEnv parameter, when existing, can have 'cephUserId' and/or 'cephPool' entries
  • the ofs.osslib directive can provide an argument with format : [userID@]pool
  • default are 'admin' and 'default' for userId and pool respectively

Note that the definition of a default via the ofs.osslib directive may clash with one used in a ofs.xattrlib directive. In case both directives have a default and they are different, the behavior is not defined. In case one of the two only has a default, it will be applied for both plugins.

Definition at line 52 of file XrdCephOssFile.hh.

Constructor & Destructor Documentation

◆ XrdCephOssFile()

XrdCephOssFile::XrdCephOssFile ( XrdCephOss cephoss)

Definition at line 39 of file XrdCephOssFile.cc.

39 : m_fd(-1), m_cephOss(cephOss) {}

◆ ~XrdCephOssFile()

virtual XrdCephOssFile::~XrdCephOssFile ( )
inlinevirtual

Definition at line 57 of file XrdCephOssFile.hh.

57 {};

Member Function Documentation

◆ Close()

int XrdCephOssFile::Close ( long long *  retsz = 0)
virtual

Close a directory or file.

Parameters
retszIf not nil, where the size of the file is to be returned.
Returns
0 upon success or -errno or -osserr (see XrdOssError.hh).

Implements XrdOssDF.

Definition at line 53 of file XrdCephOssFile.cc.

53  {
54  return ceph_posix_close(m_fd);
55 }
int ceph_posix_close(int fd)

References ceph_posix_close().

+ Here is the call graph for this function:

◆ Fstat()

int XrdCephOssFile::Fstat ( struct stat buf)
virtual

Return state information for this file.

Parameters
buf- Pointer to the structure where info it to be returned.
Returns
0 upon success or -errno or -osserr (see XrdOssError.hh).

Reimplemented from XrdOssDF.

Definition at line 78 of file XrdCephOssFile.cc.

78  {
79  return ceph_posix_fstat(m_fd, buff);
80 }
int ceph_posix_fstat(int fd, struct stat *buf)

References ceph_posix_fstat().

+ Here is the call graph for this function:

◆ Fsync()

int XrdCephOssFile::Fsync ( void  )
virtual

Synchronize associated file with media (synchronous).

Returns
0 upon success or -errno or -osserr (see XrdOssError.hh).

Reimplemented from XrdOssDF.

Definition at line 95 of file XrdCephOssFile.cc.

95  {
96  return ceph_posix_fsync(m_fd);
97 }
int ceph_posix_fsync(int fd)

References ceph_posix_fsync().

+ Here is the call graph for this function:

◆ Ftruncate()

int XrdCephOssFile::Ftruncate ( unsigned long long  flen)
virtual

Set the size of the associated file.

Parameters
flen- The new size of the file.
Returns
0 upon success or -errno or -osserr (see XrdOssError.hh).

Reimplemented from XrdOssDF.

Definition at line 99 of file XrdCephOssFile.cc.

99  {
100  return ceph_posix_ftruncate(m_fd, len);
101 }
int ceph_posix_ftruncate(int fd, unsigned long long size)

References ceph_posix_ftruncate().

+ Here is the call graph for this function:

◆ Open()

int XrdCephOssFile::Open ( const char *  path,
int  Oflag,
mode_t  Mode,
XrdOucEnv env 
)
virtual

Open a file.

Parameters
path- Pointer to the path of the file to be opened.
Oflag- Standard open flags.
Mode- File open mode (ignored unless creating a file).
env- Reference to environmental information.
Returns
0 upon success or -errno or -osserr (see XrdOssError.hh).

Reimplemented from XrdOssDF.

Definition at line 41 of file XrdCephOssFile.cc.

41  {
42  try {
43  int rc = ceph_posix_open(&env, path, flags, mode);
44  if (rc < 0) return rc;
45  m_fd = rc;
46  return XrdOssOK;
47  } catch (std::exception &e) {
48  XrdCephEroute.Say("open : invalid syntax in file parameters");
49  return -EINVAL;
50  }
51 }
XrdSysError XrdCephEroute
int ceph_posix_open(XrdOucEnv *env, const char *pathname, int flags, mode_t mode)
#define XrdOssOK
Definition: XrdOss.hh:50
void Say(const char *text1, const char *text2=0, const char *txt3=0, const char *text4=0, const char *text5=0, const char *txt6=0)
Definition: XrdSysError.cc:141

References ceph_posix_open(), XrdSysError::Say(), XrdCephEroute, and XrdOssOK.

+ Here is the call graph for this function:

◆ Read() [1/3]

ssize_t XrdCephOssFile::Read ( off_t  offset,
size_t  size 
)
virtual

Preread file blocks into the file system cache.

Parameters
offset- The offset where the read is to start.
size- The number of bytes to pre-read.
Returns
0 upon success or -errno or -osserr (see XrdOssError.hh).

Reimplemented from XrdOssDF.

Definition at line 57 of file XrdCephOssFile.cc.

57  {
58  return XrdOssOK;
59 }

References XrdOssOK.

Referenced by ReadRaw().

+ Here is the caller graph for this function:

◆ Read() [2/3]

ssize_t XrdCephOssFile::Read ( void *  buffer,
off_t  offset,
size_t  size 
)
virtual

Read file bytes into a buffer.

Parameters
buffer- pointer to buffer where the bytes are to be placed.
offset- The offset where the read is to start.
size- The number of bytes to read.
Returns
>= 0 The number of bytes that placed in buffer.
< 0 -errno or -osserr upon failure (see XrdOssError.hh).

Reimplemented from XrdOssDF.

Definition at line 61 of file XrdCephOssFile.cc.

61  {
62  return ceph_posix_pread(m_fd, buff, blen, offset);
63 }
ssize_t ceph_posix_pread(int fd, void *buf, size_t count, off64_t offset)

References ceph_posix_pread().

+ Here is the call graph for this function:

◆ Read() [3/3]

int XrdCephOssFile::Read ( XrdSfsAio aiop)
virtual

Read file bytes using asynchronous I/O.

Parameters
aiop- Pointer to async I/O object controlling the I/O.
Returns
0 upon if request started success or -errno or -osserr (see XrdOssError.hh).

Reimplemented from XrdOssDF.

Definition at line 70 of file XrdCephOssFile.cc.

70  {
71  return ceph_aio_read(m_fd, aiop, aioReadCallback);
72 }
static void aioReadCallback(XrdSfsAio *aiop, size_t rc)
ssize_t ceph_aio_read(int fd, XrdSfsAio *aiop, AioCB *cb)

References aioReadCallback(), and ceph_aio_read().

+ Here is the call graph for this function:

◆ ReadRaw()

ssize_t XrdCephOssFile::ReadRaw ( void *  buffer,
off_t  offset,
size_t  size 
)
virtual

Read uncompressed file bytes into a buffer.

Parameters
buffer- pointer to buffer where the bytes are to be placed.
offset- The offset where the read is to start.
size- The number of bytes to read.
Returns
>= 0 The number of bytes that placed in buffer.
< 0 -errno or -osserr upon failure (see XrdOssError.hh).

Reimplemented from XrdOssDF.

Definition at line 74 of file XrdCephOssFile.cc.

74  {
75  return Read(buff, offset, blen);
76 }
virtual ssize_t Read(off_t offset, size_t blen)

References Read().

+ Here is the call graph for this function:

◆ Write() [1/2]

ssize_t XrdCephOssFile::Write ( const void *  buffer,
off_t  offset,
size_t  size 
)
virtual

Write file bytes from a buffer.

Parameters
buffer- pointer to buffer where the bytes reside.
offset- The offset where the write is to start.
size- The number of bytes to write.
Returns
>= 0 The number of bytes that were written.
< 0 -errno or -osserr upon failure (see XrdOssError.hh).

Reimplemented from XrdOssDF.

Definition at line 82 of file XrdCephOssFile.cc.

82  {
83  return ceph_posix_pwrite(m_fd, buff, blen, offset);
84 }
ssize_t ceph_posix_pwrite(int fd, const void *buf, size_t count, off64_t offset)

References ceph_posix_pwrite().

+ Here is the call graph for this function:

◆ Write() [2/2]

int XrdCephOssFile::Write ( XrdSfsAio aiop)
virtual

Write file bytes using asynchronous I/O.

Parameters
aiop- Pointer to async I/O object controlling the I/O.
Returns
0 upon if request started success or -errno or -osserr (see XrdOssError.hh).

Reimplemented from XrdOssDF.

Definition at line 91 of file XrdCephOssFile.cc.

91  {
92  return ceph_aio_write(m_fd, aiop, aioWriteCallback);
93 }
static void aioWriteCallback(XrdSfsAio *aiop, size_t rc)
ssize_t ceph_aio_write(int fd, XrdSfsAio *aiop, AioCB *cb)

References aioWriteCallback(), and ceph_aio_write().

+ Here is the call graph for this function:

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