Lines Matching refs:pgio

796 ff_layout_get_ds_for_read(struct nfs_pageio_descriptor *pgio,
799 struct pnfs_layout_segment *lseg = pgio->pg_lseg;
802 ds = ff_layout_choose_best_ds_for_read(lseg, pgio->pg_mirror_idx,
804 if (ds || !pgio->pg_mirror_idx)
810 ff_layout_pg_get_read(struct nfs_pageio_descriptor *pgio,
814 pnfs_put_lseg(pgio->pg_lseg);
815 pgio->pg_lseg =
816 pnfs_update_layout(pgio->pg_inode, nfs_req_openctx(req),
819 if (IS_ERR(pgio->pg_lseg)) {
820 pgio->pg_error = PTR_ERR(pgio->pg_lseg);
821 pgio->pg_lseg = NULL;
826 ff_layout_pg_check_layout(struct nfs_pageio_descriptor *pgio,
829 pnfs_generic_pg_check_layout(pgio);
830 pnfs_generic_pg_check_range(pgio, req);
834 ff_layout_pg_init_read(struct nfs_pageio_descriptor *pgio,
843 ff_layout_pg_check_layout(pgio, req);
845 if (!pgio->pg_lseg) {
846 ff_layout_pg_get_read(pgio, req, false);
847 if (!pgio->pg_lseg)
850 if (ff_layout_avoid_read_on_rw(pgio->pg_lseg)) {
851 ff_layout_pg_get_read(pgio, req, true);
852 if (!pgio->pg_lseg)
856 ds = ff_layout_get_ds_for_read(pgio, &ds_idx);
858 if (!ff_layout_no_fallback_to_mds(pgio->pg_lseg))
860 pnfs_generic_pg_cleanup(pgio);
866 mirror = FF_LAYOUT_COMP(pgio->pg_lseg, ds_idx);
867 pgm = &pgio->pg_mirrors[0];
870 pgio->pg_mirror_idx = ds_idx;
872 if (NFS_SERVER(pgio->pg_inode)->flags &
874 pgio->pg_maxretrans = io_maxretrans;
877 if (pgio->pg_error < 0)
880 trace_pnfs_mds_fallback_pg_init_read(pgio->pg_inode,
882 NFS_I(pgio->pg_inode)->layout,
883 pgio->pg_lseg);
884 pgio->pg_maxretrans = 0;
885 nfs_pageio_reset_read_mds(pgio);
889 ff_layout_pg_init_write(struct nfs_pageio_descriptor *pgio,
898 ff_layout_pg_check_layout(pgio, req);
899 if (!pgio->pg_lseg) {
900 pgio->pg_lseg =
901 pnfs_update_layout(pgio->pg_inode, nfs_req_openctx(req),
904 if (IS_ERR(pgio->pg_lseg)) {
905 pgio->pg_error = PTR_ERR(pgio->pg_lseg);
906 pgio->pg_lseg = NULL;
911 if (pgio->pg_lseg == NULL)
914 /* Use a direct mapping of ds_idx to pgio mirror_idx */
915 if (pgio->pg_mirror_count != FF_LAYOUT_MIRROR_COUNT(pgio->pg_lseg))
918 for (i = 0; i < pgio->pg_mirror_count; i++) {
919 mirror = FF_LAYOUT_COMP(pgio->pg_lseg, i);
920 ds = nfs4_ff_layout_prepare_ds(pgio->pg_lseg, mirror, true);
922 if (!ff_layout_no_fallback_to_mds(pgio->pg_lseg))
924 pnfs_generic_pg_cleanup(pgio);
929 pgm = &pgio->pg_mirrors[i];
933 if (NFS_SERVER(pgio->pg_inode)->flags &
935 pgio->pg_maxretrans = io_maxretrans;
938 pnfs_generic_pg_cleanup(pgio);
939 pgio->pg_error = -EAGAIN;
942 trace_pnfs_mds_fallback_pg_init_write(pgio->pg_inode,
944 NFS_I(pgio->pg_inode)->layout,
945 pgio->pg_lseg);
946 pgio->pg_maxretrans = 0;
947 nfs_pageio_reset_write_mds(pgio);
948 pgio->pg_error = -EAGAIN;
952 ff_layout_pg_get_mirror_count_write(struct nfs_pageio_descriptor *pgio,
955 if (!pgio->pg_lseg) {
956 pgio->pg_lseg =
957 pnfs_update_layout(pgio->pg_inode, nfs_req_openctx(req),
960 if (IS_ERR(pgio->pg_lseg)) {
961 pgio->pg_error = PTR_ERR(pgio->pg_lseg);
962 pgio->pg_lseg = NULL;
966 if (pgio->pg_lseg)
967 return FF_LAYOUT_MIRROR_COUNT(pgio->pg_lseg);
969 trace_pnfs_mds_fallback_pg_get_mirror_count(pgio->pg_inode,
971 NFS_I(pgio->pg_inode)->layout,
972 pgio->pg_lseg);
974 nfs_pageio_reset_write_mds(pgio);