Commit b4be2c59 authored by Olga Kornievskaia's avatar Olga Kornievskaia Committed by Trond Myklebust

NFSv4.1 restrict GETATTR fs_location query to the main transport

In the presence of trunking transports, it's helpful to make sure
that during the migration event, the GETATTR for fs_location attribute
happens on the main transport.
Signed-off-by: default avatarOlga Kornievskaia <kolga@netapp.com>
Signed-off-by: default avatarTrond Myklebust <trond.myklebust@hammerspace.com>
parent cb8fac6d
...@@ -8008,6 +8008,18 @@ static int _nfs41_proc_get_locations(struct nfs_server *server, ...@@ -8008,6 +8008,18 @@ static int _nfs41_proc_get_locations(struct nfs_server *server,
.rpc_resp = &res, .rpc_resp = &res,
.rpc_cred = cred, .rpc_cred = cred,
}; };
struct nfs4_call_sync_data data = {
.seq_server = server,
.seq_args = &args.seq_args,
.seq_res = &res.seq_res,
};
struct rpc_task_setup task_setup_data = {
.rpc_client = clnt,
.rpc_message = &msg,
.callback_ops = server->nfs_client->cl_mvops->call_sync_ops,
.callback_data = &data,
.flags = RPC_TASK_NO_ROUND_ROBIN,
};
int status; int status;
nfs_fattr_init(&locations->fattr); nfs_fattr_init(&locations->fattr);
...@@ -8015,8 +8027,7 @@ static int _nfs41_proc_get_locations(struct nfs_server *server, ...@@ -8015,8 +8027,7 @@ static int _nfs41_proc_get_locations(struct nfs_server *server,
locations->nlocations = 0; locations->nlocations = 0;
nfs4_init_sequence(&args.seq_args, &res.seq_res, 0, 1); nfs4_init_sequence(&args.seq_args, &res.seq_res, 0, 1);
status = nfs4_call_sync_sequence(clnt, server, &msg, status = nfs4_call_sync_custom(&task_setup_data);
&args.seq_args, &res.seq_res);
if (status == NFS4_OK && if (status == NFS4_OK &&
res.seq_res.sr_status_flags & SEQ4_STATUS_LEASE_MOVED) res.seq_res.sr_status_flags & SEQ4_STATUS_LEASE_MOVED)
status = -NFS4ERR_LEASE_MOVED; status = -NFS4ERR_LEASE_MOVED;
......
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