~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/fs/afs/afs_vl.h

Version: ~ [ linux-6.11.5 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.58 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.114 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.169 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.228 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.284 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.322 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.9 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 /* SPDX-License-Identifier: GPL-2.0-or-later */
  2 /* AFS Volume Location Service client interface
  3  *
  4  * Copyright (C) 2002, 2007 Red Hat, Inc. All Rights Reserved.
  5  * Written by David Howells (dhowells@redhat.com)
  6  */
  7 
  8 #ifndef AFS_VL_H
  9 #define AFS_VL_H
 10 
 11 #include "afs.h"
 12 
 13 #define AFS_VL_PORT             7003    /* volume location service port */
 14 #define VL_SERVICE              52      /* RxRPC service ID for the Volume Location service */
 15 #define YFS_VL_SERVICE          2503    /* Service ID for AuriStor upgraded VL service */
 16 
 17 enum AFSVL_Operations {
 18         VLGETENTRYBYID          = 503,  /* AFS Get VLDB entry by ID */
 19         VLGETENTRYBYNAME        = 504,  /* AFS Get VLDB entry by name */
 20         VLPROBE                 = 514,  /* AFS probe VL service */
 21         VLGETENTRYBYIDU         = 526,  /* AFS Get VLDB entry by ID (UUID-variant) */
 22         VLGETENTRYBYNAMEU       = 527,  /* AFS Get VLDB entry by name (UUID-variant) */
 23         VLGETADDRSU             = 533,  /* AFS Get addrs for fileserver */
 24         YVLGETENDPOINTS         = 64002, /* YFS Get endpoints for file/volume server */
 25         YVLGETCELLNAME          = 64014, /* YFS Get actual cell name */
 26         VLGETCAPABILITIES       = 65537, /* AFS Get server capabilities */
 27 };
 28 
 29 enum AFSVL_Errors {
 30         AFSVL_IDEXIST           = 363520,       /* Volume Id entry exists in vl database */
 31         AFSVL_IO                = 363521,       /* I/O related error */
 32         AFSVL_NAMEEXIST         = 363522,       /* Volume name entry exists in vl database */
 33         AFSVL_CREATEFAIL        = 363523,       /* Internal creation failure */
 34         AFSVL_NOENT             = 363524,       /* No such entry */
 35         AFSVL_EMPTY             = 363525,       /* Vl database is empty */
 36         AFSVL_ENTDELETED        = 363526,       /* Entry is deleted (soft delete) */
 37         AFSVL_BADNAME           = 363527,       /* Volume name is illegal */
 38         AFSVL_BADINDEX          = 363528,       /* Index is out of range */
 39         AFSVL_BADVOLTYPE        = 363529,       /* Bad volume type */
 40         AFSVL_BADSERVER         = 363530,       /* Illegal server number (out of range) */
 41         AFSVL_BADPARTITION      = 363531,       /* Bad partition number */
 42         AFSVL_REPSFULL          = 363532,       /* Run out of space for Replication sites */
 43         AFSVL_NOREPSERVER       = 363533,       /* No such Replication server site exists */
 44         AFSVL_DUPREPSERVER      = 363534,       /* Replication site already exists */
 45         AFSVL_RWNOTFOUND        = 363535,       /* Parent R/W entry not found */
 46         AFSVL_BADREFCOUNT       = 363536,       /* Illegal Reference Count number */
 47         AFSVL_SIZEEXCEEDED      = 363537,       /* Vl size for attributes exceeded */
 48         AFSVL_BADENTRY          = 363538,       /* Bad incoming vl entry */
 49         AFSVL_BADVOLIDBUMP      = 363539,       /* Illegal max volid increment */
 50         AFSVL_IDALREADYHASHED   = 363540,       /* RO/BACK id already hashed */
 51         AFSVL_ENTRYLOCKED       = 363541,       /* Vl entry is already locked */
 52         AFSVL_BADVOLOPER        = 363542,       /* Bad volume operation code */
 53         AFSVL_BADRELLOCKTYPE    = 363543,       /* Bad release lock type */
 54         AFSVL_RERELEASE         = 363544,       /* Status report: last release was aborted */
 55         AFSVL_BADSERVERFLAG     = 363545,       /* Invalid replication site server flag */
 56         AFSVL_PERM              = 363546,       /* No permission access */
 57         AFSVL_NOMEM             = 363547,       /* malloc/realloc failed to alloc enough memory */
 58 };
 59 
 60 enum {
 61         YFS_SERVER_INDEX        = 0,
 62         YFS_SERVER_UUID         = 1,
 63         YFS_SERVER_ENDPOINT     = 2,
 64 };
 65 
 66 enum {
 67         YFS_ENDPOINT_IPV4       = 0,
 68         YFS_ENDPOINT_IPV6       = 1,
 69 };
 70 
 71 #define YFS_MAXENDPOINTS        16
 72 
 73 /*
 74  * maps to "struct vldbentry" in vvl-spec.pdf
 75  */
 76 struct afs_vldbentry {
 77         char            name[65];               /* name of volume (with NUL char) */
 78         afs_voltype_t   type;                   /* volume type */
 79         unsigned        num_servers;            /* num servers that hold instances of this vol */
 80         unsigned        clone_id;               /* cloning ID */
 81 
 82         unsigned        flags;
 83 #define AFS_VLF_RWEXISTS        0x1000          /* R/W volume exists */
 84 #define AFS_VLF_ROEXISTS        0x2000          /* R/O volume exists */
 85 #define AFS_VLF_BACKEXISTS      0x4000          /* backup volume exists */
 86 
 87         afs_volid_t     volume_ids[3];          /* volume IDs */
 88 
 89         struct {
 90                 struct in_addr  addr;           /* server address */
 91                 unsigned        partition;      /* partition ID on this server */
 92                 unsigned        flags;          /* server specific flags */
 93 #define AFS_VLSF_NEWREPSITE     0x0001  /* Ignore all 'non-new' servers */
 94 #define AFS_VLSF_ROVOL          0x0002  /* this server holds a R/O instance of the volume */
 95 #define AFS_VLSF_RWVOL          0x0004  /* this server holds a R/W instance of the volume */
 96 #define AFS_VLSF_BACKVOL        0x0008  /* this server holds a backup instance of the volume */
 97 #define AFS_VLSF_UUID           0x0010  /* This server is referred to by its UUID */
 98 #define AFS_VLSF_DONTUSE        0x0020  /* This server ref should be ignored */
 99         } servers[8];
100 };
101 
102 #define AFS_VLDB_MAXNAMELEN 65
103 
104 
105 struct afs_ListAddrByAttributes__xdr {
106         __be32                  Mask;
107 #define AFS_VLADDR_IPADDR       0x1     /* Match by ->ipaddr */
108 #define AFS_VLADDR_INDEX        0x2     /* Match by ->index */
109 #define AFS_VLADDR_UUID         0x4     /* Match by ->uuid */
110         __be32                  ipaddr;
111         __be32                  index;
112         __be32                  spare;
113         struct afs_uuid__xdr    uuid;
114 };
115 
116 struct afs_uvldbentry__xdr {
117         __be32                  name[AFS_VLDB_MAXNAMELEN];
118         __be32                  nServers;
119         struct afs_uuid__xdr    serverNumber[AFS_NMAXNSERVERS];
120         __be32                  serverUnique[AFS_NMAXNSERVERS];
121         __be32                  serverPartition[AFS_NMAXNSERVERS];
122         __be32                  serverFlags[AFS_NMAXNSERVERS];
123         __be32                  volumeId[AFS_MAXTYPES];
124         __be32                  cloneId;
125         __be32                  flags;
126         __be32                  spares1;
127         __be32                  spares2;
128         __be32                  spares3;
129         __be32                  spares4;
130         __be32                  spares5;
131         __be32                  spares6;
132         __be32                  spares7;
133         __be32                  spares8;
134         __be32                  spares9;
135 };
136 
137 struct afs_address_list {
138         refcount_t              usage;
139         unsigned int            version;
140         unsigned int            nr_addrs;
141         struct sockaddr_rxrpc   addrs[];
142 };
143 
144 extern void afs_put_address_list(struct afs_address_list *alist);
145 
146 #endif /* AFS_VL_H */
147 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php