Loading...
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 | /* types.h: AFS types * * Copyright (C) 2002 Red Hat, Inc. All Rights Reserved. * Written by David Howells (dhowells@redhat.com) * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version * 2 of the License, or (at your option) any later version. */ #ifndef _LINUX_AFS_TYPES_H #define _LINUX_AFS_TYPES_H #ifdef __KERNEL__ #include <rxrpc/types.h> #endif /* __KERNEL__ */ typedef unsigned afs_volid_t; typedef unsigned afs_vnodeid_t; typedef unsigned long long afs_dataversion_t; typedef struct afs_async_op afs_async_op_t; typedef struct afs_callback afs_callback_t; typedef struct afs_cell afs_cell_t; typedef struct afs_fid afs_fid_t; typedef struct afs_file_status afs_file_status_t; typedef struct afs_server afs_server_t; typedef struct afs_timer afs_timer_t; typedef struct afs_vlocation afs_vlocation_t; typedef struct afs_vnode afs_vnode_t; typedef struct afs_volsync afs_volsync_t; typedef struct afs_volume afs_volume_t; typedef struct afs_volume_info afs_volume_info_t; typedef struct afsc_cache afsc_cache_t; typedef struct afsc_cache_cell afsc_cache_cell_t; typedef struct afsc_cache_vldb afsc_cache_vldb_t; typedef struct afsc_cell_record afsc_cell_record_t; typedef struct afsc_inode afsc_inode_t; typedef struct afsc_io afsc_io_t; typedef struct afsc_io_subop afsc_io_subop_t; typedef struct afsc_io_queue afsc_io_queue_t; typedef struct afsc_super_block afsc_super_block_t; typedef struct afsc_vldb_record afsc_vldb_record_t; typedef struct afsc_vnode_catalogue afsc_vnode_catalogue_t; typedef struct afsc_vnode_meta afsc_vnode_meta_t; typedef struct afsvl_dbentry afsvl_dbentry_t; typedef enum { AFSVL_RWVOL, /* read/write volume */ AFSVL_ROVOL, /* read-only volume */ AFSVL_BACKVOL, /* backup volume */ } afs_voltype_t; extern const char *afs_voltypes[]; typedef enum { AFS_FTYPE_INVALID = 0, AFS_FTYPE_FILE = 1, AFS_FTYPE_DIR = 2, AFS_FTYPE_SYMLINK = 3, } afs_file_type_t; #ifdef __KERNEL__ /*****************************************************************************/ /* * AFS file identifier */ struct afs_fid { afs_volid_t vid; /* volume ID */ afs_vnodeid_t vnode; /* file index within volume */ unsigned unique; /* unique ID number (file index version) */ }; /*****************************************************************************/ /* * AFS callback notification */ typedef enum { AFSCM_CB_UNTYPED = 0, /* no type set on CB break */ AFSCM_CB_EXCLUSIVE = 1, /* CB exclusive to CM [not implemented] */ AFSCM_CB_SHARED = 2, /* CB shared by other CM's */ AFSCM_CB_DROPPED = 3, /* CB promise cancelled by file server */ } afs_callback_type_t; struct afs_callback { afs_server_t *server; /* server that made the promise */ afs_fid_t fid; /* file identifier */ unsigned version; /* callback version */ unsigned expiry; /* time at which expires */ afs_callback_type_t type; /* type of callback */ }; #define AFSCBMAX 50 /*****************************************************************************/ /* * AFS volume information */ struct afs_volume_info { afs_volid_t vid; /* volume ID */ afs_voltype_t type; /* type of this volume */ afs_volid_t type_vids[5]; /* volume ID's for possible types for this vol */ /* list of fileservers serving this volume */ size_t nservers; /* number of entries used in servers[] */ struct { struct in_addr addr; /* fileserver address */ } servers[8]; }; /*****************************************************************************/ /* * AFS file status information */ struct afs_file_status { unsigned if_version; /* interface version */ #define AFS_FSTATUS_VERSION 1 afs_file_type_t type; /* file type */ unsigned nlink; /* link count */ size_t size; /* file size */ afs_dataversion_t version; /* current data version */ unsigned author; /* author ID */ unsigned owner; /* owner ID */ unsigned caller_access; /* access rights for authenticated caller */ unsigned anon_access; /* access rights for unauthenticated caller */ umode_t mode; /* UNIX mode */ afs_fid_t parent; /* parent file ID */ time_t mtime_client; /* last time client changed data */ time_t mtime_server; /* last time server changed data */ }; /*****************************************************************************/ /* * AFS volume synchronisation information */ struct afs_volsync { time_t creation; /* volume creation time */ }; #endif /* __KERNEL__ */ #endif /* _LINUX_AFS_TYPES_H */ |