Lines Matching refs:hdr

42 		       struct nfs_pgio_header *hdr,  in nfs_pgheader_init()  argument
43 void (*release)(struct nfs_pgio_header *hdr)) in nfs_pgheader_init() argument
48 hdr->req = nfs_list_entry(mirror->pg_list.next); in nfs_pgheader_init()
49 hdr->inode = desc->pg_inode; in nfs_pgheader_init()
50 hdr->cred = hdr->req->wb_context->cred; in nfs_pgheader_init()
51 hdr->io_start = req_offset(hdr->req); in nfs_pgheader_init()
52 hdr->good_bytes = mirror->pg_count; in nfs_pgheader_init()
53 hdr->io_completion = desc->pg_io_completion; in nfs_pgheader_init()
54 hdr->dreq = desc->pg_dreq; in nfs_pgheader_init()
55 hdr->release = release; in nfs_pgheader_init()
56 hdr->completion_ops = desc->pg_completion_ops; in nfs_pgheader_init()
57 if (hdr->completion_ops->init_hdr) in nfs_pgheader_init()
58 hdr->completion_ops->init_hdr(hdr); in nfs_pgheader_init()
60 hdr->pgio_mirror_idx = desc->pg_mirror_idx; in nfs_pgheader_init()
64 void nfs_set_pgio_error(struct nfs_pgio_header *hdr, int error, loff_t pos) in nfs_set_pgio_error() argument
66 spin_lock(&hdr->lock); in nfs_set_pgio_error()
67 if (!test_and_set_bit(NFS_IOHDR_ERROR, &hdr->flags) in nfs_set_pgio_error()
68 || pos < hdr->io_start + hdr->good_bytes) { in nfs_set_pgio_error()
69 clear_bit(NFS_IOHDR_EOF, &hdr->flags); in nfs_set_pgio_error()
70 hdr->good_bytes = pos - hdr->io_start; in nfs_set_pgio_error()
71 hdr->error = error; in nfs_set_pgio_error()
73 spin_unlock(&hdr->lock); in nfs_set_pgio_error()
516 struct nfs_pgio_header *hdr = ops->rw_alloc_header(); in nfs_pgio_header_alloc() local
518 if (hdr) { in nfs_pgio_header_alloc()
519 INIT_LIST_HEAD(&hdr->pages); in nfs_pgio_header_alloc()
520 spin_lock_init(&hdr->lock); in nfs_pgio_header_alloc()
521 hdr->rw_ops = ops; in nfs_pgio_header_alloc()
523 return hdr; in nfs_pgio_header_alloc()
535 static void nfs_pgio_data_destroy(struct nfs_pgio_header *hdr) in nfs_pgio_data_destroy() argument
537 if (hdr->args.context) in nfs_pgio_data_destroy()
538 put_nfs_open_context(hdr->args.context); in nfs_pgio_data_destroy()
539 if (hdr->page_array.pagevec != hdr->page_array.page_array) in nfs_pgio_data_destroy()
540 kfree(hdr->page_array.pagevec); in nfs_pgio_data_destroy()
547 void nfs_pgio_header_free(struct nfs_pgio_header *hdr) in nfs_pgio_header_free() argument
549 nfs_pgio_data_destroy(hdr); in nfs_pgio_header_free()
550 hdr->rw_ops->rw_free_header(hdr); in nfs_pgio_header_free()
562 static void nfs_pgio_rpcsetup(struct nfs_pgio_header *hdr, in nfs_pgio_rpcsetup() argument
566 struct nfs_page *req = hdr->req; in nfs_pgio_rpcsetup()
571 hdr->args.fh = NFS_FH(hdr->inode); in nfs_pgio_rpcsetup()
572 hdr->args.offset = req_offset(req); in nfs_pgio_rpcsetup()
574 hdr->mds_offset = hdr->args.offset; in nfs_pgio_rpcsetup()
575 hdr->args.pgbase = req->wb_pgbase; in nfs_pgio_rpcsetup()
576 hdr->args.pages = hdr->page_array.pagevec; in nfs_pgio_rpcsetup()
577 hdr->args.count = count; in nfs_pgio_rpcsetup()
578 hdr->args.context = get_nfs_open_context(req->wb_context); in nfs_pgio_rpcsetup()
579 hdr->args.lock_context = req->wb_lock_context; in nfs_pgio_rpcsetup()
580 hdr->args.stable = NFS_UNSTABLE; in nfs_pgio_rpcsetup()
589 hdr->args.stable = NFS_FILE_SYNC; in nfs_pgio_rpcsetup()
592 hdr->res.fattr = &hdr->fattr; in nfs_pgio_rpcsetup()
593 hdr->res.count = 0; in nfs_pgio_rpcsetup()
594 hdr->res.eof = 0; in nfs_pgio_rpcsetup()
595 hdr->res.verf = &hdr->verf; in nfs_pgio_rpcsetup()
596 nfs_fattr_init(&hdr->fattr); in nfs_pgio_rpcsetup()
606 struct nfs_pgio_header *hdr = calldata; in nfs_pgio_prepare() local
608 err = NFS_PROTO(hdr->inode)->pgio_rpc_prepare(task, hdr); in nfs_pgio_prepare()
613 int nfs_initiate_pgio(struct rpc_clnt *clnt, struct nfs_pgio_header *hdr, in nfs_initiate_pgio() argument
619 .rpc_argp = &hdr->args, in nfs_initiate_pgio()
620 .rpc_resp = &hdr->res, in nfs_initiate_pgio()
625 .task = &hdr->task, in nfs_initiate_pgio()
628 .callback_data = hdr, in nfs_initiate_pgio()
634 hdr->rw_ops->rw_initiate(hdr, &msg, rpc_ops, &task_setup_data, how); in nfs_initiate_pgio()
638 hdr->inode->i_sb->s_id, in nfs_initiate_pgio()
639 (unsigned long long)NFS_FILEID(hdr->inode), in nfs_initiate_pgio()
640 hdr->args.count, in nfs_initiate_pgio()
641 (unsigned long long)hdr->args.offset); in nfs_initiate_pgio()
664 static void nfs_pgio_error(struct nfs_pgio_header *hdr) in nfs_pgio_error() argument
666 set_bit(NFS_IOHDR_REDO, &hdr->flags); in nfs_pgio_error()
667 hdr->completion_ops->completion(hdr); in nfs_pgio_error()
676 struct nfs_pgio_header *hdr = calldata; in nfs_pgio_release() local
677 hdr->completion_ops->completion(hdr); in nfs_pgio_release()
736 struct nfs_pgio_header *hdr = calldata; in nfs_pgio_result() local
737 struct inode *inode = hdr->inode; in nfs_pgio_result()
742 if (hdr->rw_ops->rw_done(task, hdr, inode) != 0) in nfs_pgio_result()
745 nfs_set_pgio_error(hdr, task->tk_status, hdr->args.offset); in nfs_pgio_result()
747 hdr->rw_ops->rw_result(task, hdr); in nfs_pgio_result()
759 struct nfs_pgio_header *hdr) in nfs_generic_pgio() argument
768 struct nfs_page_array *pg_array = &hdr->page_array; in nfs_generic_pgio()
778 if (hdr->rw_mode == FMODE_WRITE) in nfs_generic_pgio()
783 nfs_pgio_error(hdr); in nfs_generic_pgio()
790 pages = hdr->page_array.pagevec; in nfs_generic_pgio()
795 nfs_list_move_request(req, &hdr->pages); in nfs_generic_pgio()
805 nfs_pgio_error(hdr); in nfs_generic_pgio()
815 nfs_pgio_rpcsetup(hdr, mirror->pg_count, desc->pg_ioflags, &cinfo); in nfs_generic_pgio()
823 struct nfs_pgio_header *hdr; in nfs_generic_pg_pgios() local
826 hdr = nfs_pgio_header_alloc(desc->pg_rw_ops); in nfs_generic_pg_pgios()
827 if (!hdr) { in nfs_generic_pg_pgios()
831 nfs_pgheader_init(desc, hdr, nfs_pgio_header_free); in nfs_generic_pg_pgios()
832 ret = nfs_generic_pgio(desc, hdr); in nfs_generic_pg_pgios()
834 ret = nfs_initiate_pgio(NFS_CLIENT(hdr->inode), in nfs_generic_pg_pgios()
835 hdr, in nfs_generic_pg_pgios()
836 hdr->cred, in nfs_generic_pg_pgios()
837 NFS_PROTO(hdr->inode), in nfs_generic_pg_pgios()
1246 struct nfs_pgio_header *hdr) in nfs_pageio_resend() argument
1250 desc->pg_io_completion = hdr->io_completion; in nfs_pageio_resend()
1251 desc->pg_dreq = hdr->dreq; in nfs_pageio_resend()
1252 list_splice_init(&hdr->pages, &pages); in nfs_pageio_resend()
1262 hdr->completion_ops->error_cleanup(&pages, err); in nfs_pageio_resend()
1263 nfs_set_pgio_error(hdr, err, hdr->io_start); in nfs_pageio_resend()