diff options
author | David Howells <dhowells@redhat.com> | 2018-04-06 14:17:24 +0100 |
---|---|---|
committer | David Howells <dhowells@redhat.com> | 2018-04-09 21:53:59 +0100 |
commit | dd9fbcb8e10349fbd640aaa5942455912004f284 (patch) | |
tree | f77b3d38b5abc531f8b47aef6a27a1ab979cc657 /fs/afs/afs.h | |
parent | 0c3a5ac28115f45ee1d56717d9a9526bc6d63b05 (diff) |
afs: Rearrange status mapping
Rearrange the AFSFetchStatus to inode attribute mapping code in a number of
ways:
(1) Use an XDR structure rather than a series of incremented pointer
accesses when decoding an AFSFetchStatus object. This allows
out-of-order decode.
(2) Don't store the if_version value but rather just check it and abort if
it's not something we can handle.
(3) Store the owner and group in the status record as raw values rather
than converting them to kuid/kgid. Do that when they're mapped into
i_uid/i_gid.
(4) Validate the type and abort code up front and abort if they're wrong.
(5) Split the inode attribute setting out into its own function from the
XDR decode of an AFSFetchStatus object. This allows it to be called
from elsewhere too.
(6) Differentiate changes to data from changes to metadata.
(7) Use the split-out attribute mapping function from afs_iget().
Signed-off-by: David Howells <dhowells@redhat.com>
Diffstat (limited to 'fs/afs/afs.h')
-rw-r--r-- | fs/afs/afs.h | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/fs/afs/afs.h b/fs/afs/afs.h index a670bca6d3ba..b4ff1f7ae4ab 100644 --- a/fs/afs/afs.h +++ b/fs/afs/afs.h @@ -131,15 +131,13 @@ struct afs_file_status { afs_dataversion_t data_version; /* current data version */ time_t mtime_client; /* last time client changed data */ time_t mtime_server; /* last time server changed data */ - unsigned if_version; /* interface version */ -#define AFS_FSTATUS_VERSION 1 unsigned abort_code; /* Abort if bulk-fetching this failed */ afs_file_type_t type; /* file type */ unsigned nlink; /* link count */ u32 author; /* author ID */ - kuid_t owner; /* owner ID */ - kgid_t group; /* group ID */ + u32 owner; /* owner ID */ + u32 group; /* group ID */ afs_access_t caller_access; /* access rights for authenticated caller */ afs_access_t anon_access; /* access rights for unauthenticated caller */ umode_t mode; /* UNIX mode */ |