/usr/include/rados/rgw_file.h is in librgw-dev 12.2.4-0ubuntu1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 | // -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
// vim: ts=8 sw=2 smarttab
/*
* convert RGW commands to file commands
*
* Copyright (C) 2015 Red Hat, Inc.
*
* This is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License version 2.1, as published by the Free Software
* Foundation. See file COPYING.
*
*/
#ifndef RADOS_RGW_FILE_H
#define RADOS_RGW_FILE_H
#include <sys/stat.h>
#include <sys/types.h>
#include <stdint.h>
#include <stdbool.h>
#include "librgw.h"
#ifdef __cplusplus
extern "C" {
#endif
#define LIBRGW_FILE_VER_MAJOR 1
#define LIBRGW_FILE_VER_MINOR 1
#define LIBRGW_FILE_VER_EXTRA 6
#define LIBRGW_FILE_VERSION(maj, min, extra) ((maj << 16) + (min << 8) + extra)
#define LIBRGW_FILE_VERSION_CODE LIBRGW_FILE_VERSION(LIBRGW_FILE_VER_MAJOR, LIBRGW_FILE_VER_MINOR, LIBRGW_FILE_VER_EXTRA)
/*
* object types
*/
enum rgw_fh_type {
RGW_FS_TYPE_NIL = 0,
RGW_FS_TYPE_FILE,
RGW_FS_TYPE_DIRECTORY,
};
/*
* dynamic allocated handle to support nfs handle
*/
/* content-addressable hash */
struct rgw_fh_hk {
uint64_t bucket;
uint64_t object;
};
struct rgw_file_handle
{
/* content-addressable hash */
struct rgw_fh_hk fh_hk;
void *fh_private; /* librgw private data */
/* object type */
enum rgw_fh_type fh_type;
};
struct rgw_fs
{
librgw_t rgw;
void *fs_private;
struct rgw_file_handle* root_fh;
};
/* XXX mount info hypothetical--emulate Unix, support at least
* UUID-length fsid */
struct rgw_statvfs {
uint64_t f_bsize; /* file system block size */
uint64_t f_frsize; /* fragment size */
uint64_t f_blocks; /* size of fs in f_frsize units */
uint64_t f_bfree; /* # free blocks */
uint64_t f_bavail; /* # free blocks for unprivileged users */
uint64_t f_files; /* # inodes */
uint64_t f_ffree; /* # free inodes */
uint64_t f_favail; /* # free inodes for unprivileged users */
uint64_t f_fsid[2]; /* file system ID */
uint64_t f_flag; /* mount flags */
uint64_t f_namemax; /* maximum filename length */
};
void rgwfile_version(int *major, int *minor, int *extra);
/*
lookup object by name (POSIX style)
*/
#define RGW_LOOKUP_FLAG_NONE 0x0000
#define RGW_LOOKUP_FLAG_CREATE 0x0001
#define RGW_LOOKUP_FLAG_RCB 0x0002 /* readdir callback hint */
#define RGW_LOOKUP_FLAG_DIR 0x0004
#define RGW_LOOKUP_FLAG_FILE 0x0008
#define RGW_LOOKUP_TYPE_FLAGS \
(RGW_LOOKUP_FLAG_DIR|RGW_LOOKUP_FLAG_FILE)
int rgw_lookup(struct rgw_fs *rgw_fs,
struct rgw_file_handle *parent_fh, const char *path,
struct rgw_file_handle **fh, uint32_t flags);
/*
lookup object by handle (NFS style)
*/
int rgw_lookup_handle(struct rgw_fs *rgw_fs, struct rgw_fh_hk *fh_hk,
struct rgw_file_handle **fh, uint32_t flags);
/*
* release file handle
*/
#define RGW_FH_RELE_FLAG_NONE 0x0000
int rgw_fh_rele(struct rgw_fs *rgw_fs, struct rgw_file_handle *fh,
uint32_t flags);
/*
attach rgw namespace
*/
#define RGW_MOUNT_FLAG_NONE 0x0000
int rgw_mount(librgw_t rgw, const char *uid, const char *key,
const char *secret, struct rgw_fs **rgw_fs,
uint32_t flags);
int rgw_mount2(librgw_t rgw, const char *uid, const char *key,
const char *secret, const char *root, struct rgw_fs **rgw_fs,
uint32_t flags);
/*
register invalidate callbacks
*/
#define RGW_REG_INVALIDATE_FLAG_NONE 0x0000
typedef void (*rgw_fh_callback_t)(void *handle, struct rgw_fh_hk fh_hk);
int rgw_register_invalidate(struct rgw_fs *rgw_fs, rgw_fh_callback_t cb,
void *arg, uint32_t flags);
/*
detach rgw namespace
*/
#define RGW_UMOUNT_FLAG_NONE 0x0000
int rgw_umount(struct rgw_fs *rgw_fs, uint32_t flags);
/*
get filesystem attributes
*/
#define RGW_STATFS_FLAG_NONE 0x0000
int rgw_statfs(struct rgw_fs *rgw_fs,
struct rgw_file_handle *parent_fh,
struct rgw_statvfs *vfs_st,
uint32_t flags);
/* XXX (get|set)attr mask bits */
#define RGW_SETATTR_MODE 1
#define RGW_SETATTR_UID 2
#define RGW_SETATTR_GID 4
#define RGW_SETATTR_MTIME 8
#define RGW_SETATTR_ATIME 16
#define RGW_SETATTR_SIZE 32
#define RGW_SETATTR_CTIME 64
/*
create file
*/
#define RGW_CREATE_FLAG_NONE 0x0000
int rgw_create(struct rgw_fs *rgw_fs, struct rgw_file_handle *parent_fh,
const char *name, struct stat *st, uint32_t mask,
struct rgw_file_handle **fh, uint32_t posix_flags,
uint32_t flags);
/*
create a new directory
*/
#define RGW_MKDIR_FLAG_NONE 0x0000
int rgw_mkdir(struct rgw_fs *rgw_fs,
struct rgw_file_handle *parent_fh,
const char *name, struct stat *st, uint32_t mask,
struct rgw_file_handle **fh, uint32_t flags);
/*
rename object
*/
#define RGW_RENAME_FLAG_NONE 0x0000
int rgw_rename(struct rgw_fs *rgw_fs,
struct rgw_file_handle *olddir, const char* old_name,
struct rgw_file_handle *newdir, const char* new_name,
uint32_t flags);
/*
remove file or directory
*/
#define RGW_UNLINK_FLAG_NONE 0x0000
int rgw_unlink(struct rgw_fs *rgw_fs,
struct rgw_file_handle *parent_fh, const char* path,
uint32_t flags);
/*
read directory content
*/
typedef bool (*rgw_readdir_cb)(const char *name, void *arg, uint64_t offset,
uint32_t flags);
#define RGW_READDIR_FLAG_NONE 0x0000
#define RGW_READDIR_FLAG_DOTDOT 0x0001 /* send dot names */
int rgw_readdir(struct rgw_fs *rgw_fs,
struct rgw_file_handle *parent_fh, uint64_t *offset,
rgw_readdir_cb rcb, void *cb_arg, bool *eof,
uint32_t flags);
/* enumeration continuing from name */
int rgw_readdir2(struct rgw_fs *rgw_fs,
struct rgw_file_handle *parent_fh, const char *name,
rgw_readdir_cb rcb, void *cb_arg, bool *eof,
uint32_t flags);
/* project offset of dirent name */
#define RGW_DIRENT_OFFSET_FLAG_NONE 0x0000
int rgw_dirent_offset(struct rgw_fs *rgw_fs,
struct rgw_file_handle *parent_fh,
const char *name, int64_t *offset,
uint32_t flags);
/*
get unix attributes for object
*/
#define RGW_GETATTR_FLAG_NONE 0x0000
int rgw_getattr(struct rgw_fs *rgw_fs,
struct rgw_file_handle *fh, struct stat *st,
uint32_t flags);
/*
set unix attributes for object
*/
#define RGW_SETATTR_FLAG_NONE 0x0000
int rgw_setattr(struct rgw_fs *rgw_fs,
struct rgw_file_handle *fh, struct stat *st,
uint32_t mask, uint32_t flags);
/*
truncate file
*/
#define RGW_TRUNCATE_FLAG_NONE 0x0000
int rgw_truncate(struct rgw_fs *rgw_fs,
struct rgw_file_handle *fh, uint64_t size,
uint32_t flags);
/*
open file
*/
#define RGW_OPEN_FLAG_NONE 0x0000
#define RGW_OPEN_FLAG_CREATE 0x0001
#define RGW_OPEN_FLAG_V3 0x0002 /* ops have v3 semantics */
#define RGW_OPEN_FLAG_STATELESS 0x0002 /* alias it */
int rgw_open(struct rgw_fs *rgw_fs, struct rgw_file_handle *parent_fh,
uint32_t posix_flags, uint32_t flags);
/*
close file
*/
#define RGW_CLOSE_FLAG_NONE 0x0000
#define RGW_CLOSE_FLAG_RELE 0x0001
int rgw_close(struct rgw_fs *rgw_fs, struct rgw_file_handle *fh,
uint32_t flags);
/*
read data from file
*/
#define RGW_READ_FLAG_NONE 0x0000
int rgw_read(struct rgw_fs *rgw_fs,
struct rgw_file_handle *fh, uint64_t offset,
size_t length, size_t *bytes_read, void *buffer,
uint32_t flags);
/*
write data to file
*/
#define RGW_WRITE_FLAG_NONE 0x0000
int rgw_write(struct rgw_fs *rgw_fs,
struct rgw_file_handle *fh, uint64_t offset,
size_t length, size_t *bytes_written, void *buffer,
uint32_t flags);
#define RGW_UIO_NONE 0x0000
#define RGW_UIO_GIFT 0x0001
#define RGW_UIO_FREE 0x0002
#define RGW_UIO_BUFQ 0x0004
struct rgw_uio;
typedef void (*rgw_uio_release)(struct rgw_uio *, uint32_t);
/* buffer vector descriptors */
struct rgw_vio {
void *vio_p1;
void *vio_u1;
void *vio_base;
int32_t vio_len;
};
struct rgw_uio {
rgw_uio_release uio_rele;
void *uio_p1;
void *uio_u1;
uint64_t uio_offset;
uint64_t uio_resid;
uint32_t uio_cnt;
uint32_t uio_flags;
struct rgw_vio *uio_vio; /* appended vectors */
};
typedef struct rgw_uio rgw_uio;
int rgw_readv(struct rgw_fs *rgw_fs,
struct rgw_file_handle *fh, rgw_uio *uio, uint32_t flags);
int rgw_writev(struct rgw_fs *rgw_fs,
struct rgw_file_handle *fh, rgw_uio *uio, uint32_t flags);
/*
sync written data
*/
#define RGW_FSYNC_FLAG_NONE 0x0000
int rgw_fsync(struct rgw_fs *rgw_fs, struct rgw_file_handle *fh,
uint32_t flags);
/*
NFS commit operation
*/
#define RGW_COMMIT_FLAG_NONE 0x0000
int rgw_commit(struct rgw_fs *rgw_fs, struct rgw_file_handle *fh,
uint64_t offset, uint64_t length, uint32_t flags);
#ifdef __cplusplus
}
#endif
#endif /* RADOS_RGW_FILE_H */
|