Lines Matching refs:req
183 struct ceph_mds_request *req; in prepare_open_request() local
190 req = ceph_mdsc_create_request(mdsc, op, want_auth); in prepare_open_request()
191 if (IS_ERR(req)) in prepare_open_request()
193 req->r_fmode = ceph_flags_to_mode(flags); in prepare_open_request()
194 req->r_args.open.flags = ceph_flags_sys2wire(mdsc, flags); in prepare_open_request()
195 req->r_args.open.mode = cpu_to_le32(create_mode); in prepare_open_request()
197 return req; in prepare_open_request()
305 struct ceph_mds_request *req; in ceph_renew_caps() local
335 req = prepare_open_request(inode->i_sb, flags, 0); in ceph_renew_caps()
336 if (IS_ERR(req)) { in ceph_renew_caps()
337 err = PTR_ERR(req); in ceph_renew_caps()
341 req->r_inode = inode; in ceph_renew_caps()
343 req->r_num_caps = 1; in ceph_renew_caps()
345 err = ceph_mdsc_do_request(mdsc, NULL, req); in ceph_renew_caps()
346 ceph_mdsc_put_request(req); in ceph_renew_caps()
365 struct ceph_mds_request *req; in ceph_open() local
464 req = prepare_open_request(inode->i_sb, flags, 0); in ceph_open()
465 if (IS_ERR(req)) { in ceph_open()
466 err = PTR_ERR(req); in ceph_open()
469 req->r_inode = inode; in ceph_open()
472 req->r_num_caps = 1; in ceph_open()
473 err = ceph_mdsc_do_request(mdsc, NULL, req); in ceph_open()
475 err = ceph_init_file(inode, file, req->r_fmode); in ceph_open()
476 ceph_mdsc_put_request(req); in ceph_open()
599 struct ceph_mds_request *req) in ceph_async_create_cb() argument
602 struct dentry *dentry = req->r_dentry; in ceph_async_create_cb()
604 struct inode *tinode = req->r_target_inode; in ceph_async_create_cb()
605 int result = req->r_err ? req->r_err : in ceph_async_create_cb()
606 le32_to_cpu(req->r_reply_info.head->result); in ceph_async_create_cb()
614 mapping_set_error(req->r_parent->i_mapping, result); in ceph_async_create_cb()
619 char *path = ceph_mdsc_build_path(mdsc, req->r_dentry, &pathlen, in ceph_async_create_cb()
627 ceph_dir_clear_complete(req->r_parent); in ceph_async_create_cb()
634 wake_async_create_waiters(dinode, req->r_session); in ceph_async_create_cb()
641 if (req->r_deleg_ino != ino) in ceph_async_create_cb()
644 req->r_err, req->r_deleg_ino, ino); in ceph_async_create_cb()
647 wake_async_create_waiters(tinode, req->r_session); in ceph_async_create_cb()
650 req->r_deleg_ino); in ceph_async_create_cb()
653 ceph_mdsc_release_dir_caps(req); in ceph_async_create_cb()
659 struct ceph_mds_request *req, in ceph_finish_async_create() argument
673 struct ceph_vino vino = { .ino = req->r_deleg_ino, in ceph_finish_async_create()
682 if (req->r_pagelist) { in ceph_finish_async_create()
683 iinfo.xattr_len = req->r_pagelist->length; in ceph_finish_async_create()
684 iinfo.xattr_data = req->r_pagelist->mapped_tail; in ceph_finish_async_create()
704 mapped_fsuid(req->r_mnt_idmap, in ceph_finish_async_create()
714 mapped_fsgid(req->r_mnt_idmap, in ceph_finish_async_create()
731 ret = ceph_fill_inode(inode, NULL, &iinfo, NULL, req->r_session, in ceph_finish_async_create()
732 req->r_fmode, NULL); in ceph_finish_async_create()
786 struct ceph_mds_request *req; in ceph_atomic_open() local
861 req = prepare_open_request(dir->i_sb, flags, mode); in ceph_atomic_open()
862 if (IS_ERR(req)) { in ceph_atomic_open()
863 err = PTR_ERR(req); in ceph_atomic_open()
866 req->r_dentry = dget(dentry); in ceph_atomic_open()
867 req->r_num_caps = 2; in ceph_atomic_open()
871 req->r_args.open.mask = cpu_to_le32(mask); in ceph_atomic_open()
872 req->r_parent = dir; in ceph_atomic_open()
873 if (req->r_op == CEPH_MDS_OP_CREATE) in ceph_atomic_open()
874 req->r_mnt_idmap = mnt_idmap_get(idmap); in ceph_atomic_open()
877 set_bit(CEPH_MDS_R_FSCRYPT_FILE, &req->r_req_flags); in ceph_atomic_open()
886 req->r_dentry_drop = CEPH_CAP_FILE_SHARED | CEPH_CAP_AUTH_EXCL | in ceph_atomic_open()
888 req->r_dentry_unless = CEPH_CAP_FILE_EXCL; in ceph_atomic_open()
890 ceph_as_ctx_to_req(req, &as_ctx); in ceph_atomic_open()
892 if (try_async && (req->r_dir_caps = in ceph_atomic_open()
894 &req->r_deleg_ino))) { in ceph_atomic_open()
895 struct ceph_vino vino = { .ino = req->r_deleg_ino, in ceph_atomic_open()
899 set_bit(CEPH_MDS_R_ASYNC, &req->r_req_flags); in ceph_atomic_open()
900 req->r_args.open.flags |= cpu_to_le32(CEPH_O_EXCL); in ceph_atomic_open()
901 req->r_callback = ceph_async_create_cb; in ceph_atomic_open()
916 err = ceph_mdsc_submit_request(mdsc, dir, req); in ceph_atomic_open()
920 mode, req, in ceph_atomic_open()
924 restore_deleg_ino(dir, req->r_deleg_ino); in ceph_atomic_open()
925 ceph_mdsc_put_request(req); in ceph_atomic_open()
939 set_bit(CEPH_MDS_R_PARENT_LOCKED, &req->r_req_flags); in ceph_atomic_open()
940 req->r_new_inode = new_inode; in ceph_atomic_open()
942 err = ceph_mdsc_do_request(mdsc, (flags & O_CREAT) ? dir : NULL, req); in ceph_atomic_open()
944 dentry = ceph_handle_snapdir(req, dentry); in ceph_atomic_open()
952 if (!err && (flags & O_CREAT) && !req->r_reply_info.head->is_dentry) in ceph_atomic_open()
956 dn = ceph_finish_lookup(req, dentry, err); in ceph_atomic_open()
979 if (req->r_op == CEPH_MDS_OP_CREATE && req->r_reply_info.has_create_ino) { in ceph_atomic_open()
989 ceph_mdsc_put_request(req); in ceph_atomic_open()
1084 struct ceph_osd_request *req; in __ceph_sync_read() local
1102 req = ceph_osdc_new_request(osdc, &ci->i_layout, in __ceph_sync_read()
1109 if (IS_ERR(req)) { in __ceph_sync_read()
1110 ret = PTR_ERR(req); in __ceph_sync_read()
1119 op = &req->r_ops[0]; in __ceph_sync_read()
1124 ceph_osdc_put_request(req); in __ceph_sync_read()
1133 ceph_osdc_put_request(req); in __ceph_sync_read()
1138 osd_req_op_extent_osd_data_pages(req, 0, pages, read_len, in __ceph_sync_read()
1142 ceph_osdc_start_request(osdc, req); in __ceph_sync_read()
1143 ret = ceph_osdc_wait_request(osdc, req); in __ceph_sync_read()
1146 req->r_start_latency, in __ceph_sync_read()
1147 req->r_end_latency, in __ceph_sync_read()
1151 objver = req->r_version; in __ceph_sync_read()
1164 ceph_osdc_put_request(req); in __ceph_sync_read()
1178 ceph_osdc_put_request(req); in __ceph_sync_read()
1228 ceph_osdc_put_request(req); in __ceph_sync_read()
1280 struct ceph_osd_request *req; member
1331 static void ceph_aio_complete_req(struct ceph_osd_request *req) in ceph_aio_complete_req() argument
1333 int rc = req->r_result; in ceph_aio_complete_req()
1334 struct inode *inode = req->r_inode; in ceph_aio_complete_req()
1335 struct ceph_aio_request *aio_req = req->r_priv; in ceph_aio_complete_req()
1336 struct ceph_osd_data *osd_data = osd_req_op_extent_osd_data(req, 0); in ceph_aio_complete_req()
1337 struct ceph_osd_req_op *op = &req->r_ops[0]; in ceph_aio_complete_req()
1346 doutc(cl, "req %p inode %p %llx.%llx, rc %d bytes %u\n", req, in ceph_aio_complete_req()
1356 aio_work->req = req; in ceph_aio_complete_req()
1393 if (req->r_start_latency) { in ceph_aio_complete_req()
1395 ceph_update_write_metrics(metric, req->r_start_latency, in ceph_aio_complete_req()
1396 req->r_end_latency, len, rc); in ceph_aio_complete_req()
1398 ceph_update_read_metrics(metric, req->r_start_latency, in ceph_aio_complete_req()
1399 req->r_end_latency, len, rc); in ceph_aio_complete_req()
1404 ceph_osdc_put_request(req); in ceph_aio_complete_req()
1417 struct ceph_osd_request *orig_req = aio_work->req; in ceph_aio_retry_work()
1422 struct ceph_osd_request *req; in ceph_aio_retry_work() local
1438 req = ceph_osdc_alloc_request(orig_req->r_osdc, snapc, 1, in ceph_aio_retry_work()
1440 if (!req) { in ceph_aio_retry_work()
1442 req = orig_req; in ceph_aio_retry_work()
1446 req->r_flags = /* CEPH_OSD_FLAG_ORDERSNAP | */ CEPH_OSD_FLAG_WRITE; in ceph_aio_retry_work()
1447 ceph_oloc_copy(&req->r_base_oloc, &orig_req->r_base_oloc); in ceph_aio_retry_work()
1448 ceph_oid_copy(&req->r_base_oid, &orig_req->r_base_oid); in ceph_aio_retry_work()
1450 req->r_ops[0] = orig_req->r_ops[0]; in ceph_aio_retry_work()
1452 req->r_mtime = aio_req->mtime; in ceph_aio_retry_work()
1453 req->r_data_offset = req->r_ops[0].extent.offset; in ceph_aio_retry_work()
1455 ret = ceph_osdc_alloc_messages(req, GFP_NOFS); in ceph_aio_retry_work()
1457 ceph_osdc_put_request(req); in ceph_aio_retry_work()
1458 req = orig_req; in ceph_aio_retry_work()
1464 req->r_callback = ceph_aio_complete_req; in ceph_aio_retry_work()
1465 req->r_inode = inode; in ceph_aio_retry_work()
1466 req->r_priv = aio_req; in ceph_aio_retry_work()
1468 ceph_osdc_start_request(req->r_osdc, req); in ceph_aio_retry_work()
1471 req->r_result = ret; in ceph_aio_retry_work()
1472 ceph_aio_complete_req(req); in ceph_aio_retry_work()
1491 struct ceph_osd_request *req; in ceph_direct_read_write() local
1541 req = ceph_osdc_new_request(&fsc->client->osdc, &ci->i_layout, in ceph_direct_read_write()
1549 if (IS_ERR(req)) { in ceph_direct_read_write()
1550 ret = PTR_ERR(req); in ceph_direct_read_write()
1554 op = &req->r_ops[0]; in ceph_direct_read_write()
1559 ceph_osdc_put_request(req); in ceph_direct_read_write()
1566 ceph_osdc_put_request(req); in ceph_direct_read_write()
1571 osd_req_op_extent_update(req, 0, len); in ceph_direct_read_write()
1573 osd_req_op_extent_osd_data_bvecs(req, 0, bvecs, num_pages, len); in ceph_direct_read_write()
1603 req->r_mtime = mtime; in ceph_direct_read_write()
1611 req->r_callback = ceph_aio_complete_req; in ceph_direct_read_write()
1612 req->r_inode = inode; in ceph_direct_read_write()
1613 req->r_priv = aio_req; in ceph_direct_read_write()
1614 list_add_tail(&req->r_private_item, &aio_req->osd_reqs); in ceph_direct_read_write()
1620 ceph_osdc_start_request(req->r_osdc, req); in ceph_direct_read_write()
1621 ret = ceph_osdc_wait_request(&fsc->client->osdc, req); in ceph_direct_read_write()
1624 ceph_update_write_metrics(metric, req->r_start_latency, in ceph_direct_read_write()
1625 req->r_end_latency, len, ret); in ceph_direct_read_write()
1627 ceph_update_read_metrics(metric, req->r_start_latency, in ceph_direct_read_write()
1628 req->r_end_latency, len, ret); in ceph_direct_read_write()
1652 ceph_osdc_put_request(req); in ceph_direct_read_write()
1681 req = list_first_entry(&osd_reqs, in ceph_direct_read_write()
1684 list_del_init(&req->r_private_item); in ceph_direct_read_write()
1686 ceph_osdc_start_request(req->r_osdc, req); in ceph_direct_read_write()
1688 req->r_result = ret; in ceph_direct_read_write()
1689 ceph_aio_complete_req(req); in ceph_direct_read_write()
1719 struct ceph_osd_request *req; in ceph_sync_write() local
1810 req = ceph_osdc_new_request(osdc, &ci->i_layout, in ceph_sync_write()
1816 if (IS_ERR(req)) { in ceph_sync_write()
1818 ret = PTR_ERR(req); in ceph_sync_write()
1824 ceph_osdc_put_request(req); in ceph_sync_write()
1831 op = &req->r_ops[0]; in ceph_sync_write()
1834 osd_req_op_extent_osd_data_pages(req, 0, pages, in ceph_sync_write()
1841 ceph_osdc_put_request(req); in ceph_sync_write()
1851 op = &req->r_ops[1]; in ceph_sync_write()
1852 osd_req_op_extent_init(req, 1, in ceph_sync_write()
1861 ceph_osdc_put_request(req); in ceph_sync_write()
1866 osd_req_op_extent_osd_data_pages(req, first ? 1 : 0, in ceph_sync_write()
1873 ceph_osdc_start_request(osdc, req); in ceph_sync_write()
1874 ret = ceph_osdc_wait_request(osdc, req); in ceph_sync_write()
1878 req->r_start_latency, in ceph_sync_write()
1879 req->r_end_latency, in ceph_sync_write()
1889 ceph_osdc_put_request(req); in ceph_sync_write()
1905 ceph_osdc_put_request(req); in ceph_sync_write()
1910 op = &req->r_ops[0]; in ceph_sync_write()
1923 ceph_osdc_put_request(req); in ceph_sync_write()
1929 op = &req->r_ops[1]; in ceph_sync_write()
1938 ceph_osdc_put_request(req); in ceph_sync_write()
1945 assert_ver = req->r_version; in ceph_sync_write()
1948 ceph_osdc_put_request(req); in ceph_sync_write()
2003 req = ceph_osdc_new_request(osdc, &ci->i_layout, in ceph_sync_write()
2010 if (IS_ERR(req)) { in ceph_sync_write()
2011 ret = PTR_ERR(req); in ceph_sync_write()
2017 osd_req_op_extent_osd_data_pages(req, rmw ? 1 : 0, pages, write_len, in ceph_sync_write()
2020 req->r_inode = inode; in ceph_sync_write()
2021 req->r_mtime = mtime; in ceph_sync_write()
2032 osd_req_op_init(req, 0, CEPH_OSD_OP_ASSERT_VER, 0); in ceph_sync_write()
2033 req->r_ops[0].assert_ver.ver = assert_ver; in ceph_sync_write()
2035 osd_req_op_init(req, 0, CEPH_OSD_OP_CREATE, in ceph_sync_write()
2040 ceph_osdc_start_request(osdc, req); in ceph_sync_write()
2041 ret = ceph_osdc_wait_request(osdc, req); in ceph_sync_write()
2043 ceph_update_write_metrics(&fsc->mdsc->metric, req->r_start_latency, in ceph_sync_write()
2044 req->r_end_latency, len, ret); in ceph_sync_write()
2045 ceph_osdc_put_request(req); in ceph_sync_write()
2574 struct ceph_osd_request *req; in ceph_zero_partial_object() local
2589 req = ceph_osdc_new_request(&fsc->client->osdc, &ci->i_layout, in ceph_zero_partial_object()
2595 if (IS_ERR(req)) { in ceph_zero_partial_object()
2596 ret = PTR_ERR(req); in ceph_zero_partial_object()
2600 req->r_mtime = inode_get_mtime(inode); in ceph_zero_partial_object()
2601 ceph_osdc_start_request(&fsc->client->osdc, req); in ceph_zero_partial_object()
2602 ret = ceph_osdc_wait_request(&fsc->client->osdc, req); in ceph_zero_partial_object()
2605 ceph_osdc_put_request(req); in ceph_zero_partial_object()
2837 struct ceph_osd_request *req; in ceph_alloc_copyfrom_request() local
2846 req = ceph_osdc_alloc_request(osdc, NULL, 1, false, GFP_KERNEL); in ceph_alloc_copyfrom_request()
2847 if (!req) in ceph_alloc_copyfrom_request()
2850 req->r_flags = CEPH_OSD_FLAG_WRITE; in ceph_alloc_copyfrom_request()
2852 ceph_oloc_copy(&req->r_t.base_oloc, dst_oloc); in ceph_alloc_copyfrom_request()
2853 ceph_oid_copy(&req->r_t.base_oid, dst_oid); in ceph_alloc_copyfrom_request()
2855 ret = osd_req_op_copy_from_init(req, src_snapid, 0, in ceph_alloc_copyfrom_request()
2865 ret = ceph_osdc_alloc_messages(req, GFP_KERNEL); in ceph_alloc_copyfrom_request()
2869 return req; in ceph_alloc_copyfrom_request()
2872 ceph_osdc_put_request(req); in ceph_alloc_copyfrom_request()
2884 struct ceph_osd_request *req; in ceph_do_objects_copy() local
2912 req = ceph_alloc_copyfrom_request(osdc, src_ci->i_vino.snap, in ceph_do_objects_copy()
2917 if (IS_ERR(req)) in ceph_do_objects_copy()
2918 ret = PTR_ERR(req); in ceph_do_objects_copy()
2920 ceph_osdc_start_request(osdc, req); in ceph_do_objects_copy()
2921 ret = ceph_osdc_wait_request(osdc, req); in ceph_do_objects_copy()
2923 req->r_start_latency, in ceph_do_objects_copy()
2924 req->r_end_latency, in ceph_do_objects_copy()
2926 ceph_osdc_put_request(req); in ceph_do_objects_copy()