afs: Expand data structure fields to support YFS

Expand fields in various data structures to support the expanded
information that YFS is capable of returning.

Signed-off-by: David Howells <dhowells@redhat.com>
This commit is contained in:
David Howells 2018-10-20 00:57:58 +01:00
parent f58db83fd3
commit d4936803a9
2 changed files with 23 additions and 21 deletions

View File

@ -130,19 +130,18 @@ typedef u32 afs_access_t;
struct afs_file_status { struct afs_file_status {
u64 size; /* file size */ u64 size; /* file size */
afs_dataversion_t data_version; /* current data version */ afs_dataversion_t data_version; /* current data version */
time_t mtime_client; /* last time client changed data */ struct timespec64 mtime_client; /* Last time client changed data */
time_t mtime_server; /* last time server changed data */ struct timespec64 mtime_server; /* Last time server changed data */
unsigned abort_code; /* Abort if bulk-fetching this failed */ s64 author; /* author ID */
s64 owner; /* owner ID */
afs_file_type_t type; /* file type */ s64 group; /* group ID */
unsigned nlink; /* link count */
u32 author; /* author ID */
u32 owner; /* owner ID */
u32 group; /* group ID */
afs_access_t caller_access; /* access rights for authenticated caller */ afs_access_t caller_access; /* access rights for authenticated caller */
afs_access_t anon_access; /* access rights for unauthenticated caller */ afs_access_t anon_access; /* access rights for unauthenticated caller */
umode_t mode; /* UNIX mode */ umode_t mode; /* UNIX mode */
afs_file_type_t type; /* file type */
u32 nlink; /* link count */
s32 lock_count; /* file lock count (0=UNLK -1=WRLCK +ve=#RDLCK */ s32 lock_count; /* file lock count (0=UNLK -1=WRLCK +ve=#RDLCK */
u32 abort_code; /* Abort if bulk-fetching this failed */
}; };
/* /*
@ -159,25 +158,27 @@ struct afs_file_status {
* AFS volume synchronisation information * AFS volume synchronisation information
*/ */
struct afs_volsync { struct afs_volsync {
time_t creation; /* volume creation time */ time64_t creation; /* volume creation time */
}; };
/* /*
* AFS volume status record * AFS volume status record
*/ */
struct afs_volume_status { struct afs_volume_status {
u32 vid; /* volume ID */ afs_volid_t vid; /* volume ID */
u32 parent_id; /* parent volume ID */ afs_volid_t parent_id; /* parent volume ID */
u8 online; /* true if volume currently online and available */ u8 online; /* true if volume currently online and available */
u8 in_service; /* true if volume currently in service */ u8 in_service; /* true if volume currently in service */
u8 blessed; /* same as in_service */ u8 blessed; /* same as in_service */
u8 needs_salvage; /* true if consistency checking required */ u8 needs_salvage; /* true if consistency checking required */
u32 type; /* volume type (afs_voltype_t) */ u32 type; /* volume type (afs_voltype_t) */
u32 min_quota; /* minimum space set aside (blocks) */ u64 min_quota; /* minimum space set aside (blocks) */
u32 max_quota; /* maximum space this volume may occupy (blocks) */ u64 max_quota; /* maximum space this volume may occupy (blocks) */
u32 blocks_in_use; /* space this volume currently occupies (blocks) */ u64 blocks_in_use; /* space this volume currently occupies (blocks) */
u32 part_blocks_avail; /* space available in volume's partition */ u64 part_blocks_avail; /* space available in volume's partition */
u32 part_max_blocks; /* size of volume's partition */ u64 part_max_blocks; /* size of volume's partition */
s64 vol_copy_date;
s64 vol_backup_date;
}; };
#define AFS_BLOCK_SIZE 1024 #define AFS_BLOCK_SIZE 1024

View File

@ -69,8 +69,7 @@ void afs_update_inode_from_status(struct afs_vnode *vnode,
struct timespec64 t; struct timespec64 t;
umode_t mode; umode_t mode;
t.tv_sec = status->mtime_client; t = status->mtime_client;
t.tv_nsec = 0;
vnode->vfs_inode.i_ctime = t; vnode->vfs_inode.i_ctime = t;
vnode->vfs_inode.i_mtime = t; vnode->vfs_inode.i_mtime = t;
vnode->vfs_inode.i_atime = t; vnode->vfs_inode.i_atime = t;
@ -194,8 +193,10 @@ static int xdr_decode_AFSFetchStatus(struct afs_call *call,
EXTRACT_M(mode); EXTRACT_M(mode);
EXTRACT_M(group); EXTRACT_M(group);
status->mtime_client = ntohl(xdr->mtime_client); status->mtime_client.tv_sec = ntohl(xdr->mtime_client);
status->mtime_server = ntohl(xdr->mtime_server); status->mtime_client.tv_nsec = 0;
status->mtime_server.tv_sec = ntohl(xdr->mtime_server);
status->mtime_server.tv_nsec = 0;
status->lock_count = ntohl(xdr->lock_count); status->lock_count = ntohl(xdr->lock_count);
size = (u64)ntohl(xdr->size_lo); size = (u64)ntohl(xdr->size_lo);