Lines Matching full:mirror

50 			      struct nfs4_ff_layout_mirror *mirror);
172 struct nfs4_ff_layout_mirror *mirror = FF_LAYOUT_COMP(lseg, ds_idx); in ff_local_open_fh() local
174 return nfs_local_open_fh(clp, cred, fh, &mirror->nfl, mode); in ff_local_open_fh()
204 struct nfs4_ff_layout_mirror *mirror) in ff_layout_add_mirror() argument
212 if (memcmp(&mirror->devid, &pos->devid, sizeof(pos->devid)) != 0) in ff_layout_add_mirror()
214 if (!ff_mirror_match_fh(mirror, pos)) in ff_layout_add_mirror()
221 list_add(&mirror->mirrors, &ff_layout->mirrors); in ff_layout_add_mirror()
222 mirror->layout = lo; in ff_layout_add_mirror()
224 return mirror; in ff_layout_add_mirror()
228 ff_layout_remove_mirror(struct nfs4_ff_layout_mirror *mirror) in ff_layout_remove_mirror() argument
231 if (mirror->layout == NULL) in ff_layout_remove_mirror()
233 inode = mirror->layout->plh_inode; in ff_layout_remove_mirror()
235 list_del(&mirror->mirrors); in ff_layout_remove_mirror()
237 mirror->layout = NULL; in ff_layout_remove_mirror()
242 struct nfs4_ff_layout_mirror *mirror; in ff_layout_alloc_mirror() local
244 mirror = kzalloc(sizeof(*mirror), gfp_flags); in ff_layout_alloc_mirror()
245 if (mirror != NULL) { in ff_layout_alloc_mirror()
246 spin_lock_init(&mirror->lock); in ff_layout_alloc_mirror()
247 refcount_set(&mirror->ref, 1); in ff_layout_alloc_mirror()
248 INIT_LIST_HEAD(&mirror->mirrors); in ff_layout_alloc_mirror()
249 nfs_localio_file_init(&mirror->nfl); in ff_layout_alloc_mirror()
251 return mirror; in ff_layout_alloc_mirror()
254 static void ff_layout_free_mirror(struct nfs4_ff_layout_mirror *mirror) in ff_layout_free_mirror() argument
258 ff_layout_remove_mirror(mirror); in ff_layout_free_mirror()
259 kfree(mirror->fh_versions); in ff_layout_free_mirror()
260 nfs_close_local_fh(&mirror->nfl); in ff_layout_free_mirror()
261 cred = rcu_access_pointer(mirror->ro_cred); in ff_layout_free_mirror()
263 cred = rcu_access_pointer(mirror->rw_cred); in ff_layout_free_mirror()
265 nfs4_ff_layout_put_deviceid(mirror->mirror_ds); in ff_layout_free_mirror()
266 kfree(mirror); in ff_layout_free_mirror()
269 static void ff_layout_put_mirror(struct nfs4_ff_layout_mirror *mirror) in ff_layout_put_mirror() argument
271 if (mirror != NULL && refcount_dec_and_test(&mirror->ref)) in ff_layout_put_mirror()
272 ff_layout_free_mirror(mirror); in ff_layout_put_mirror()
431 struct nfs4_ff_layout_mirror *mirror; in ff_layout_alloc_lseg() local
531 mirror = ff_layout_add_mirror(lh, fls->mirror_array[i]); in ff_layout_alloc_lseg()
532 if (mirror != fls->mirror_array[i]) { in ff_layout_alloc_lseg()
535 cred = xchg(&mirror->ro_cred, cred); in ff_layout_alloc_lseg()
538 cred = xchg(&mirror->rw_cred, cred); in ff_layout_alloc_lseg()
542 fls->mirror_array[i] = mirror; in ff_layout_alloc_lseg()
619 nfs4_ff_layoutstat_start_io(struct nfs4_ff_layout_mirror *mirror, in nfs4_ff_layoutstat_start_io() argument
624 struct nfs4_flexfile_layout *ffl = FF_LAYOUT_FROM_HDR(mirror->layout); in nfs4_ff_layoutstat_start_io()
627 if (!mirror->start_time) in nfs4_ff_layoutstat_start_io()
628 mirror->start_time = now; in nfs4_ff_layoutstat_start_io()
629 if (mirror->report_interval != 0) in nfs4_ff_layoutstat_start_io()
630 report_interval = (s64)mirror->report_interval * 1000LL; in nfs4_ff_layoutstat_start_io()
677 struct nfs4_ff_layout_mirror *mirror, in nfs4_ff_layout_stat_io_start_read() argument
682 spin_lock(&mirror->lock); in nfs4_ff_layout_stat_io_start_read()
683 report = nfs4_ff_layoutstat_start_io(mirror, &mirror->read_stat, now); in nfs4_ff_layout_stat_io_start_read()
684 nfs4_ff_layout_stat_io_update_requested(&mirror->read_stat, requested); in nfs4_ff_layout_stat_io_start_read()
685 set_bit(NFS4_FF_MIRROR_STAT_AVAIL, &mirror->flags); in nfs4_ff_layout_stat_io_start_read()
686 spin_unlock(&mirror->lock); in nfs4_ff_layout_stat_io_start_read()
694 struct nfs4_ff_layout_mirror *mirror, in nfs4_ff_layout_stat_io_end_read() argument
698 spin_lock(&mirror->lock); in nfs4_ff_layout_stat_io_end_read()
699 nfs4_ff_layout_stat_io_update_completed(&mirror->read_stat, in nfs4_ff_layout_stat_io_end_read()
702 set_bit(NFS4_FF_MIRROR_STAT_AVAIL, &mirror->flags); in nfs4_ff_layout_stat_io_end_read()
703 spin_unlock(&mirror->lock); in nfs4_ff_layout_stat_io_end_read()
708 struct nfs4_ff_layout_mirror *mirror, in nfs4_ff_layout_stat_io_start_write() argument
713 spin_lock(&mirror->lock); in nfs4_ff_layout_stat_io_start_write()
714 report = nfs4_ff_layoutstat_start_io(mirror , &mirror->write_stat, now); in nfs4_ff_layout_stat_io_start_write()
715 nfs4_ff_layout_stat_io_update_requested(&mirror->write_stat, requested); in nfs4_ff_layout_stat_io_start_write()
716 set_bit(NFS4_FF_MIRROR_STAT_AVAIL, &mirror->flags); in nfs4_ff_layout_stat_io_start_write()
717 spin_unlock(&mirror->lock); in nfs4_ff_layout_stat_io_start_write()
725 struct nfs4_ff_layout_mirror *mirror, in nfs4_ff_layout_stat_io_end_write() argument
733 spin_lock(&mirror->lock); in nfs4_ff_layout_stat_io_end_write()
734 nfs4_ff_layout_stat_io_update_completed(&mirror->write_stat, in nfs4_ff_layout_stat_io_end_write()
736 set_bit(NFS4_FF_MIRROR_STAT_AVAIL, &mirror->flags); in nfs4_ff_layout_stat_io_end_write()
737 spin_unlock(&mirror->lock); in nfs4_ff_layout_stat_io_end_write()
764 struct nfs4_ff_layout_mirror *mirror; in ff_layout_choose_ds_for_read() local
770 mirror = FF_LAYOUT_COMP(lseg, idx); in ff_layout_choose_ds_for_read()
771 ds = nfs4_ff_layout_prepare_ds(lseg, mirror, false); in ff_layout_choose_ds_for_read()
776 nfs4_test_deviceid_unavailable(&mirror->mirror_ds->id_node)) in ff_layout_choose_ds_for_read()
847 struct nfs4_ff_layout_mirror *mirror; in ff_layout_pg_init_read() local
880 mirror = FF_LAYOUT_COMP(pgio->pg_lseg, ds_idx); in ff_layout_pg_init_read()
882 pgm->pg_bsize = mirror->mirror_ds->ds_versions[0].rsize; in ff_layout_pg_init_read()
916 struct nfs4_ff_layout_mirror *mirror; in ff_layout_pg_init_write() local
943 mirror = FF_LAYOUT_COMP(pgio->pg_lseg, i); in ff_layout_pg_init_write()
944 ds = nfs4_ff_layout_prepare_ds(pgio->pg_lseg, mirror, true); in ff_layout_pg_init_write()
954 pgm->pg_bsize = mirror->mirror_ds->ds_versions[0].wsize; in ff_layout_pg_init_write()
1252 struct nfs4_ff_layout_mirror *mirror; in ff_layout_io_track_ds_error() local
1284 mirror = FF_LAYOUT_COMP(lseg, idx); in ff_layout_io_track_ds_error()
1286 mirror, offset, length, status, opnum, in ff_layout_io_track_ds_error()
1792 struct nfs4_ff_layout_mirror *mirror; in ff_layout_read_pagelist() local
1803 mirror = FF_LAYOUT_COMP(lseg, idx); in ff_layout_read_pagelist()
1804 ds = nfs4_ff_layout_prepare_ds(lseg, mirror, false); in ff_layout_read_pagelist()
1808 ds_clnt = nfs4_ff_find_or_create_ds_client(mirror, ds->ds_clp, in ff_layout_read_pagelist()
1813 ds_cred = ff_layout_get_ds_cred(mirror, &lseg->pls_range, hdr->cred); in ff_layout_read_pagelist()
1817 vers = nfs4_ff_layout_ds_version(mirror); in ff_layout_read_pagelist()
1825 fh = nfs4_ff_layout_select_ds_fh(mirror); in ff_layout_read_pagelist()
1829 nfs4_ff_layout_select_ds_stateid(mirror, &hdr->args.stateid); in ff_layout_read_pagelist()
1870 struct nfs4_ff_layout_mirror *mirror; in ff_layout_write_pagelist() local
1877 mirror = FF_LAYOUT_COMP(lseg, idx); in ff_layout_write_pagelist()
1878 ds = nfs4_ff_layout_prepare_ds(lseg, mirror, true); in ff_layout_write_pagelist()
1882 ds_clnt = nfs4_ff_find_or_create_ds_client(mirror, ds->ds_clp, in ff_layout_write_pagelist()
1887 ds_cred = ff_layout_get_ds_cred(mirror, &lseg->pls_range, hdr->cred); in ff_layout_write_pagelist()
1891 vers = nfs4_ff_layout_ds_version(mirror); in ff_layout_write_pagelist()
1902 fh = nfs4_ff_layout_select_ds_fh(mirror); in ff_layout_write_pagelist()
1906 nfs4_ff_layout_select_ds_stateid(mirror, &hdr->args.stateid); in ff_layout_write_pagelist()
1961 struct nfs4_ff_layout_mirror *mirror; in ff_layout_initiate_commit() local
1972 mirror = FF_LAYOUT_COMP(lseg, idx); in ff_layout_initiate_commit()
1973 ds = nfs4_ff_layout_prepare_ds(lseg, mirror, true); in ff_layout_initiate_commit()
1977 ds_clnt = nfs4_ff_find_or_create_ds_client(mirror, ds->ds_clp, in ff_layout_initiate_commit()
1982 ds_cred = ff_layout_get_ds_cred(mirror, &lseg->pls_range, data->cred); in ff_layout_initiate_commit()
1986 vers = nfs4_ff_layout_ds_version(mirror); in ff_layout_initiate_commit()
2059 struct nfs4_ff_layout_mirror *mirror; in ff_layout_cancel_io() local
2067 mirror = flseg->mirror_array[idx]; in ff_layout_cancel_io()
2068 mirror_ds = mirror->mirror_ds; in ff_layout_cancel_io()
2071 ds = mirror->mirror_ds->ds; in ff_layout_cancel_io()
2469 struct nfs4_ff_layout_mirror *mirror) in ff_layout_encode_ff_layoutupdate() argument
2472 struct nfs4_pnfs_ds *ds = mirror->mirror_ds->ds; in ff_layout_encode_ff_layoutupdate()
2473 struct nfs_fh *fh = &mirror->fh_versions[0]; in ff_layout_encode_ff_layoutupdate()
2485 spin_lock(&mirror->lock); in ff_layout_encode_ff_layoutupdate()
2486 ff_layout_encode_io_latency(xdr, &mirror->read_stat.io_stat); in ff_layout_encode_ff_layoutupdate()
2488 ff_layout_encode_io_latency(xdr, &mirror->write_stat.io_stat); in ff_layout_encode_ff_layoutupdate()
2489 spin_unlock(&mirror->lock); in ff_layout_encode_ff_layoutupdate()
2491 ff_layout_encode_nfstime(xdr, ktime_sub(ktime_get(), mirror->start_time)); in ff_layout_encode_ff_layoutupdate()
2515 struct nfs4_ff_layout_mirror *mirror = opaque->data; in ff_layout_free_layoutstats() local
2517 ff_layout_put_mirror(mirror); in ff_layout_free_layoutstats()
2531 struct nfs4_ff_layout_mirror *mirror; in ff_layout_mirror_prepare_stats() local
2535 list_for_each_entry(mirror, &ff_layout->mirrors, mirrors) { in ff_layout_mirror_prepare_stats()
2538 if (IS_ERR_OR_NULL(mirror->mirror_ds)) in ff_layout_mirror_prepare_stats()
2541 &mirror->flags) && in ff_layout_mirror_prepare_stats()
2544 /* mirror refcount put in cleanup_layoutstats */ in ff_layout_mirror_prepare_stats()
2545 if (!refcount_inc_not_zero(&mirror->ref)) in ff_layout_mirror_prepare_stats()
2547 dev = &mirror->mirror_ds->id_node; in ff_layout_mirror_prepare_stats()
2551 spin_lock(&mirror->lock); in ff_layout_mirror_prepare_stats()
2552 devinfo->read_count = mirror->read_stat.io_stat.ops_completed; in ff_layout_mirror_prepare_stats()
2553 devinfo->read_bytes = mirror->read_stat.io_stat.bytes_completed; in ff_layout_mirror_prepare_stats()
2554 devinfo->write_count = mirror->write_stat.io_stat.ops_completed; in ff_layout_mirror_prepare_stats()
2555 devinfo->write_bytes = mirror->write_stat.io_stat.bytes_completed; in ff_layout_mirror_prepare_stats()
2556 spin_unlock(&mirror->lock); in ff_layout_mirror_prepare_stats()
2559 devinfo->ld_private.data = mirror; in ff_layout_mirror_prepare_stats()