diff options
author | Soumya Koduri <skoduri@redhat.com> | 2017-10-17 16:12:06 +0530 |
---|---|---|
committer | jiffin tony Thottan <jthottan@redhat.com> | 2017-10-25 11:33:39 +0000 |
commit | 19fe3906c13ad360c07bb94db6b7f63024b30ef1 (patch) | |
tree | 4e2cd2fbaf49d3bb26b359c593933b546ba173e9 /api/src/glfs.h | |
parent | 7d929bacbe537ee84964bb8d79f84d6c58a6cb04 (diff) |
gfapi: set lkowner in glfd
We need a provision to be able to set lkowner (which is
used to distinguish locks maintained by server) in gfapi.
Since the same lk_owner need to be used to be able to
flush the lock while closing the fd, store the lkowner
in the glfd structure itself.
A new API has been added to be able to set lkowner in glfd.
This is backport of below mainline fix -
https://review.gluster.org/#/c/18429
https://review.gluster.org/#/c/18522/
Change-Id: I67591d6b9a89c20b9617d52616513ff9e6c06b47
BUG: 1501956
Signed-off-by: Soumya Koduri <skoduri@redhat.com>
Diffstat (limited to 'api/src/glfs.h')
-rw-r--r-- | api/src/glfs.h | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/api/src/glfs.h b/api/src/glfs.h index 5420a1dde66..ec3258d083a 100644 --- a/api/src/glfs.h +++ b/api/src/glfs.h @@ -855,6 +855,34 @@ glfs_xreaddirplus_r (struct glfs_fd *glfd, uint32_t flags, struct dirent *ext, struct dirent **res); GFAPI_PUBLIC(glfs_xreaddirplus_r, 3.11.0); +#define GFAPI_MAX_LOCK_OWNER_LEN 255 + +/* + * + * DESCRIPTION + * + * This API allows application to set lk_owner on a fd. + * A glfd can be associated with only single lk_owner. In case if there + * is need to set another lk_owner, applications can make use of + * 'glfs_dup' to get duplicate glfd and set new lk_owner on that second + * glfd. + * + * Also its not recommended to override or clear lk_owner value as the + * same shall be used to flush any outstanding locks while closing the fd. + * + * PARAMETERS + * + * INPUT: + * @glfd: GFAPI file descriptor + * @len: Size of lk_owner buffer. Max value can be GFAPI_MAX_LOCK_OWNER_LEN + * @data: lk_owner data buffer. + * + * OUTPUT: + * 0: SUCCESS + * -1: FAILURE + */ +int glfs_fd_set_lkowner (glfs_fd_t *glfd, void *data, int len); + GFAPI_PUBLIC(glfs_fd_set_lkowner, 3.10.7); __END_DECLS #endif /* !_GLFS_H */ |