Commit 3d2544b1 authored by J. Bruce Fields's avatar J. Bruce Fields

nfsd4: clean up S_IS -> NF4 file type mapping

A slightly unconventional approach to make the code more compact I could
live with, but let's give the poor reader *some* chance.
Signed-off-by: default avatarJ. Bruce Fields <bfields@redhat.com>
parent 11fd165c
...@@ -1772,12 +1772,19 @@ static __be32 nfsd4_encode_fs_locations(struct svc_rqst *rqstp, ...@@ -1772,12 +1772,19 @@ static __be32 nfsd4_encode_fs_locations(struct svc_rqst *rqstp,
return 0; return 0;
} }
static u32 nfs4_ftypes[16] = { static u32 nfs4_file_type(umode_t mode)
NF4BAD, NF4FIFO, NF4CHR, NF4BAD, {
NF4DIR, NF4BAD, NF4BLK, NF4BAD, switch (mode & S_IFMT) {
NF4REG, NF4BAD, NF4LNK, NF4BAD, case S_IFIFO: return NF4FIFO;
NF4SOCK, NF4BAD, NF4LNK, NF4BAD, case S_IFCHR: return NF4CHR;
}; case S_IFDIR: return NF4DIR;
case S_IFBLK: return NF4BLK;
case S_IFLNK: return NF4LNK;
case S_IFREG: return NF4REG;
case S_IFSOCK: return NF4SOCK;
default: return NF4BAD;
};
}
static __be32 static __be32
nfsd4_encode_name(struct svc_rqst *rqstp, int whotype, uid_t id, int group, nfsd4_encode_name(struct svc_rqst *rqstp, int whotype, uid_t id, int group,
...@@ -1966,7 +1973,7 @@ nfsd4_encode_fattr(struct svc_fh *fhp, struct svc_export *exp, ...@@ -1966,7 +1973,7 @@ nfsd4_encode_fattr(struct svc_fh *fhp, struct svc_export *exp,
if (bmval0 & FATTR4_WORD0_TYPE) { if (bmval0 & FATTR4_WORD0_TYPE) {
if ((buflen -= 4) < 0) if ((buflen -= 4) < 0)
goto out_resource; goto out_resource;
dummy = nfs4_ftypes[(stat.mode & S_IFMT) >> 12]; dummy = nfs4_file_type(stat.mode);
if (dummy == NF4BAD) if (dummy == NF4BAD)
goto out_serverfault; goto out_serverfault;
WRITE32(dummy); WRITE32(dummy);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment