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()
668 static int nfs_pgio_error(struct nfs_pageio_descriptor *desc, in nfs_pgio_error() argument
679 for (midx = 0; midx < desc->pg_mirror_count; midx++) { in nfs_pgio_error()
680 mirror = &desc->pg_mirrors[midx]; in nfs_pgio_error()
681 desc->pg_completion_ops->error_cleanup(&mirror->pg_list); in nfs_pgio_error()
718 void nfs_pageio_init(struct nfs_pageio_descriptor *desc, in nfs_pageio_init() argument
729 desc->pg_moreio = 0; in nfs_pageio_init()
730 desc->pg_inode = inode; in nfs_pageio_init()
731 desc->pg_ops = pg_ops; in nfs_pageio_init()
732 desc->pg_completion_ops = compl_ops; in nfs_pageio_init()
733 desc->pg_rw_ops = rw_ops; in nfs_pageio_init()
734 desc->pg_ioflags = io_flags; in nfs_pageio_init()
735 desc->pg_error = 0; in nfs_pageio_init()
736 desc->pg_lseg = NULL; in nfs_pageio_init()
737 desc->pg_dreq = NULL; in nfs_pageio_init()
738 desc->pg_layout_private = NULL; in nfs_pageio_init()
739 desc->pg_bsize = bsize; in nfs_pageio_init()
741 desc->pg_mirror_count = 1; in nfs_pageio_init()
742 desc->pg_mirror_idx = 0; in nfs_pageio_init()
749 desc->pg_mirrors_dynamic = new; in nfs_pageio_init()
750 desc->pg_mirrors = new; in nfs_pageio_init()
753 nfs_pageio_mirror_init(&desc->pg_mirrors[i], bsize); in nfs_pageio_init()
755 desc->pg_mirrors_dynamic = NULL; in nfs_pageio_init()
756 desc->pg_mirrors = desc->pg_mirrors_static; in nfs_pageio_init()
757 nfs_pageio_mirror_init(&desc->pg_mirrors[0], bsize); in nfs_pageio_init()
791 int nfs_generic_pgio(struct nfs_pageio_descriptor *desc, in nfs_generic_pgio() argument
794 struct nfs_pgio_mirror *mirror = nfs_pgio_current_mirror(desc); in nfs_generic_pgio()
805 return nfs_pgio_error(desc, hdr); in nfs_generic_pgio()
807 nfs_init_cinfo(&cinfo, desc->pg_inode, desc->pg_dreq); in nfs_generic_pgio()
824 return nfs_pgio_error(desc, hdr); in nfs_generic_pgio()
826 if ((desc->pg_ioflags & FLUSH_COND_STABLE) && in nfs_generic_pgio()
827 (desc->pg_moreio || nfs_reqs_to_commit(&cinfo))) in nfs_generic_pgio()
828 desc->pg_ioflags &= ~FLUSH_COND_STABLE; in nfs_generic_pgio()
831 nfs_pgio_rpcsetup(hdr, mirror->pg_count, 0, desc->pg_ioflags, &cinfo); in nfs_generic_pgio()
832 desc->pg_rpc_callops = &nfs_pgio_common_ops; in nfs_generic_pgio()
837 static int nfs_generic_pg_pgios(struct nfs_pageio_descriptor *desc) in nfs_generic_pg_pgios() argument
843 mirror = nfs_pgio_current_mirror(desc); in nfs_generic_pg_pgios()
845 hdr = nfs_pgio_header_alloc(desc->pg_rw_ops); in nfs_generic_pg_pgios()
849 desc->pg_completion_ops->error_cleanup(&mirror->pg_list); in nfs_generic_pg_pgios()
852 nfs_pgheader_init(desc, hdr, nfs_pgio_header_free); in nfs_generic_pg_pgios()
853 ret = nfs_generic_pgio(desc, hdr); in nfs_generic_pg_pgios()
859 desc->pg_rpc_callops, in nfs_generic_pg_pgios()
860 desc->pg_ioflags, 0); in nfs_generic_pg_pgios()
974 static int nfs_pageio_do_add_request(struct nfs_pageio_descriptor *desc, in nfs_pageio_do_add_request() argument
977 struct nfs_pgio_mirror *mirror = nfs_pgio_current_mirror(desc); in nfs_pageio_do_add_request()
984 if (desc->pg_ops->pg_init) in nfs_pageio_do_add_request()
985 desc->pg_ops->pg_init(desc, req); in nfs_pageio_do_add_request()
988 if (!nfs_can_coalesce_requests(prev, req, desc)) in nfs_pageio_do_add_request()
999 static void nfs_pageio_doio(struct nfs_pageio_descriptor *desc) in nfs_pageio_doio() argument
1001 struct nfs_pgio_mirror *mirror = nfs_pgio_current_mirror(desc); in nfs_pageio_doio()
1005 int error = desc->pg_ops->pg_doio(desc); in nfs_pageio_doio()
1007 desc->pg_error = error; in nfs_pageio_doio()
1028 static int __nfs_pageio_add_request(struct nfs_pageio_descriptor *desc, in __nfs_pageio_add_request() argument
1031 struct nfs_pgio_mirror *mirror = nfs_pgio_current_mirror(desc); in __nfs_pageio_add_request()
1045 if (!nfs_pageio_do_add_request(desc, subreq)) { in __nfs_pageio_add_request()
1052 desc->pg_moreio = 1; in __nfs_pageio_add_request()
1053 nfs_pageio_doio(desc); in __nfs_pageio_add_request()
1054 if (desc->pg_error < 0) in __nfs_pageio_add_request()
1087 desc->pg_error = PTR_ERR(subreq); in __nfs_pageio_add_request()
1092 static int nfs_do_recoalesce(struct nfs_pageio_descriptor *desc) in nfs_do_recoalesce() argument
1094 struct nfs_pgio_mirror *mirror = nfs_pgio_current_mirror(desc); in nfs_do_recoalesce()
1104 desc->pg_moreio = 0; in nfs_do_recoalesce()
1111 if (__nfs_pageio_add_request(desc, req)) in nfs_do_recoalesce()
1113 if (desc->pg_error < 0) { in nfs_do_recoalesce()
1124 static int nfs_pageio_add_request_mirror(struct nfs_pageio_descriptor *desc, in nfs_pageio_add_request_mirror() argument
1130 ret = __nfs_pageio_add_request(desc, req); in nfs_pageio_add_request_mirror()
1133 if (desc->pg_error < 0) in nfs_pageio_add_request_mirror()
1135 ret = nfs_do_recoalesce(desc); in nfs_pageio_add_request_mirror()
1141 int nfs_pageio_add_request(struct nfs_pageio_descriptor *desc, in nfs_pageio_add_request() argument
1152 nfs_pageio_setup_mirroring(desc, req); in nfs_pageio_add_request()
1154 for (midx = 0; midx < desc->pg_mirror_count; midx++) { in nfs_pageio_add_request()
1179 if (nfs_pgio_has_mirroring(desc)) in nfs_pageio_add_request()
1180 desc->pg_mirror_idx = midx; in nfs_pageio_add_request()
1181 if (!nfs_pageio_add_request_mirror(desc, dupreq)) in nfs_pageio_add_request()
1193 static void nfs_pageio_complete_mirror(struct nfs_pageio_descriptor *desc, in nfs_pageio_complete_mirror() argument
1196 struct nfs_pgio_mirror *mirror = &desc->pg_mirrors[mirror_idx]; in nfs_pageio_complete_mirror()
1197 u32 restore_idx = desc->pg_mirror_idx; in nfs_pageio_complete_mirror()
1199 if (nfs_pgio_has_mirroring(desc)) in nfs_pageio_complete_mirror()
1200 desc->pg_mirror_idx = mirror_idx; in nfs_pageio_complete_mirror()
1202 nfs_pageio_doio(desc); in nfs_pageio_complete_mirror()
1205 if (!nfs_do_recoalesce(desc)) in nfs_pageio_complete_mirror()
1208 desc->pg_mirror_idx = restore_idx; in nfs_pageio_complete_mirror()
1221 int nfs_pageio_resend(struct nfs_pageio_descriptor *desc, in nfs_pageio_resend() argument
1226 desc->pg_dreq = hdr->dreq; in nfs_pageio_resend()
1231 if (!nfs_pageio_add_request(desc, req)) in nfs_pageio_resend()
1234 nfs_pageio_complete(desc); in nfs_pageio_resend()
1247 void nfs_pageio_complete(struct nfs_pageio_descriptor *desc) in nfs_pageio_complete() argument
1251 for (midx = 0; midx < desc->pg_mirror_count; midx++) in nfs_pageio_complete()
1252 nfs_pageio_complete_mirror(desc, midx); in nfs_pageio_complete()
1254 if (desc->pg_ops->pg_cleanup) in nfs_pageio_complete()
1255 desc->pg_ops->pg_cleanup(desc); in nfs_pageio_complete()
1256 nfs_pageio_cleanup_mirroring(desc); in nfs_pageio_complete()
1270 void nfs_pageio_cond_complete(struct nfs_pageio_descriptor *desc, pgoff_t index) in nfs_pageio_cond_complete() argument
1276 for (midx = 0; midx < desc->pg_mirror_count; midx++) { in nfs_pageio_cond_complete()
1277 mirror = &desc->pg_mirrors[midx]; in nfs_pageio_cond_complete()
1281 nfs_pageio_complete_mirror(desc, midx); in nfs_pageio_cond_complete()