• Home
  • Raw
  • Download

Lines Matching refs:copy

1089 void nfs4_put_copy(struct nfsd4_copy *copy)  in nfs4_put_copy()  argument
1091 if (!refcount_dec_and_test(&copy->refcount)) in nfs4_put_copy()
1093 kfree(copy); in nfs4_put_copy()
1097 check_and_set_stop_copy(struct nfsd4_copy *copy) in check_and_set_stop_copy() argument
1101 spin_lock(&copy->cp_clp->async_lock); in check_and_set_stop_copy()
1102 value = copy->stopped; in check_and_set_stop_copy()
1103 if (!copy->stopped) in check_and_set_stop_copy()
1104 copy->stopped = true; in check_and_set_stop_copy()
1105 spin_unlock(&copy->cp_clp->async_lock); in check_and_set_stop_copy()
1109 static void nfsd4_stop_copy(struct nfsd4_copy *copy) in nfsd4_stop_copy() argument
1112 if (!check_and_set_stop_copy(copy)) in nfsd4_stop_copy()
1113 kthread_stop(copy->copy_task); in nfsd4_stop_copy()
1114 nfs4_put_copy(copy); in nfsd4_stop_copy()
1119 struct nfsd4_copy *copy = NULL; in nfsd4_get_copy() local
1123 copy = list_first_entry(&clp->async_copies, struct nfsd4_copy, in nfsd4_get_copy()
1125 refcount_inc(&copy->refcount); in nfsd4_get_copy()
1128 return copy; in nfsd4_get_copy()
1133 struct nfsd4_copy *copy; in nfsd4_shutdown_copy() local
1135 while ((copy = nfsd4_get_copy(clp)) != NULL) in nfsd4_shutdown_copy()
1136 nfsd4_stop_copy(copy); in nfsd4_shutdown_copy()
1141 struct nfsd4_copy *copy = container_of(cb, struct nfsd4_copy, cp_cb); in nfsd4_cb_offload_release() local
1143 nfs4_put_copy(copy); in nfsd4_cb_offload_release()
1157 static void nfsd4_init_copy_res(struct nfsd4_copy *copy, bool sync) in nfsd4_init_copy_res() argument
1159 copy->cp_res.wr_stable_how = NFS_UNSTABLE; in nfsd4_init_copy_res()
1160 copy->cp_synchronous = sync; in nfsd4_init_copy_res()
1161 gen_boot_verifier(&copy->cp_res.wr_verifier, copy->cp_clp->net); in nfsd4_init_copy_res()
1164 static ssize_t _nfsd_copy_file_range(struct nfsd4_copy *copy) in _nfsd_copy_file_range() argument
1167 size_t bytes_total = copy->cp_count; in _nfsd_copy_file_range()
1168 u64 src_pos = copy->cp_src_pos; in _nfsd_copy_file_range()
1169 u64 dst_pos = copy->cp_dst_pos; in _nfsd_copy_file_range()
1174 bytes_copied = nfsd_copy_file_range(copy->nf_src->nf_file, in _nfsd_copy_file_range()
1175 src_pos, copy->nf_dst->nf_file, dst_pos, in _nfsd_copy_file_range()
1180 copy->cp_res.wr_bytes_written += bytes_copied; in _nfsd_copy_file_range()
1183 } while (bytes_total > 0 && !copy->cp_synchronous); in _nfsd_copy_file_range()
1187 static __be32 nfsd4_do_copy(struct nfsd4_copy *copy, bool sync) in nfsd4_do_copy() argument
1192 bytes = _nfsd_copy_file_range(copy); in nfsd4_do_copy()
1196 if (bytes < 0 && !copy->cp_res.wr_bytes_written) in nfsd4_do_copy()
1199 nfsd4_init_copy_res(copy, sync); in nfsd4_do_copy()
1203 nfsd_file_put(copy->nf_src); in nfsd4_do_copy()
1204 nfsd_file_put(copy->nf_dst); in nfsd4_do_copy()
1222 static void cleanup_async_copy(struct nfsd4_copy *copy) in cleanup_async_copy() argument
1224 nfs4_free_cp_state(copy); in cleanup_async_copy()
1225 nfsd_file_put(copy->nf_dst); in cleanup_async_copy()
1226 nfsd_file_put(copy->nf_src); in cleanup_async_copy()
1227 spin_lock(&copy->cp_clp->async_lock); in cleanup_async_copy()
1228 list_del(&copy->copies); in cleanup_async_copy()
1229 spin_unlock(&copy->cp_clp->async_lock); in cleanup_async_copy()
1230 nfs4_put_copy(copy); in cleanup_async_copy()
1235 struct nfsd4_copy *copy = (struct nfsd4_copy *)data; in nfsd4_do_async_copy() local
1238 copy->nfserr = nfsd4_do_copy(copy, 0); in nfsd4_do_async_copy()
1242 memcpy(&cb_copy->cp_res, &copy->cp_res, sizeof(copy->cp_res)); in nfsd4_do_async_copy()
1243 cb_copy->cp_clp = copy->cp_clp; in nfsd4_do_async_copy()
1244 cb_copy->nfserr = copy->nfserr; in nfsd4_do_async_copy()
1245 memcpy(&cb_copy->fh, &copy->fh, sizeof(copy->fh)); in nfsd4_do_async_copy()
1250 cleanup_async_copy(copy); in nfsd4_do_async_copy()
1258 struct nfsd4_copy *copy = &u->copy; in nfsd4_copy() local
1262 status = nfsd4_verify_copy(rqstp, cstate, &copy->cp_src_stateid, in nfsd4_copy()
1263 &copy->nf_src, &copy->cp_dst_stateid, in nfsd4_copy()
1264 &copy->nf_dst); in nfsd4_copy()
1268 copy->cp_clp = cstate->clp; in nfsd4_copy()
1269 memcpy(&copy->fh, &cstate->current_fh.fh_handle, in nfsd4_copy()
1271 if (!copy->cp_synchronous) { in nfsd4_copy()
1278 if (!nfs4_init_cp_state(nn, copy)) { in nfsd4_copy()
1283 memcpy(&copy->cp_res.cb_stateid, &copy->cp_stateid, in nfsd4_copy()
1284 sizeof(copy->cp_stateid)); in nfsd4_copy()
1285 dup_copy_fields(copy, async_copy); in nfsd4_copy()
1297 status = nfsd4_do_copy(copy, 1); in nfsd4_copy()
1309 struct nfsd4_copy *copy; in find_async_copy() local
1312 list_for_each_entry(copy, &clp->async_copies, copies) { in find_async_copy()
1313 if (memcmp(&copy->cp_stateid, stateid, NFS4_STATEID_SIZE)) in find_async_copy()
1315 refcount_inc(&copy->refcount); in find_async_copy()
1317 return copy; in find_async_copy()
1330 struct nfsd4_copy *copy; in nfsd4_offload_cancel() local
1333 copy = find_async_copy(clp, &os->stateid); in nfsd4_offload_cancel()
1334 if (copy) in nfsd4_offload_cancel()
1335 nfsd4_stop_copy(copy); in nfsd4_offload_cancel()
1371 struct nfsd4_copy *copy; in nfsd4_offload_status() local
1374 copy = find_async_copy(clp, &os->stateid); in nfsd4_offload_status()
1375 if (copy) { in nfsd4_offload_status()
1376 os->count = copy->cp_res.wr_bytes_written; in nfsd4_offload_status()
1377 nfs4_put_copy(copy); in nfsd4_offload_status()