root/fs/afs/protocol_yfs.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. xdr_to_u64
  2. u64_to_xdr

   1 /* SPDX-License-Identifier: GPL-2.0-or-later */
   2 /* YFS protocol bits
   3  *
   4  * Copyright (C) 2018 Red Hat, Inc. All Rights Reserved.
   5  * Written by David Howells (dhowells@redhat.com)
   6  */
   7 
   8 #define YFS_FS_SERVICE  2500
   9 #define YFS_CM_SERVICE  2501
  10 
  11 #define YFSCBMAX 1024
  12 
  13 enum YFS_CM_Operations {
  14         YFSCBProbe              = 206,  /* probe client */
  15         YFSCBGetLock            = 207,  /* get contents of CM lock table */
  16         YFSCBXStatsVersion      = 209,  /* get version of extended statistics */
  17         YFSCBGetXStats          = 210,  /* get contents of extended statistics data */
  18         YFSCBInitCallBackState3 = 213,  /* initialise callback state, version 3 */
  19         YFSCBProbeUuid          = 214,  /* check the client hasn't rebooted */
  20         YFSCBGetServerPrefs     = 215,
  21         YFSCBGetCellServDV      = 216,
  22         YFSCBGetLocalCell       = 217,
  23         YFSCBGetCacheConfig     = 218,
  24         YFSCBGetCellByNum       = 65537,
  25         YFSCBTellMeAboutYourself = 65538, /* get client capabilities */
  26         YFSCBCallBack           = 64204,
  27 };
  28 
  29 enum YFS_FS_Operations {
  30         YFSFETCHACL             = 64131, /* YFS Fetch file AFS3 ACL */
  31         YFSFETCHSTATUS          = 64132, /* YFS Fetch file status */
  32         YFSSTOREACL             = 64134, /* YFS Store file AFS3 ACL */
  33         YFSSTORESTATUS          = 64135, /* YFS Store file status */
  34         YFSREMOVEFILE           = 64136, /* YFS Remove a file */
  35         YFSCREATEFILE           = 64137, /* YFS Create a file */
  36         YFSRENAME               = 64138, /* YFS Rename or move a file or directory */
  37         YFSSYMLINK              = 64139, /* YFS Create a symbolic link */
  38         YFSLINK                 = 64140, /* YFS Create a hard link */
  39         YFSMAKEDIR              = 64141, /* YFS Create a directory */
  40         YFSREMOVEDIR            = 64142, /* YFS Remove a directory */
  41         YFSGETVOLUMESTATUS      = 64149, /* YFS Get volume status information */
  42         YFSSETVOLUMESTATUS      = 64150, /* YFS Set volume status information */
  43         YFSSETLOCK              = 64156, /* YFS Request a file lock */
  44         YFSEXTENDLOCK           = 64157, /* YFS Extend a file lock */
  45         YFSRELEASELOCK          = 64158, /* YFS Release a file lock */
  46         YFSLOOKUP               = 64161, /* YFS lookup file in directory */
  47         YFSFLUSHCPS             = 64165,
  48         YFSFETCHOPAQUEACL       = 64168, /* YFS Fetch file YFS ACL */
  49         YFSWHOAMI               = 64170,
  50         YFSREMOVEACL            = 64171,
  51         YFSREMOVEFILE2          = 64173,
  52         YFSSTOREOPAQUEACL2      = 64174,
  53         YFSINLINEBULKSTATUS     = 64536, /* YFS Fetch multiple file statuses with errors */
  54         YFSFETCHDATA64          = 64537, /* YFS Fetch file data */
  55         YFSSTOREDATA64          = 64538, /* YFS Store file data */
  56         YFSUPDATESYMLINK        = 64540,
  57 };
  58 
  59 struct yfs_xdr_u64 {
  60         __be32                  msw;
  61         __be32                  lsw;
  62 } __packed;
  63 
  64 static inline u64 xdr_to_u64(const struct yfs_xdr_u64 x)
  65 {
  66         return ((u64)ntohl(x.msw) << 32) | ntohl(x.lsw);
  67 }
  68 
  69 static inline struct yfs_xdr_u64 u64_to_xdr(const u64 x)
  70 {
  71         return (struct yfs_xdr_u64){ .msw = htonl(x >> 32), .lsw = htonl(x) };
  72 }
  73 
  74 struct yfs_xdr_vnode {
  75         struct yfs_xdr_u64      lo;
  76         __be32                  hi;
  77         __be32                  unique;
  78 } __packed;
  79 
  80 struct yfs_xdr_YFSFid {
  81         struct yfs_xdr_u64      volume;
  82         struct yfs_xdr_vnode    vnode;
  83 } __packed;
  84 
  85 
  86 struct yfs_xdr_YFSFetchStatus {
  87         __be32                  type;
  88         __be32                  nlink;
  89         struct yfs_xdr_u64      size;
  90         struct yfs_xdr_u64      data_version;
  91         struct yfs_xdr_u64      author;
  92         struct yfs_xdr_u64      owner;
  93         struct yfs_xdr_u64      group;
  94         __be32                  mode;
  95         __be32                  caller_access;
  96         __be32                  anon_access;
  97         struct yfs_xdr_vnode    parent;
  98         __be32                  data_access_protocol;
  99         struct yfs_xdr_u64      mtime_client;
 100         struct yfs_xdr_u64      mtime_server;
 101         __be32                  lock_count;
 102         __be32                  abort_code;
 103 } __packed;
 104 
 105 struct yfs_xdr_YFSCallBack {
 106         __be32                  version;
 107         struct yfs_xdr_u64      expiration_time;
 108         __be32                  type;
 109 } __packed;
 110 
 111 struct yfs_xdr_YFSStoreStatus {
 112         __be32                  mask;
 113         __be32                  mode;
 114         struct yfs_xdr_u64      mtime_client;
 115         struct yfs_xdr_u64      owner;
 116         struct yfs_xdr_u64      group;
 117 } __packed;
 118 
 119 struct yfs_xdr_RPCFlags {
 120         __be32                  rpc_flags;
 121 } __packed;
 122 
 123 struct yfs_xdr_YFSVolSync {
 124         struct yfs_xdr_u64      vol_creation_date;
 125         struct yfs_xdr_u64      vol_update_date;
 126         struct yfs_xdr_u64      max_quota;
 127         struct yfs_xdr_u64      blocks_in_use;
 128         struct yfs_xdr_u64      blocks_avail;
 129 } __packed;
 130 
 131 enum yfs_volume_type {
 132         yfs_volume_type_ro = 0,
 133         yfs_volume_type_rw = 1,
 134 };
 135 
 136 #define yfs_FVSOnline           0x1
 137 #define yfs_FVSInservice        0x2
 138 #define yfs_FVSBlessed          0x4
 139 #define yfs_FVSNeedsSalvage     0x8
 140 
 141 struct yfs_xdr_YFSFetchVolumeStatus {
 142         struct yfs_xdr_u64      vid;
 143         struct yfs_xdr_u64      parent_id;
 144         __be32                  flags;
 145         __be32                  type;
 146         struct yfs_xdr_u64      max_quota;
 147         struct yfs_xdr_u64      blocks_in_use;
 148         struct yfs_xdr_u64      part_blocks_avail;
 149         struct yfs_xdr_u64      part_max_blocks;
 150         struct yfs_xdr_u64      vol_copy_date;
 151         struct yfs_xdr_u64      vol_backup_date;
 152 } __packed;
 153 
 154 struct yfs_xdr_YFSStoreVolumeStatus {
 155         __be32                  mask;
 156         struct yfs_xdr_u64      min_quota;
 157         struct yfs_xdr_u64      max_quota;
 158         struct yfs_xdr_u64      file_quota;
 159 } __packed;
 160 
 161 enum yfs_lock_type {
 162         yfs_LockNone            = -1,
 163         yfs_LockRead            = 0,
 164         yfs_LockWrite           = 1,
 165         yfs_LockExtend          = 2,
 166         yfs_LockRelease         = 3,
 167         yfs_LockMandatoryRead   = 0x100,
 168         yfs_LockMandatoryWrite  = 0x101,
 169         yfs_LockMandatoryExtend = 0x102,
 170 };

/* [<][>][^][v][top][bottom][index][help] */