Lines Matching refs:desc

46 nfs_pgio_current_mirror(struct nfs_pageio_descriptor *desc)  in nfs_pgio_current_mirror()  argument
48 return nfs_pgio_has_mirroring(desc) ? in nfs_pgio_current_mirror()
49 &desc->pg_mirrors[desc->pg_mirror_idx] : in nfs_pgio_current_mirror()
50 &desc->pg_mirrors[0]; in nfs_pgio_current_mirror()
54 void nfs_pgheader_init(struct nfs_pageio_descriptor *desc, in nfs_pgheader_init() argument
58 struct nfs_pgio_mirror *mirror = nfs_pgio_current_mirror(desc); in nfs_pgheader_init()
62 hdr->inode = desc->pg_inode; in nfs_pgheader_init()
66 hdr->dreq = desc->pg_dreq; in nfs_pgheader_init()
67 hdr->layout_private = desc->pg_layout_private; in nfs_pgheader_init()
69 hdr->completion_ops = desc->pg_completion_ops; in nfs_pgheader_init()
73 hdr->pgio_mirror_idx = desc->pg_mirror_idx; in nfs_pgheader_init()
494 size_t nfs_generic_pg_test(struct nfs_pageio_descriptor *desc, in nfs_generic_pg_test() argument
497 struct nfs_pgio_mirror *mirror = nfs_pgio_current_mirror(desc); in nfs_generic_pg_test()
667 static int nfs_pgio_error(struct nfs_pageio_descriptor *desc, in nfs_pgio_error() argument
678 for (midx = 0; midx < desc->pg_mirror_count; midx++) { in nfs_pgio_error()
679 mirror = &desc->pg_mirrors[midx]; in nfs_pgio_error()
680 desc->pg_completion_ops->error_cleanup(&mirror->pg_list); in nfs_pgio_error()
717 void nfs_pageio_init(struct nfs_pageio_descriptor *desc, in nfs_pageio_init() argument
728 desc->pg_moreio = 0; in nfs_pageio_init()
729 desc->pg_inode = inode; in nfs_pageio_init()
730 desc->pg_ops = pg_ops; in nfs_pageio_init()
731 desc->pg_completion_ops = compl_ops; in nfs_pageio_init()
732 desc->pg_rw_ops = rw_ops; in nfs_pageio_init()
733 desc->pg_ioflags = io_flags; in nfs_pageio_init()
734 desc->pg_error = 0; in nfs_pageio_init()
735 desc->pg_lseg = NULL; in nfs_pageio_init()
736 desc->pg_dreq = NULL; in nfs_pageio_init()
737 desc->pg_layout_private = NULL; in nfs_pageio_init()
738 desc->pg_bsize = bsize; in nfs_pageio_init()
740 desc->pg_mirror_count = 1; in nfs_pageio_init()
741 desc->pg_mirror_idx = 0; in nfs_pageio_init()
748 desc->pg_mirrors_dynamic = new; in nfs_pageio_init()
749 desc->pg_mirrors = new; in nfs_pageio_init()
752 nfs_pageio_mirror_init(&desc->pg_mirrors[i], bsize); in nfs_pageio_init()
754 desc->pg_mirrors_dynamic = NULL; in nfs_pageio_init()
755 desc->pg_mirrors = desc->pg_mirrors_static; in nfs_pageio_init()
756 nfs_pageio_mirror_init(&desc->pg_mirrors[0], bsize); in nfs_pageio_init()
790 int nfs_generic_pgio(struct nfs_pageio_descriptor *desc, in nfs_generic_pgio() argument
793 struct nfs_pgio_mirror *mirror = nfs_pgio_current_mirror(desc); in nfs_generic_pgio()
804 return nfs_pgio_error(desc, hdr); in nfs_generic_pgio()
806 nfs_init_cinfo(&cinfo, desc->pg_inode, desc->pg_dreq); in nfs_generic_pgio()
823 return nfs_pgio_error(desc, hdr); in nfs_generic_pgio()
825 if ((desc->pg_ioflags & FLUSH_COND_STABLE) && in nfs_generic_pgio()
826 (desc->pg_moreio || nfs_reqs_to_commit(&cinfo))) in nfs_generic_pgio()
827 desc->pg_ioflags &= ~FLUSH_COND_STABLE; in nfs_generic_pgio()
830 nfs_pgio_rpcsetup(hdr, mirror->pg_count, 0, desc->pg_ioflags, &cinfo); in nfs_generic_pgio()
831 desc->pg_rpc_callops = &nfs_pgio_common_ops; in nfs_generic_pgio()
836 static int nfs_generic_pg_pgios(struct nfs_pageio_descriptor *desc) in nfs_generic_pg_pgios() argument
842 mirror = nfs_pgio_current_mirror(desc); in nfs_generic_pg_pgios()
844 hdr = nfs_pgio_header_alloc(desc->pg_rw_ops); in nfs_generic_pg_pgios()
848 desc->pg_completion_ops->error_cleanup(&mirror->pg_list); in nfs_generic_pg_pgios()
851 nfs_pgheader_init(desc, hdr, nfs_pgio_header_free); in nfs_generic_pg_pgios()
852 ret = nfs_generic_pgio(desc, hdr); in nfs_generic_pg_pgios()
858 desc->pg_rpc_callops, in nfs_generic_pg_pgios()
859 desc->pg_ioflags, 0); in nfs_generic_pg_pgios()
973 static int nfs_pageio_do_add_request(struct nfs_pageio_descriptor *desc, in nfs_pageio_do_add_request() argument
976 struct nfs_pgio_mirror *mirror = nfs_pgio_current_mirror(desc); in nfs_pageio_do_add_request()
983 if (desc->pg_ops->pg_init) in nfs_pageio_do_add_request()
984 desc->pg_ops->pg_init(desc, req); in nfs_pageio_do_add_request()
987 if (!nfs_can_coalesce_requests(prev, req, desc)) in nfs_pageio_do_add_request()
998 static void nfs_pageio_doio(struct nfs_pageio_descriptor *desc) in nfs_pageio_doio() argument
1000 struct nfs_pgio_mirror *mirror = nfs_pgio_current_mirror(desc); in nfs_pageio_doio()
1004 int error = desc->pg_ops->pg_doio(desc); in nfs_pageio_doio()
1006 desc->pg_error = error; in nfs_pageio_doio()
1027 static int __nfs_pageio_add_request(struct nfs_pageio_descriptor *desc, in __nfs_pageio_add_request() argument
1030 struct nfs_pgio_mirror *mirror = nfs_pgio_current_mirror(desc); in __nfs_pageio_add_request()
1044 if (!nfs_pageio_do_add_request(desc, subreq)) { in __nfs_pageio_add_request()
1051 desc->pg_moreio = 1; in __nfs_pageio_add_request()
1052 nfs_pageio_doio(desc); in __nfs_pageio_add_request()
1053 if (desc->pg_error < 0) in __nfs_pageio_add_request()
1086 desc->pg_error = PTR_ERR(subreq); in __nfs_pageio_add_request()
1091 static int nfs_do_recoalesce(struct nfs_pageio_descriptor *desc) in nfs_do_recoalesce() argument
1093 struct nfs_pgio_mirror *mirror = nfs_pgio_current_mirror(desc); in nfs_do_recoalesce()
1108 if (__nfs_pageio_add_request(desc, req)) in nfs_do_recoalesce()
1110 if (desc->pg_error < 0) { in nfs_do_recoalesce()
1121 static int nfs_pageio_add_request_mirror(struct nfs_pageio_descriptor *desc, in nfs_pageio_add_request_mirror() argument
1127 ret = __nfs_pageio_add_request(desc, req); in nfs_pageio_add_request_mirror()
1130 if (desc->pg_error < 0) in nfs_pageio_add_request_mirror()
1132 ret = nfs_do_recoalesce(desc); in nfs_pageio_add_request_mirror()
1138 int nfs_pageio_add_request(struct nfs_pageio_descriptor *desc, in nfs_pageio_add_request() argument
1149 nfs_pageio_setup_mirroring(desc, req); in nfs_pageio_add_request()
1151 for (midx = 0; midx < desc->pg_mirror_count; midx++) { in nfs_pageio_add_request()
1176 if (nfs_pgio_has_mirroring(desc)) in nfs_pageio_add_request()
1177 desc->pg_mirror_idx = midx; in nfs_pageio_add_request()
1178 if (!nfs_pageio_add_request_mirror(desc, dupreq)) in nfs_pageio_add_request()
1191 static void nfs_pageio_complete_mirror(struct nfs_pageio_descriptor *desc, in nfs_pageio_complete_mirror() argument
1194 struct nfs_pgio_mirror *mirror = &desc->pg_mirrors[mirror_idx]; in nfs_pageio_complete_mirror()
1195 u32 restore_idx = desc->pg_mirror_idx; in nfs_pageio_complete_mirror()
1197 if (nfs_pgio_has_mirroring(desc)) in nfs_pageio_complete_mirror()
1198 desc->pg_mirror_idx = mirror_idx; in nfs_pageio_complete_mirror()
1200 nfs_pageio_doio(desc); in nfs_pageio_complete_mirror()
1203 if (!nfs_do_recoalesce(desc)) in nfs_pageio_complete_mirror()
1206 desc->pg_mirror_idx = restore_idx; in nfs_pageio_complete_mirror()
1219 int nfs_pageio_resend(struct nfs_pageio_descriptor *desc, in nfs_pageio_resend() argument
1224 desc->pg_dreq = hdr->dreq; in nfs_pageio_resend()
1229 if (!nfs_pageio_add_request(desc, req)) in nfs_pageio_resend()
1232 nfs_pageio_complete(desc); in nfs_pageio_resend()
1245 void nfs_pageio_complete(struct nfs_pageio_descriptor *desc) in nfs_pageio_complete() argument
1249 for (midx = 0; midx < desc->pg_mirror_count; midx++) in nfs_pageio_complete()
1250 nfs_pageio_complete_mirror(desc, midx); in nfs_pageio_complete()
1252 if (desc->pg_ops->pg_cleanup) in nfs_pageio_complete()
1253 desc->pg_ops->pg_cleanup(desc); in nfs_pageio_complete()
1254 nfs_pageio_cleanup_mirroring(desc); in nfs_pageio_complete()
1268 void nfs_pageio_cond_complete(struct nfs_pageio_descriptor *desc, pgoff_t index) in nfs_pageio_cond_complete() argument
1274 for (midx = 0; midx < desc->pg_mirror_count; midx++) { in nfs_pageio_cond_complete()
1275 mirror = &desc->pg_mirrors[midx]; in nfs_pageio_cond_complete()
1279 nfs_pageio_complete_mirror(desc, midx); in nfs_pageio_cond_complete()