forked from luck/tmp_suning_uos_patched
NFS/flexfile: Simplify nfs4_ff_layout_select_ds_stateid()
Pass in a pointer to the mirror rather than forcing another array access. Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
This commit is contained in:
parent
626d48b12c
commit
4cbc8a571c
|
@ -1799,9 +1799,7 @@ ff_layout_read_pagelist(struct nfs_pgio_header *hdr)
|
|||
if (fh)
|
||||
hdr->args.fh = fh;
|
||||
|
||||
if (vers == 4 &&
|
||||
!nfs4_ff_layout_select_ds_stateid(lseg, idx, &hdr->args.stateid))
|
||||
goto out_failed;
|
||||
nfs4_ff_layout_select_ds_stateid(mirror, &hdr->args.stateid);
|
||||
|
||||
/*
|
||||
* Note that if we ever decide to split across DSes,
|
||||
|
@ -1867,9 +1865,7 @@ ff_layout_write_pagelist(struct nfs_pgio_header *hdr, int sync)
|
|||
if (fh)
|
||||
hdr->args.fh = fh;
|
||||
|
||||
if (vers == 4 &&
|
||||
!nfs4_ff_layout_select_ds_stateid(lseg, idx, &hdr->args.stateid))
|
||||
goto out_failed;
|
||||
nfs4_ff_layout_select_ds_stateid(mirror, &hdr->args.stateid);
|
||||
|
||||
/*
|
||||
* Note that if we ever decide to split across DSes,
|
||||
|
|
|
@ -204,10 +204,9 @@ unsigned int ff_layout_fetch_ds_ioerr(struct pnfs_layout_hdr *lo,
|
|||
unsigned int maxnum);
|
||||
struct nfs_fh *
|
||||
nfs4_ff_layout_select_ds_fh(struct nfs4_ff_layout_mirror *mirror);
|
||||
int
|
||||
nfs4_ff_layout_select_ds_stateid(struct pnfs_layout_segment *lseg,
|
||||
u32 mirror_idx,
|
||||
nfs4_stateid *stateid);
|
||||
void
|
||||
nfs4_ff_layout_select_ds_stateid(const struct nfs4_ff_layout_mirror *mirror,
|
||||
nfs4_stateid *stateid);
|
||||
|
||||
struct nfs4_pnfs_ds *
|
||||
nfs4_ff_layout_prepare_ds(struct pnfs_layout_segment *lseg,
|
||||
|
|
|
@ -357,23 +357,12 @@ nfs4_ff_layout_select_ds_fh(struct nfs4_ff_layout_mirror *mirror)
|
|||
return &mirror->fh_versions[0];
|
||||
}
|
||||
|
||||
int
|
||||
nfs4_ff_layout_select_ds_stateid(struct pnfs_layout_segment *lseg,
|
||||
u32 mirror_idx,
|
||||
nfs4_stateid *stateid)
|
||||
void
|
||||
nfs4_ff_layout_select_ds_stateid(const struct nfs4_ff_layout_mirror *mirror,
|
||||
nfs4_stateid *stateid)
|
||||
{
|
||||
struct nfs4_ff_layout_mirror *mirror = FF_LAYOUT_COMP(lseg, mirror_idx);
|
||||
|
||||
if (!ff_layout_mirror_valid(lseg, mirror, false)) {
|
||||
pr_err_ratelimited("NFS: %s: No data server for mirror offset index %d\n",
|
||||
__func__, mirror_idx);
|
||||
goto out;
|
||||
}
|
||||
|
||||
nfs4_stateid_copy(stateid, &mirror->stateid);
|
||||
return 1;
|
||||
out:
|
||||
return 0;
|
||||
if (nfs4_ff_layout_ds_version(mirror) == 4)
|
||||
nfs4_stateid_copy(stateid, &mirror->stateid);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in New Issue
Block a user