Commit bbbe9e1c authored by Vitaliy Mysak's avatar Vitaliy Mysak Committed by Darek Stojaczyk
Browse files

ocf: add vbdev_ocf_mngt_stop() function



Add stop function to management interface.
It is needed for error handling when execution has to be aborted early.

Example flow:
```
rc = op();
if (rc) {
   handle();
   vbdev_ocf_mngt_stop();
} else {
   vbdev_ocf_mngt_continue();
}
```

This can be improved in the future, because currently, error
  handling cannot be a management operation on its own (but should be).

Signed-off-by: default avatarVitaliy Mysak <vitaliy.mysak@intel.com>
Change-Id: I9ba528db8a9957ee561e5c1b5528b16bd143d5d8
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/453654


Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
Reviewed-by: default avatarDarek Stojaczyk <dariusz.stojaczyk@intel.com>
parent 61948a1c
Loading
Loading
Loading
Loading
+13 −5
Original line number Diff line number Diff line
@@ -111,6 +111,18 @@ vbdev_ocf_mngt_poll(struct vbdev_ocf *vbdev, vbdev_ocf_mngt_fn fn)
	vbdev->mngt_ctx.poller_fn = fn;
}

void
vbdev_ocf_mngt_stop(struct vbdev_ocf *vbdev)
{
	spdk_poller_unregister(&vbdev->mngt_ctx.poller);

	if (vbdev->mngt_ctx.cb) {
		vbdev->mngt_ctx.cb(vbdev->mngt_ctx.status, vbdev, vbdev->mngt_ctx.cb_arg);
	}

	memset(&vbdev->mngt_ctx, 0, sizeof(vbdev->mngt_ctx));
}

void
vbdev_ocf_mngt_continue(struct vbdev_ocf *vbdev, int status)
{
@@ -129,9 +141,5 @@ vbdev_ocf_mngt_continue(struct vbdev_ocf *vbdev, int status)
		return;
	}

	spdk_poller_unregister(&vbdev->mngt_ctx.poller);
	if (vbdev->mngt_ctx.cb) {
		vbdev->mngt_ctx.cb(vbdev->mngt_ctx.status, vbdev, vbdev->mngt_ctx.cb_arg);
	}
	memset(&vbdev->mngt_ctx, 0, sizeof(vbdev->mngt_ctx));
	vbdev_ocf_mngt_stop(vbdev);
}
+3 −0
Original line number Diff line number Diff line
@@ -56,4 +56,7 @@ void vbdev_ocf_mngt_poll(struct vbdev_ocf *vbdev, vbdev_ocf_mngt_fn fn);
 * If next function is NULL, finish management operation and invoke callback */
void vbdev_ocf_mngt_continue(struct vbdev_ocf *vbdev, int status);

/* Stop the execution and invoke callback with last status returned */
void vbdev_ocf_mngt_stop(struct vbdev_ocf *vbdev);

#endif