Lines Matching refs:pgio

813 ff_layout_get_ds_for_read(struct nfs_pageio_descriptor *pgio,
816 struct pnfs_layout_segment *lseg = pgio->pg_lseg;
819 ds = ff_layout_choose_best_ds_for_read(lseg, pgio->pg_mirror_idx,
821 if (ds || !pgio->pg_mirror_idx)
827 ff_layout_pg_get_read(struct nfs_pageio_descriptor *pgio,
831 pnfs_put_lseg(pgio->pg_lseg);
832 pgio->pg_lseg =
833 pnfs_update_layout(pgio->pg_inode, nfs_req_openctx(req),
836 if (IS_ERR(pgio->pg_lseg)) {
837 pgio->pg_error = PTR_ERR(pgio->pg_lseg);
838 pgio->pg_lseg = NULL;
843 ff_layout_pg_init_read(struct nfs_pageio_descriptor *pgio,
851 if (NFS_SERVER(pgio->pg_inode)->flags &
853 pgio->pg_maxretrans = io_maxretrans;
855 pnfs_generic_pg_check_layout(pgio, req);
857 if (!pgio->pg_lseg) {
858 ff_layout_pg_get_read(pgio, req, false);
859 if (!pgio->pg_lseg)
862 if (ff_layout_avoid_read_on_rw(pgio->pg_lseg)) {
863 ff_layout_pg_get_read(pgio, req, true);
864 if (!pgio->pg_lseg)
870 ds = ff_layout_get_ds_for_read(pgio, &ds_idx);
872 if (!ff_layout_no_fallback_to_mds(pgio->pg_lseg))
874 pnfs_generic_pg_cleanup(pgio);
880 mirror = FF_LAYOUT_COMP(pgio->pg_lseg, ds_idx);
881 pgm = &pgio->pg_mirrors[0];
884 pgio->pg_mirror_idx = ds_idx;
887 if (pgio->pg_error < 0) {
888 if (pgio->pg_error != -EAGAIN)
891 if (pgio->pg_maxretrans && req->wb_nio++ > pgio->pg_maxretrans) {
892 if (NFS_SERVER(pgio->pg_inode)->flags & NFS_MOUNT_SOFTERR)
893 pgio->pg_error = -ETIMEDOUT;
895 pgio->pg_error = -EIO;
898 pgio->pg_error = 0;
904 trace_pnfs_mds_fallback_pg_init_read(pgio->pg_inode,
906 NFS_I(pgio->pg_inode)->layout,
907 pgio->pg_lseg);
908 pgio->pg_maxretrans = 0;
909 nfs_pageio_reset_read_mds(pgio);
913 ff_layout_pg_init_write(struct nfs_pageio_descriptor *pgio,
922 pnfs_generic_pg_check_layout(pgio, req);
923 if (!pgio->pg_lseg) {
924 pgio->pg_lseg =
925 pnfs_update_layout(pgio->pg_inode, nfs_req_openctx(req),
928 if (IS_ERR(pgio->pg_lseg)) {
929 pgio->pg_error = PTR_ERR(pgio->pg_lseg);
930 pgio->pg_lseg = NULL;
935 if (pgio->pg_lseg == NULL)
938 /* Use a direct mapping of ds_idx to pgio mirror_idx */
939 if (pgio->pg_mirror_count != FF_LAYOUT_MIRROR_COUNT(pgio->pg_lseg))
942 for (i = 0; i < pgio->pg_mirror_count; i++) {
943 mirror = FF_LAYOUT_COMP(pgio->pg_lseg, i);
944 ds = nfs4_ff_layout_prepare_ds(pgio->pg_lseg, mirror, true);
946 if (!ff_layout_no_fallback_to_mds(pgio->pg_lseg))
948 pnfs_generic_pg_cleanup(pgio);
953 pgm = &pgio->pg_mirrors[i];
957 if (NFS_SERVER(pgio->pg_inode)->flags &
959 pgio->pg_maxretrans = io_maxretrans;
962 pnfs_generic_pg_cleanup(pgio);
963 pgio->pg_error = -EAGAIN;
966 trace_pnfs_mds_fallback_pg_init_write(pgio->pg_inode,
968 NFS_I(pgio->pg_inode)->layout,
969 pgio->pg_lseg);
970 pgio->pg_maxretrans = 0;
971 nfs_pageio_reset_write_mds(pgio);
972 pgio->pg_error = -EAGAIN;
976 ff_layout_pg_get_mirror_count_write(struct nfs_pageio_descriptor *pgio,
979 if (!pgio->pg_lseg) {
980 pgio->pg_lseg =
981 pnfs_update_layout(pgio->pg_inode, nfs_req_openctx(req),
984 if (IS_ERR(pgio->pg_lseg)) {
985 pgio->pg_error = PTR_ERR(pgio->pg_lseg);
986 pgio->pg_lseg = NULL;
990 if (pgio->pg_lseg)
991 return FF_LAYOUT_MIRROR_COUNT(pgio->pg_lseg);
993 trace_pnfs_mds_fallback_pg_get_mirror_count(pgio->pg_inode,
995 NFS_I(pgio->pg_inode)->layout,
996 pgio->pg_lseg);
998 nfs_pageio_reset_write_mds(pgio);