Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
linux
Commits
ab19b481
Commit
ab19b481
authored
Mar 04, 2012
by
Trond Myklebust
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
NFSv4: Add a encode op helper
Signed-off-by:
Trond Myklebust
<
Trond.Myklebust@netapp.com
>
parent
4ade9821
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
32 additions
and
129 deletions
+32
-129
fs/nfs/nfs4xdr.c
fs/nfs/nfs4xdr.c
+32
-129
No files found.
fs/nfs/nfs4xdr.c
View file @
ab19b481
...
...
@@ -935,6 +935,15 @@ static void encode_compound_hdr(struct xdr_stream *xdr,
*
p
=
cpu_to_be32
(
hdr
->
nops
);
}
static
void
encode_op_hdr
(
struct
xdr_stream
*
xdr
,
enum
nfs_opnum4
op
,
uint32_t
replen
,
struct
compound_hdr
*
hdr
)
{
encode_uint32
(
xdr
,
op
);
hdr
->
nops
++
;
hdr
->
replen
+=
replen
;
}
static
void
encode_nops
(
struct
compound_hdr
*
hdr
)
{
BUG_ON
(
hdr
->
nops
>
NFS4_MAX_OPS
);
...
...
@@ -1086,14 +1095,9 @@ static void encode_access(struct xdr_stream *xdr, u32 access, struct compound_hd
static
void
encode_close
(
struct
xdr_stream
*
xdr
,
const
struct
nfs_closeargs
*
arg
,
struct
compound_hdr
*
hdr
)
{
__be32
*
p
;
p
=
reserve_space
(
xdr
,
4
);
*
p
=
cpu_to_be32
(
OP_CLOSE
);
encode_op_hdr
(
xdr
,
OP_CLOSE
,
decode_close_maxsz
,
hdr
);
encode_nfs4_seqid
(
xdr
,
arg
->
seqid
);
encode_nfs4_stateid
(
xdr
,
arg
->
stateid
);
hdr
->
nops
++
;
hdr
->
replen
+=
decode_close_maxsz
;
}
static
void
encode_commit
(
struct
xdr_stream
*
xdr
,
const
struct
nfs_writeargs
*
args
,
struct
compound_hdr
*
hdr
)
...
...
@@ -1172,8 +1176,7 @@ encode_getattr_three(struct xdr_stream *xdr,
{
__be32
*
p
;
p
=
reserve_space
(
xdr
,
4
);
*
p
=
cpu_to_be32
(
OP_GETATTR
);
encode_op_hdr
(
xdr
,
OP_GETATTR
,
decode_getattr_maxsz
,
hdr
);
if
(
bm2
)
{
p
=
reserve_space
(
xdr
,
16
);
*
p
++
=
cpu_to_be32
(
3
);
...
...
@@ -1190,8 +1193,6 @@ encode_getattr_three(struct xdr_stream *xdr,
*
p
++
=
cpu_to_be32
(
1
);
*
p
=
cpu_to_be32
(
bm0
);
}
hdr
->
nops
++
;
hdr
->
replen
+=
decode_getattr_maxsz
;
}
static
void
encode_getfattr
(
struct
xdr_stream
*
xdr
,
const
u32
*
bitmask
,
struct
compound_hdr
*
hdr
)
...
...
@@ -1217,23 +1218,13 @@ static void encode_fs_locations(struct xdr_stream *xdr, const u32* bitmask, stru
static
void
encode_getfh
(
struct
xdr_stream
*
xdr
,
struct
compound_hdr
*
hdr
)
{
__be32
*
p
;
p
=
reserve_space
(
xdr
,
4
);
*
p
=
cpu_to_be32
(
OP_GETFH
);
hdr
->
nops
++
;
hdr
->
replen
+=
decode_getfh_maxsz
;
encode_op_hdr
(
xdr
,
OP_GETFH
,
decode_getfh_maxsz
,
hdr
);
}
static
void
encode_link
(
struct
xdr_stream
*
xdr
,
const
struct
qstr
*
name
,
struct
compound_hdr
*
hdr
)
{
__be32
*
p
;
p
=
reserve_space
(
xdr
,
4
);
*
p
=
cpu_to_be32
(
OP_LINK
);
encode_op_hdr
(
xdr
,
OP_LINK
,
decode_link_maxsz
,
hdr
);
encode_string
(
xdr
,
name
->
len
,
name
->
name
);
hdr
->
nops
++
;
hdr
->
replen
+=
decode_link_maxsz
;
}
static
inline
int
nfs4_lock_type
(
struct
file_lock
*
fl
,
int
block
)
...
...
@@ -1323,24 +1314,14 @@ static void encode_locku(struct xdr_stream *xdr, const struct nfs_locku_args *ar
static
void
encode_release_lockowner
(
struct
xdr_stream
*
xdr
,
const
struct
nfs_lowner
*
lowner
,
struct
compound_hdr
*
hdr
)
{
__be32
*
p
;
p
=
reserve_space
(
xdr
,
4
);
*
p
=
cpu_to_be32
(
OP_RELEASE_LOCKOWNER
);
encode_op_hdr
(
xdr
,
OP_RELEASE_LOCKOWNER
,
decode_release_lockowner_maxsz
,
hdr
);
encode_lockowner
(
xdr
,
lowner
);
hdr
->
nops
++
;
hdr
->
replen
+=
decode_release_lockowner_maxsz
;
}
static
void
encode_lookup
(
struct
xdr_stream
*
xdr
,
const
struct
qstr
*
name
,
struct
compound_hdr
*
hdr
)
{
__be32
*
p
;
p
=
reserve_space
(
xdr
,
4
);
*
p
=
cpu_to_be32
(
OP_LOOKUP
);
encode_op_hdr
(
xdr
,
OP_LOOKUP
,
decode_lookup_maxsz
,
hdr
);
encode_string
(
xdr
,
name
->
len
,
name
->
name
);
hdr
->
nops
++
;
hdr
->
replen
+=
decode_lookup_maxsz
;
}
static
void
encode_share_access
(
struct
xdr_stream
*
xdr
,
fmode_t
fmode
)
...
...
@@ -1371,8 +1352,6 @@ static inline void encode_openhdr(struct xdr_stream *xdr, const struct nfs_opena
* opcode 4, seqid 4, share_access 4, share_deny 4, clientid 8, ownerlen 4,
* owner 4 = 32
*/
p
=
reserve_space
(
xdr
,
4
);
*
p
=
cpu_to_be32
(
OP_OPEN
);
encode_nfs4_seqid
(
xdr
,
arg
->
seqid
);
encode_share_access
(
xdr
,
arg
->
fmode
);
p
=
reserve_space
(
xdr
,
32
);
...
...
@@ -1481,6 +1460,7 @@ static inline void encode_claim_delegate_cur(struct xdr_stream *xdr, const struc
static
void
encode_open
(
struct
xdr_stream
*
xdr
,
const
struct
nfs_openargs
*
arg
,
struct
compound_hdr
*
hdr
)
{
encode_op_hdr
(
xdr
,
OP_OPEN
,
decode_open_maxsz
,
hdr
);
encode_openhdr
(
xdr
,
arg
);
encode_opentype
(
xdr
,
arg
);
switch
(
arg
->
claim
)
{
...
...
@@ -1496,55 +1476,33 @@ static void encode_open(struct xdr_stream *xdr, const struct nfs_openargs *arg,
default:
BUG
();
}
hdr
->
nops
++
;
hdr
->
replen
+=
decode_open_maxsz
;
}
static
void
encode_open_confirm
(
struct
xdr_stream
*
xdr
,
const
struct
nfs_open_confirmargs
*
arg
,
struct
compound_hdr
*
hdr
)
{
__be32
*
p
;
p
=
reserve_space
(
xdr
,
4
);
*
p
=
cpu_to_be32
(
OP_OPEN_CONFIRM
);
encode_op_hdr
(
xdr
,
OP_OPEN_CONFIRM
,
decode_open_confirm_maxsz
,
hdr
);
encode_nfs4_stateid
(
xdr
,
arg
->
stateid
);
encode_nfs4_seqid
(
xdr
,
arg
->
seqid
);
hdr
->
nops
++
;
hdr
->
replen
+=
decode_open_confirm_maxsz
;
}
static
void
encode_open_downgrade
(
struct
xdr_stream
*
xdr
,
const
struct
nfs_closeargs
*
arg
,
struct
compound_hdr
*
hdr
)
{
__be32
*
p
;
p
=
reserve_space
(
xdr
,
4
);
*
p
=
cpu_to_be32
(
OP_OPEN_DOWNGRADE
);
encode_op_hdr
(
xdr
,
OP_OPEN_DOWNGRADE
,
decode_open_downgrade_maxsz
,
hdr
);
encode_nfs4_stateid
(
xdr
,
arg
->
stateid
);
encode_nfs4_seqid
(
xdr
,
arg
->
seqid
);
encode_share_access
(
xdr
,
arg
->
fmode
);
hdr
->
nops
++
;
hdr
->
replen
+=
decode_open_downgrade_maxsz
;
}
static
void
encode_putfh
(
struct
xdr_stream
*
xdr
,
const
struct
nfs_fh
*
fh
,
struct
compound_hdr
*
hdr
)
{
__be32
*
p
;
p
=
reserve_space
(
xdr
,
4
);
*
p
=
cpu_to_be32
(
OP_PUTFH
);
encode_op_hdr
(
xdr
,
OP_PUTFH
,
decode_putfh_maxsz
,
hdr
);
encode_string
(
xdr
,
fh
->
size
,
fh
->
data
);
hdr
->
nops
++
;
hdr
->
replen
+=
decode_putfh_maxsz
;
}
static
void
encode_putrootfh
(
struct
xdr_stream
*
xdr
,
struct
compound_hdr
*
hdr
)
{
__be32
*
p
;
p
=
reserve_space
(
xdr
,
4
);
*
p
=
cpu_to_be32
(
OP_PUTROOTFH
);
hdr
->
nops
++
;
hdr
->
replen
+=
decode_putrootfh_maxsz
;
encode_op_hdr
(
xdr
,
OP_PUTROOTFH
,
decode_putrootfh_maxsz
,
hdr
);
}
static
void
encode_open_stateid
(
struct
xdr_stream
*
xdr
,
const
struct
nfs_open_context
*
ctx
,
const
struct
nfs_lock_context
*
l_ctx
,
int
zero_seqid
)
...
...
@@ -1564,17 +1522,13 @@ static void encode_read(struct xdr_stream *xdr, const struct nfs_readargs *args,
{
__be32
*
p
;
p
=
reserve_space
(
xdr
,
4
);
*
p
=
cpu_to_be32
(
OP_READ
);
encode_op_hdr
(
xdr
,
OP_READ
,
decode_read_maxsz
,
hdr
);
encode_open_stateid
(
xdr
,
args
->
context
,
args
->
lock_context
,
hdr
->
minorversion
);
p
=
reserve_space
(
xdr
,
12
);
p
=
xdr_encode_hyper
(
p
,
args
->
offset
);
*
p
=
cpu_to_be32
(
args
->
count
);
hdr
->
nops
++
;
hdr
->
replen
+=
decode_read_maxsz
;
}
static
void
encode_readdir
(
struct
xdr_stream
*
xdr
,
const
struct
nfs4_readdir_arg
*
readdir
,
struct
rpc_rqst
*
req
,
struct
compound_hdr
*
hdr
)
...
...
@@ -1622,35 +1576,20 @@ static void encode_readdir(struct xdr_stream *xdr, const struct nfs4_readdir_arg
static
void
encode_readlink
(
struct
xdr_stream
*
xdr
,
const
struct
nfs4_readlink
*
readlink
,
struct
rpc_rqst
*
req
,
struct
compound_hdr
*
hdr
)
{
__be32
*
p
;
p
=
reserve_space
(
xdr
,
4
);
*
p
=
cpu_to_be32
(
OP_READLINK
);
hdr
->
nops
++
;
hdr
->
replen
+=
decode_readlink_maxsz
;
encode_op_hdr
(
xdr
,
OP_READLINK
,
decode_readlink_maxsz
,
hdr
);
}
static
void
encode_remove
(
struct
xdr_stream
*
xdr
,
const
struct
qstr
*
name
,
struct
compound_hdr
*
hdr
)
{
__be32
*
p
;
p
=
reserve_space
(
xdr
,
4
);
*
p
=
cpu_to_be32
(
OP_REMOVE
);
encode_op_hdr
(
xdr
,
OP_REMOVE
,
decode_remove_maxsz
,
hdr
);
encode_string
(
xdr
,
name
->
len
,
name
->
name
);
hdr
->
nops
++
;
hdr
->
replen
+=
decode_remove_maxsz
;
}
static
void
encode_rename
(
struct
xdr_stream
*
xdr
,
const
struct
qstr
*
oldname
,
const
struct
qstr
*
newname
,
struct
compound_hdr
*
hdr
)
{
__be32
*
p
;
p
=
reserve_space
(
xdr
,
4
);
*
p
=
cpu_to_be32
(
OP_RENAME
);
encode_op_hdr
(
xdr
,
OP_RENAME
,
decode_rename_maxsz
,
hdr
);
encode_string
(
xdr
,
oldname
->
len
,
oldname
->
name
);
encode_string
(
xdr
,
newname
->
len
,
newname
->
name
);
hdr
->
nops
++
;
hdr
->
replen
+=
decode_rename_maxsz
;
}
static
void
encode_renew
(
struct
xdr_stream
*
xdr
,
clientid4
clid
,
...
...
@@ -1668,12 +1607,7 @@ static void encode_renew(struct xdr_stream *xdr, clientid4 clid,
static
void
encode_restorefh
(
struct
xdr_stream
*
xdr
,
struct
compound_hdr
*
hdr
)
{
__be32
*
p
;
p
=
reserve_space
(
xdr
,
4
);
*
p
=
cpu_to_be32
(
OP_RESTOREFH
);
hdr
->
nops
++
;
hdr
->
replen
+=
decode_restorefh_maxsz
;
encode_op_hdr
(
xdr
,
OP_RESTOREFH
,
decode_restorefh_maxsz
,
hdr
);
}
static
void
...
...
@@ -1681,8 +1615,7 @@ encode_setacl(struct xdr_stream *xdr, struct nfs_setaclargs *arg, struct compoun
{
__be32
*
p
;
p
=
reserve_space
(
xdr
,
4
);
*
p
=
cpu_to_be32
(
OP_SETATTR
);
encode_op_hdr
(
xdr
,
OP_SETATTR
,
decode_setacl_maxsz
,
hdr
);
encode_nfs4_stateid
(
xdr
,
&
zero_stateid
);
p
=
reserve_space
(
xdr
,
2
*
4
);
*
p
++
=
cpu_to_be32
(
1
);
...
...
@@ -1691,30 +1624,18 @@ encode_setacl(struct xdr_stream *xdr, struct nfs_setaclargs *arg, struct compoun
p
=
reserve_space
(
xdr
,
4
);
*
p
=
cpu_to_be32
(
arg
->
acl_len
);
xdr_write_pages
(
xdr
,
arg
->
acl_pages
,
arg
->
acl_pgbase
,
arg
->
acl_len
);
hdr
->
nops
++
;
hdr
->
replen
+=
decode_setacl_maxsz
;
}
static
void
encode_savefh
(
struct
xdr_stream
*
xdr
,
struct
compound_hdr
*
hdr
)
{
__be32
*
p
;
p
=
reserve_space
(
xdr
,
4
);
*
p
=
cpu_to_be32
(
OP_SAVEFH
);
hdr
->
nops
++
;
hdr
->
replen
+=
decode_savefh_maxsz
;
encode_op_hdr
(
xdr
,
OP_SAVEFH
,
decode_savefh_maxsz
,
hdr
);
}
static
void
encode_setattr
(
struct
xdr_stream
*
xdr
,
const
struct
nfs_setattrargs
*
arg
,
const
struct
nfs_server
*
server
,
struct
compound_hdr
*
hdr
)
{
__be32
*
p
;
p
=
reserve_space
(
xdr
,
4
);
*
p
=
cpu_to_be32
(
OP_SETATTR
);
encode_op_hdr
(
xdr
,
OP_SETATTR
,
decode_setattr_maxsz
,
hdr
);
encode_nfs4_stateid
(
xdr
,
&
arg
->
stateid
);
hdr
->
nops
++
;
hdr
->
replen
+=
decode_setattr_maxsz
;
encode_attrs
(
xdr
,
arg
->
iap
,
server
);
}
...
...
@@ -1753,9 +1674,7 @@ static void encode_write(struct xdr_stream *xdr, const struct nfs_writeargs *arg
{
__be32
*
p
;
p
=
reserve_space
(
xdr
,
4
);
*
p
=
cpu_to_be32
(
OP_WRITE
);
encode_op_hdr
(
xdr
,
OP_WRITE
,
decode_write_maxsz
,
hdr
);
encode_open_stateid
(
xdr
,
args
->
context
,
args
->
lock_context
,
hdr
->
minorversion
);
...
...
@@ -1765,30 +1684,18 @@ static void encode_write(struct xdr_stream *xdr, const struct nfs_writeargs *arg
*
p
=
cpu_to_be32
(
args
->
count
);
xdr_write_pages
(
xdr
,
args
->
pages
,
args
->
pgbase
,
args
->
count
);
hdr
->
nops
++
;
hdr
->
replen
+=
decode_write_maxsz
;
}
static
void
encode_delegreturn
(
struct
xdr_stream
*
xdr
,
const
nfs4_stateid
*
stateid
,
struct
compound_hdr
*
hdr
)
{
__be32
*
p
;
p
=
reserve_space
(
xdr
,
4
);
*
p
=
cpu_to_be32
(
OP_DELEGRETURN
);
encode_op_hdr
(
xdr
,
OP_DELEGRETURN
,
decode_delegreturn_maxsz
,
hdr
);
encode_nfs4_stateid
(
xdr
,
stateid
);
hdr
->
nops
++
;
hdr
->
replen
+=
decode_delegreturn_maxsz
;
}
static
void
encode_secinfo
(
struct
xdr_stream
*
xdr
,
const
struct
qstr
*
name
,
struct
compound_hdr
*
hdr
)
{
__be32
*
p
;
p
=
reserve_space
(
xdr
,
4
);
*
p
=
cpu_to_be32
(
OP_SECINFO
);
encode_op_hdr
(
xdr
,
OP_SECINFO
,
decode_secinfo_maxsz
,
hdr
);
encode_string
(
xdr
,
name
->
len
,
name
->
name
);
hdr
->
nops
++
;
hdr
->
replen
+=
decode_secinfo_maxsz
;
}
#if defined(CONFIG_NFS_V4_1)
...
...
@@ -2132,12 +2039,8 @@ static void encode_free_stateid(struct xdr_stream *xdr,
struct
nfs41_free_stateid_args
*
args
,
struct
compound_hdr
*
hdr
)
{
__be32
*
p
;
p
=
reserve_space
(
xdr
,
4
);
*
p
=
cpu_to_be32
(
OP_FREE_STATEID
);
encode_op_hdr
(
xdr
,
OP_FREE_STATEID
,
decode_free_stateid_maxsz
,
hdr
);
encode_nfs4_stateid
(
xdr
,
args
->
stateid
);
hdr
->
nops
++
;
hdr
->
replen
+=
decode_free_stateid_maxsz
;
}
#endif
/* CONFIG_NFS_V4_1 */
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment