pnfs: GETDEVICELIST
The block driver uses GETDEVICELIST Signed-off-by: Andy Adamson <andros@netapp.com> [pass struct nfs_server * to getdevicelist] [get machince creds for getdevicelist] [fix getdevicelist decode sizing] Signed-off-by: Benny Halevy <bhalevy@panasas.com> Signed-off-by: Benny Halevy <bhalevy@tonian.com> Signed-off-by: Jim Rees <rees@umich.edu> Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
This commit is contained in:

committed by
Trond Myklebust

parent
3557c6c3be
commit
7f11d8d38d
@@ -5834,6 +5834,54 @@ int nfs4_proc_layoutreturn(struct nfs4_layoutreturn *lrp)
|
||||
return status;
|
||||
}
|
||||
|
||||
/*
|
||||
* Retrieve the list of Data Server devices from the MDS.
|
||||
*/
|
||||
static int _nfs4_getdevicelist(struct nfs_server *server,
|
||||
const struct nfs_fh *fh,
|
||||
struct pnfs_devicelist *devlist)
|
||||
{
|
||||
struct nfs4_getdevicelist_args args = {
|
||||
.fh = fh,
|
||||
.layoutclass = server->pnfs_curr_ld->id,
|
||||
};
|
||||
struct nfs4_getdevicelist_res res = {
|
||||
.devlist = devlist,
|
||||
};
|
||||
struct rpc_message msg = {
|
||||
.rpc_proc = &nfs4_procedures[NFSPROC4_CLNT_GETDEVICELIST],
|
||||
.rpc_argp = &args,
|
||||
.rpc_resp = &res,
|
||||
};
|
||||
int status;
|
||||
|
||||
dprintk("--> %s\n", __func__);
|
||||
status = nfs4_call_sync(server->client, server, &msg, &args.seq_args,
|
||||
&res.seq_res, 0);
|
||||
dprintk("<-- %s status=%d\n", __func__, status);
|
||||
return status;
|
||||
}
|
||||
|
||||
int nfs4_proc_getdevicelist(struct nfs_server *server,
|
||||
const struct nfs_fh *fh,
|
||||
struct pnfs_devicelist *devlist)
|
||||
{
|
||||
struct nfs4_exception exception = { };
|
||||
int err;
|
||||
|
||||
do {
|
||||
err = nfs4_handle_exception(server,
|
||||
_nfs4_getdevicelist(server, fh, devlist),
|
||||
&exception);
|
||||
} while (exception.retry);
|
||||
|
||||
dprintk("%s: err=%d, num_devs=%u\n", __func__,
|
||||
err, devlist->num_devs);
|
||||
|
||||
return err;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(nfs4_proc_getdevicelist);
|
||||
|
||||
static int
|
||||
_nfs4_proc_getdeviceinfo(struct nfs_server *server, struct pnfs_device *pdev)
|
||||
{
|
||||
|
Reference in New Issue
Block a user