Lines Matching refs:pgio
794 ff_layout_get_ds_for_read(struct nfs_pageio_descriptor *pgio,
797 struct pnfs_layout_segment *lseg = pgio->pg_lseg;
800 ds = ff_layout_choose_best_ds_for_read(lseg, pgio->pg_mirror_idx,
802 if (ds || !pgio->pg_mirror_idx)
808 ff_layout_pg_get_read(struct nfs_pageio_descriptor *pgio,
812 pnfs_put_lseg(pgio->pg_lseg);
813 pgio->pg_lseg = pnfs_update_layout(pgio->pg_inode,
820 if (IS_ERR(pgio->pg_lseg)) {
821 pgio->pg_error = PTR_ERR(pgio->pg_lseg);
822 pgio->pg_lseg = NULL;
827 ff_layout_pg_check_layout(struct nfs_pageio_descriptor *pgio,
830 pnfs_generic_pg_check_layout(pgio);
831 pnfs_generic_pg_check_range(pgio, req);
835 ff_layout_pg_init_read(struct nfs_pageio_descriptor *pgio,
844 ff_layout_pg_check_layout(pgio, req);
846 if (!pgio->pg_lseg) {
847 ff_layout_pg_get_read(pgio, req, false);
848 if (!pgio->pg_lseg)
851 if (ff_layout_avoid_read_on_rw(pgio->pg_lseg)) {
852 ff_layout_pg_get_read(pgio, req, true);
853 if (!pgio->pg_lseg)
857 ds = ff_layout_get_ds_for_read(pgio, &ds_idx);
859 if (!ff_layout_no_fallback_to_mds(pgio->pg_lseg))
861 pnfs_generic_pg_cleanup(pgio);
867 mirror = FF_LAYOUT_COMP(pgio->pg_lseg, ds_idx);
868 pgm = &pgio->pg_mirrors[0];
871 pgio->pg_mirror_idx = ds_idx;
873 if (NFS_SERVER(pgio->pg_inode)->flags &
875 pgio->pg_maxretrans = io_maxretrans;
878 if (pgio->pg_error < 0)
881 trace_pnfs_mds_fallback_pg_init_read(pgio->pg_inode,
883 NFS_I(pgio->pg_inode)->layout,
884 pgio->pg_lseg);
885 pgio->pg_maxretrans = 0;
886 nfs_pageio_reset_read_mds(pgio);
890 ff_layout_pg_init_write(struct nfs_pageio_descriptor *pgio,
899 ff_layout_pg_check_layout(pgio, req);
900 if (!pgio->pg_lseg) {
901 pgio->pg_lseg = pnfs_update_layout(pgio->pg_inode,
908 if (IS_ERR(pgio->pg_lseg)) {
909 pgio->pg_error = PTR_ERR(pgio->pg_lseg);
910 pgio->pg_lseg = NULL;
915 if (pgio->pg_lseg == NULL)
918 /* Use a direct mapping of ds_idx to pgio mirror_idx */
919 if (pgio->pg_mirror_count != FF_LAYOUT_MIRROR_COUNT(pgio->pg_lseg))
922 for (i = 0; i < pgio->pg_mirror_count; i++) {
923 mirror = FF_LAYOUT_COMP(pgio->pg_lseg, i);
924 ds = nfs4_ff_layout_prepare_ds(pgio->pg_lseg, mirror, true);
926 if (!ff_layout_no_fallback_to_mds(pgio->pg_lseg))
928 pnfs_generic_pg_cleanup(pgio);
933 pgm = &pgio->pg_mirrors[i];
937 if (NFS_SERVER(pgio->pg_inode)->flags &
939 pgio->pg_maxretrans = io_maxretrans;
942 pnfs_generic_pg_cleanup(pgio);
943 pgio->pg_error = -EAGAIN;
946 trace_pnfs_mds_fallback_pg_init_write(pgio->pg_inode,
948 NFS_I(pgio->pg_inode)->layout,
949 pgio->pg_lseg);
950 pgio->pg_maxretrans = 0;
951 nfs_pageio_reset_write_mds(pgio);
952 pgio->pg_error = -EAGAIN;
956 ff_layout_pg_get_mirror_count_write(struct nfs_pageio_descriptor *pgio,
959 if (!pgio->pg_lseg) {
960 pgio->pg_lseg = pnfs_update_layout(pgio->pg_inode,
967 if (IS_ERR(pgio->pg_lseg)) {
968 pgio->pg_error = PTR_ERR(pgio->pg_lseg);
969 pgio->pg_lseg = NULL;
973 if (pgio->pg_lseg)
974 return FF_LAYOUT_MIRROR_COUNT(pgio->pg_lseg);
976 trace_pnfs_mds_fallback_pg_get_mirror_count(pgio->pg_inode,
978 NFS_I(pgio->pg_inode)->layout,
979 pgio->pg_lseg);
981 nfs_pageio_reset_write_mds(pgio);