Lines Matching refs:mirror

163 		struct nfs4_ff_layout_mirror *mirror)  in ff_layout_add_mirror()  argument
171 if (mirror->mirror_ds != pos->mirror_ds) in ff_layout_add_mirror()
173 if (!ff_mirror_match_fh(mirror, pos)) in ff_layout_add_mirror()
180 list_add(&mirror->mirrors, &ff_layout->mirrors); in ff_layout_add_mirror()
181 mirror->layout = lo; in ff_layout_add_mirror()
183 return mirror; in ff_layout_add_mirror()
187 ff_layout_remove_mirror(struct nfs4_ff_layout_mirror *mirror) in ff_layout_remove_mirror() argument
190 if (mirror->layout == NULL) in ff_layout_remove_mirror()
192 inode = mirror->layout->plh_inode; in ff_layout_remove_mirror()
194 list_del(&mirror->mirrors); in ff_layout_remove_mirror()
196 mirror->layout = NULL; in ff_layout_remove_mirror()
201 struct nfs4_ff_layout_mirror *mirror; in ff_layout_alloc_mirror() local
203 mirror = kzalloc(sizeof(*mirror), gfp_flags); in ff_layout_alloc_mirror()
204 if (mirror != NULL) { in ff_layout_alloc_mirror()
205 spin_lock_init(&mirror->lock); in ff_layout_alloc_mirror()
206 atomic_set(&mirror->ref, 1); in ff_layout_alloc_mirror()
207 INIT_LIST_HEAD(&mirror->mirrors); in ff_layout_alloc_mirror()
209 return mirror; in ff_layout_alloc_mirror()
212 static void ff_layout_free_mirror(struct nfs4_ff_layout_mirror *mirror) in ff_layout_free_mirror() argument
214 ff_layout_remove_mirror(mirror); in ff_layout_free_mirror()
215 kfree(mirror->fh_versions); in ff_layout_free_mirror()
216 if (mirror->cred) in ff_layout_free_mirror()
217 put_rpccred(mirror->cred); in ff_layout_free_mirror()
218 nfs4_ff_layout_put_deviceid(mirror->mirror_ds); in ff_layout_free_mirror()
219 kfree(mirror); in ff_layout_free_mirror()
222 static void ff_layout_put_mirror(struct nfs4_ff_layout_mirror *mirror) in ff_layout_put_mirror() argument
224 if (mirror != NULL && atomic_dec_and_test(&mirror->ref)) in ff_layout_put_mirror()
225 ff_layout_free_mirror(mirror); in ff_layout_put_mirror()
407 struct nfs4_ff_layout_mirror *mirror; in ff_layout_alloc_lseg() local
496 mirror = ff_layout_add_mirror(lh, fls->mirror_array[i]); in ff_layout_alloc_lseg()
497 if (mirror != fls->mirror_array[i]) { in ff_layout_alloc_lseg()
499 fls->mirror_array[i] = mirror; in ff_layout_alloc_lseg()
594 nfs4_ff_layoutstat_start_io(struct nfs4_ff_layout_mirror *mirror, in nfs4_ff_layoutstat_start_io() argument
602 if (ktime_equal(mirror->start_time, notime)) in nfs4_ff_layoutstat_start_io()
603 mirror->start_time = now; in nfs4_ff_layoutstat_start_io()
604 if (ktime_equal(mirror->last_report_time, notime)) in nfs4_ff_layoutstat_start_io()
605 mirror->last_report_time = now; in nfs4_ff_layoutstat_start_io()
608 if (ktime_to_ms(ktime_sub(now, mirror->last_report_time)) >= in nfs4_ff_layoutstat_start_io()
610 mirror->last_report_time = now; in nfs4_ff_layoutstat_start_io()
652 struct nfs4_ff_layout_mirror *mirror, in nfs4_ff_layout_stat_io_start_read() argument
657 spin_lock(&mirror->lock); in nfs4_ff_layout_stat_io_start_read()
658 report = nfs4_ff_layoutstat_start_io(mirror, &mirror->read_stat, now); in nfs4_ff_layout_stat_io_start_read()
659 nfs4_ff_layout_stat_io_update_requested(&mirror->read_stat, requested); in nfs4_ff_layout_stat_io_start_read()
660 spin_unlock(&mirror->lock); in nfs4_ff_layout_stat_io_start_read()
668 struct nfs4_ff_layout_mirror *mirror, in nfs4_ff_layout_stat_io_end_read() argument
672 spin_lock(&mirror->lock); in nfs4_ff_layout_stat_io_end_read()
673 nfs4_ff_layout_stat_io_update_completed(&mirror->read_stat, in nfs4_ff_layout_stat_io_end_read()
676 spin_unlock(&mirror->lock); in nfs4_ff_layout_stat_io_end_read()
681 struct nfs4_ff_layout_mirror *mirror, in nfs4_ff_layout_stat_io_start_write() argument
686 spin_lock(&mirror->lock); in nfs4_ff_layout_stat_io_start_write()
687 report = nfs4_ff_layoutstat_start_io(mirror , &mirror->write_stat, now); in nfs4_ff_layout_stat_io_start_write()
688 nfs4_ff_layout_stat_io_update_requested(&mirror->write_stat, requested); in nfs4_ff_layout_stat_io_start_write()
689 spin_unlock(&mirror->lock); in nfs4_ff_layout_stat_io_start_write()
697 struct nfs4_ff_layout_mirror *mirror, in nfs4_ff_layout_stat_io_end_write() argument
705 spin_lock(&mirror->lock); in nfs4_ff_layout_stat_io_end_write()
706 nfs4_ff_layout_stat_io_update_completed(&mirror->write_stat, in nfs4_ff_layout_stat_io_end_write()
708 spin_unlock(&mirror->lock); in nfs4_ff_layout_stat_io_end_write()
783 struct nfs4_ff_layout_mirror *mirror; in ff_layout_pg_init_read() local
802 mirror = FF_LAYOUT_COMP(pgio->pg_lseg, ds_idx); in ff_layout_pg_init_read()
808 pgm->pg_bsize = mirror->mirror_ds->ds_versions[0].rsize; in ff_layout_pg_init_read()
821 struct nfs4_ff_layout_mirror *mirror; in ff_layout_pg_init_write() local
854 mirror = FF_LAYOUT_COMP(pgio->pg_lseg, i); in ff_layout_pg_init_write()
855 pgm->pg_bsize = mirror->mirror_ds->ds_versions[0].wsize; in ff_layout_pg_init_write()
1134 struct nfs4_ff_layout_mirror *mirror; in ff_layout_io_track_ds_error() local
1162 mirror = FF_LAYOUT_COMP(lseg, idx); in ff_layout_io_track_ds_error()
1164 mirror, offset, length, status, opnum, in ff_layout_io_track_ds_error()
1993 struct nfs4_ff_layout_mirror *mirror = devinfo->layout_private; in ff_layout_encode_layoutstats() local
1995 struct nfs4_pnfs_ds *ds = mirror->mirror_ds->ds; in ff_layout_encode_layoutstats()
1996 struct nfs_fh *fh = &mirror->fh_versions[0]; in ff_layout_encode_layoutstats()
2010 spin_lock(&mirror->lock); in ff_layout_encode_layoutstats()
2011 ff_layout_encode_io_latency(xdr, &mirror->read_stat.io_stat); in ff_layout_encode_layoutstats()
2013 ff_layout_encode_io_latency(xdr, &mirror->write_stat.io_stat); in ff_layout_encode_layoutstats()
2014 spin_unlock(&mirror->lock); in ff_layout_encode_layoutstats()
2016 ff_layout_encode_nfstime(xdr, ktime_sub(ktime_get(), mirror->start_time)); in ff_layout_encode_layoutstats()
2030 struct nfs4_ff_layout_mirror *mirror; in ff_layout_mirror_prepare_stats() local
2035 list_for_each_entry(mirror, &ff_layout->mirrors, mirrors) { in ff_layout_mirror_prepare_stats()
2038 if (!mirror->mirror_ds) in ff_layout_mirror_prepare_stats()
2041 if (!atomic_inc_not_zero(&mirror->ref)) in ff_layout_mirror_prepare_stats()
2043 dev = &mirror->mirror_ds->id_node; in ff_layout_mirror_prepare_stats()
2048 devinfo->read_count = mirror->read_stat.io_stat.ops_completed; in ff_layout_mirror_prepare_stats()
2049 devinfo->read_bytes = mirror->read_stat.io_stat.bytes_completed; in ff_layout_mirror_prepare_stats()
2050 devinfo->write_count = mirror->write_stat.io_stat.ops_completed; in ff_layout_mirror_prepare_stats()
2051 devinfo->write_bytes = mirror->write_stat.io_stat.bytes_completed; in ff_layout_mirror_prepare_stats()
2054 devinfo->layout_private = mirror; in ff_layout_mirror_prepare_stats()
2065 struct nfs4_ff_layout_mirror *mirror; in ff_layout_prepare_layoutstats() local
2070 list_for_each_entry(mirror, &ff_layout->mirrors, mirrors) { in ff_layout_prepare_layoutstats()
2071 if (atomic_read(&mirror->ref) != 0) in ff_layout_prepare_layoutstats()
2096 struct nfs4_ff_layout_mirror *mirror; in ff_layout_cleanup_layoutstats() local
2100 mirror = data->args.devinfo[i].layout_private; in ff_layout_cleanup_layoutstats()
2102 ff_layout_put_mirror(mirror); in ff_layout_cleanup_layoutstats()