aboutsummaryrefslogtreecommitdiff
path: root/lib/netdev-notifier-error-inject.c
diff options
context:
space:
mode:
authorOlga Kornievskaia <[email protected]>2018-07-20 18:19:20 -0400
committerJ. Bruce Fields <[email protected]>2018-09-25 20:34:54 -0400
commite0639dc5805a9d4faaa2c07ad98fa853b9529dd3 (patch)
tree6807e44cd08cf5035f46d4f01d1a0db486cac7d0 /lib/netdev-notifier-error-inject.c
parent885e2bf3ea5121975ade0d7866ab6226a8547dc9 (diff)
NFSD introduce async copy feature
Upon receiving a request for async copy, create a new kthread. If we get asynchronous request, make sure to copy the needed arguments/state from the stack before starting the copy. Then start the thread and reply back to the client indicating copy is asynchronous. nfsd_copy_file_range() will copy in a loop over the total number of bytes is needed to copy. In case a failure happens in the middle, we ignore the error and return how much we copied so far. Once done creating a workitem for the callback workqueue and send CB_OFFLOAD with the results. The lifetime of the copy stateid is bound to the vfs copy. This way we don't need to keep the nfsd_net structure for the callback. We could keep it around longer so that an OFFLOAD_STATUS that came late would still get results, but clients should be able to deal without that. We handle OFFLOAD_CANCEL by sending a signal to the copy thread and calling kthread_stop. A client should cancel any ongoing copies before calling DESTROY_CLIENT; if not, we return a CLIENT_BUSY error. If the client is destroyed for some other reason (lease expiration, or server shutdown), we must clean up any ongoing copies ourselves. Signed-off-by: Olga Kornievskaia <[email protected]> [[email protected]: fix leak in error case] [[email protected]: remove signalling, merge patches] Signed-off-by: J. Bruce Fields <[email protected]>
Diffstat (limited to 'lib/netdev-notifier-error-inject.c')
0 files changed, 0 insertions, 0 deletions