Lines Matching full:mirror
50 struct nfs4_ff_layout_mirror *mirror);
172 struct nfs4_ff_layout_mirror *mirror = FF_LAYOUT_COMP(lseg, ds_idx);
174 return nfs_local_open_fh(clp, cred, fh, &mirror->nfl, mode);
204 struct nfs4_ff_layout_mirror *mirror)
212 if (memcmp(&mirror->devid, &pos->devid, sizeof(pos->devid)) != 0)
214 if (!ff_mirror_match_fh(mirror, pos))
221 list_add(&mirror->mirrors, &ff_layout->mirrors);
222 mirror->layout = lo;
224 return mirror;
228 ff_layout_remove_mirror(struct nfs4_ff_layout_mirror *mirror)
231 if (mirror->layout == NULL)
233 inode = mirror->layout->plh_inode;
235 list_del(&mirror->mirrors);
237 mirror->layout = NULL;
242 struct nfs4_ff_layout_mirror *mirror;
244 mirror = kzalloc(sizeof(*mirror), gfp_flags);
245 if (mirror != NULL) {
246 spin_lock_init(&mirror->lock);
247 refcount_set(&mirror->ref, 1);
248 INIT_LIST_HEAD(&mirror->mirrors);
249 nfs_localio_file_init(&mirror->nfl);
251 return mirror;
254 static void ff_layout_free_mirror(struct nfs4_ff_layout_mirror *mirror)
258 ff_layout_remove_mirror(mirror);
259 kfree(mirror->fh_versions);
260 nfs_close_local_fh(&mirror->nfl);
261 cred = rcu_access_pointer(mirror->ro_cred);
263 cred = rcu_access_pointer(mirror->rw_cred);
265 nfs4_ff_layout_put_deviceid(mirror->mirror_ds);
266 kfree(mirror);
269 static void ff_layout_put_mirror(struct nfs4_ff_layout_mirror *mirror)
271 if (mirror != NULL && refcount_dec_and_test(&mirror->ref))
272 ff_layout_free_mirror(mirror);
431 struct nfs4_ff_layout_mirror *mirror;
531 mirror = ff_layout_add_mirror(lh, fls->mirror_array[i]);
532 if (mirror != fls->mirror_array[i]) {
535 cred = xchg(&mirror->ro_cred, cred);
538 cred = xchg(&mirror->rw_cred, cred);
542 fls->mirror_array[i] = mirror;
619 nfs4_ff_layoutstat_start_io(struct nfs4_ff_layout_mirror *mirror,
624 struct nfs4_flexfile_layout *ffl = FF_LAYOUT_FROM_HDR(mirror->layout);
627 if (!mirror->start_time)
628 mirror->start_time = now;
629 if (mirror->report_interval != 0)
630 report_interval = (s64)mirror->report_interval * 1000LL;
677 struct nfs4_ff_layout_mirror *mirror,
682 spin_lock(&mirror->lock);
683 report = nfs4_ff_layoutstat_start_io(mirror, &mirror->read_stat, now);
684 nfs4_ff_layout_stat_io_update_requested(&mirror->read_stat, requested);
685 set_bit(NFS4_FF_MIRROR_STAT_AVAIL, &mirror->flags);
686 spin_unlock(&mirror->lock);
694 struct nfs4_ff_layout_mirror *mirror,
698 spin_lock(&mirror->lock);
699 nfs4_ff_layout_stat_io_update_completed(&mirror->read_stat,
702 set_bit(NFS4_FF_MIRROR_STAT_AVAIL, &mirror->flags);
703 spin_unlock(&mirror->lock);
708 struct nfs4_ff_layout_mirror *mirror,
713 spin_lock(&mirror->lock);
714 report = nfs4_ff_layoutstat_start_io(mirror , &mirror->write_stat, now);
715 nfs4_ff_layout_stat_io_update_requested(&mirror->write_stat, requested);
716 set_bit(NFS4_FF_MIRROR_STAT_AVAIL, &mirror->flags);
717 spin_unlock(&mirror->lock);
725 struct nfs4_ff_layout_mirror *mirror,
733 spin_lock(&mirror->lock);
734 nfs4_ff_layout_stat_io_update_completed(&mirror->write_stat,
736 set_bit(NFS4_FF_MIRROR_STAT_AVAIL, &mirror->flags);
737 spin_unlock(&mirror->lock);
764 struct nfs4_ff_layout_mirror *mirror;
770 mirror = FF_LAYOUT_COMP(lseg, idx);
771 ds = nfs4_ff_layout_prepare_ds(lseg, mirror, false);
776 nfs4_test_deviceid_unavailable(&mirror->mirror_ds->id_node))
847 struct nfs4_ff_layout_mirror *mirror;
880 mirror = FF_LAYOUT_COMP(pgio->pg_lseg, ds_idx);
882 pgm->pg_bsize = mirror->mirror_ds->ds_versions[0].rsize;
916 struct nfs4_ff_layout_mirror *mirror;
943 mirror = FF_LAYOUT_COMP(pgio->pg_lseg, i);
944 ds = nfs4_ff_layout_prepare_ds(pgio->pg_lseg, mirror, true);
954 pgm->pg_bsize = mirror->mirror_ds->ds_versions[0].wsize;
1262 struct nfs4_ff_layout_mirror *mirror;
1295 mirror = FF_LAYOUT_COMP(lseg, idx);
1297 mirror, offset, length, status, opnum,
1812 struct nfs4_ff_layout_mirror *mirror;
1823 mirror = FF_LAYOUT_COMP(lseg, idx);
1824 ds = nfs4_ff_layout_prepare_ds(lseg, mirror, false);
1828 ds_clnt = nfs4_ff_find_or_create_ds_client(mirror, ds->ds_clp,
1833 ds_cred = ff_layout_get_ds_cred(mirror, &lseg->pls_range, hdr->cred);
1837 vers = nfs4_ff_layout_ds_version(mirror);
1845 fh = nfs4_ff_layout_select_ds_fh(mirror);
1849 nfs4_ff_layout_select_ds_stateid(mirror, &hdr->args.stateid);
1890 struct nfs4_ff_layout_mirror *mirror;
1897 mirror = FF_LAYOUT_COMP(lseg, idx);
1898 ds = nfs4_ff_layout_prepare_ds(lseg, mirror, true);
1902 ds_clnt = nfs4_ff_find_or_create_ds_client(mirror, ds->ds_clp,
1907 ds_cred = ff_layout_get_ds_cred(mirror, &lseg->pls_range, hdr->cred);
1911 vers = nfs4_ff_layout_ds_version(mirror);
1922 fh = nfs4_ff_layout_select_ds_fh(mirror);
1926 nfs4_ff_layout_select_ds_stateid(mirror, &hdr->args.stateid);
1981 struct nfs4_ff_layout_mirror *mirror;
1992 mirror = FF_LAYOUT_COMP(lseg, idx);
1993 ds = nfs4_ff_layout_prepare_ds(lseg, mirror, true);
1997 ds_clnt = nfs4_ff_find_or_create_ds_client(mirror, ds->ds_clp,
2002 ds_cred = ff_layout_get_ds_cred(mirror, &lseg->pls_range, data->cred);
2006 vers = nfs4_ff_layout_ds_version(mirror);
2079 struct nfs4_ff_layout_mirror *mirror;
2087 mirror = flseg->mirror_array[idx];
2088 mirror_ds = mirror->mirror_ds;
2091 ds = mirror->mirror_ds->ds;
2489 struct nfs4_ff_layout_mirror *mirror)
2492 struct nfs4_pnfs_ds *ds = mirror->mirror_ds->ds;
2493 struct nfs_fh *fh = &mirror->fh_versions[0];
2505 spin_lock(&mirror->lock);
2506 ff_layout_encode_io_latency(xdr, &mirror->read_stat.io_stat);
2508 ff_layout_encode_io_latency(xdr, &mirror->write_stat.io_stat);
2509 spin_unlock(&mirror->lock);
2511 ff_layout_encode_nfstime(xdr, ktime_sub(ktime_get(), mirror->start_time));
2535 struct nfs4_ff_layout_mirror *mirror = opaque->data;
2537 ff_layout_put_mirror(mirror);
2551 struct nfs4_ff_layout_mirror *mirror;
2555 list_for_each_entry(mirror, &ff_layout->mirrors, mirrors) {
2558 if (IS_ERR_OR_NULL(mirror->mirror_ds))
2561 &mirror->flags) &&
2564 /* mirror refcount put in cleanup_layoutstats */
2565 if (!refcount_inc_not_zero(&mirror->ref))
2567 dev = &mirror->mirror_ds->id_node;
2571 spin_lock(&mirror->lock);
2572 devinfo->read_count = mirror->read_stat.io_stat.ops_completed;
2573 devinfo->read_bytes = mirror->read_stat.io_stat.bytes_completed;
2574 devinfo->write_count = mirror->write_stat.io_stat.ops_completed;
2575 devinfo->write_bytes = mirror->write_stat.io_stat.bytes_completed;
2576 spin_unlock(&mirror->lock);
2579 devinfo->ld_private.data = mirror;