Lines Matching refs:mirror

253 			     struct nfs4_ff_layout_mirror *mirror, u64 offset,
262 if (IS_ERR_OR_NULL(mirror->mirror_ds))
274 nfs4_stateid_copy(&dserr->stateid, &mirror->stateid);
275 memcpy(&dserr->deviceid, &mirror->mirror_ds->id_node.deviceid,
285 ff_layout_get_mirror_cred(struct nfs4_ff_layout_mirror *mirror, u32 iomode)
290 pcred = &mirror->ro_cred;
292 pcred = &mirror->rw_cred;
307 nfs4_ff_layout_select_ds_fh(struct nfs4_ff_layout_mirror *mirror)
310 return &mirror->fh_versions[0];
314 nfs4_ff_layout_select_ds_stateid(const struct nfs4_ff_layout_mirror *mirror,
317 if (nfs4_ff_layout_ds_version(mirror) == 4)
318 nfs4_stateid_copy(stateid, &mirror->stateid);
323 struct nfs4_ff_layout_mirror *mirror)
325 if (mirror == NULL)
327 if (mirror->mirror_ds == NULL) {
332 &mirror->devid, lo->plh_lc_cred,
338 if (cmpxchg(&mirror->mirror_ds, NULL, mirror_ds) &&
343 if (IS_ERR(mirror->mirror_ds))
354 * @mirror: layout mirror describing the DS to use
358 * selecting a mirror to use and connecting the client to it if it's not
361 * Since we only need a single functioning mirror to satisfy a read, we don't
363 * mirror should result in a LAYOUTRETURN. @fail_return is how we distinguish
370 struct nfs4_ff_layout_mirror *mirror,
379 if (!ff_layout_init_mirror_ds(lseg->pls_layout, mirror))
382 ds = mirror->mirror_ds->ds;
391 status = nfs4_pnfs_ds_connect(s, ds, &mirror->mirror_ds->id_node,
393 mirror->mirror_ds->ds_versions[0].version,
394 mirror->mirror_ds->ds_versions[0].minor_version);
401 if (mirror->mirror_ds->ds_versions[0].rsize > max_payload)
402 mirror->mirror_ds->ds_versions[0].rsize = max_payload;
403 if (mirror->mirror_ds->ds_versions[0].wsize > max_payload)
404 mirror->mirror_ds->ds_versions[0].wsize = max_payload;
409 mirror, lseg->pls_range.offset,
421 ff_layout_get_ds_cred(struct nfs4_ff_layout_mirror *mirror,
427 if (mirror && !mirror->mirror_ds->ds_versions[0].tightly_coupled) {
428 cred = ff_layout_get_mirror_cred(mirror, range->iomode);
439 * @mirror: pointer to the mirror
447 nfs4_ff_find_or_create_ds_client(struct nfs4_ff_layout_mirror *mirror,
450 switch (mirror->mirror_ds->ds_versions[0].version) {
554 struct nfs4_ff_layout_mirror *mirror;
559 mirror = FF_LAYOUT_COMP(lseg, idx);
560 if (mirror) {
561 if (!mirror->mirror_ds)
563 if (IS_ERR(mirror->mirror_ds))
565 devid = &mirror->mirror_ds->id_node;
576 struct nfs4_ff_layout_mirror *mirror;
581 mirror = FF_LAYOUT_COMP(lseg, idx);
582 if (!mirror || IS_ERR(mirror->mirror_ds))
584 if (!mirror->mirror_ds)
586 devid = &mirror->mirror_ds->id_node;