1 #ifndef _LINUX_CEPH_CLS_LOCK_CLIENT_H
2 #define _LINUX_CEPH_CLS_LOCK_CLIENT_H
4 #include <linux/ceph/osd_client.h>
6 enum ceph_cls_lock_type
{
7 CEPH_CLS_LOCK_NONE
= 0,
8 CEPH_CLS_LOCK_EXCLUSIVE
= 1,
9 CEPH_CLS_LOCK_SHARED
= 2,
12 struct ceph_locker_id
{
13 struct ceph_entity_name name
; /* locker's client name */
14 char *cookie
; /* locker's cookie */
17 struct ceph_locker_info
{
18 struct ceph_entity_addr addr
; /* locker's address */
22 struct ceph_locker_id id
;
23 struct ceph_locker_info info
;
26 int ceph_cls_lock(struct ceph_osd_client
*osdc
,
27 struct ceph_object_id
*oid
,
28 struct ceph_object_locator
*oloc
,
29 char *lock_name
, u8 type
, char *cookie
,
30 char *tag
, char *desc
, u8 flags
);
31 int ceph_cls_unlock(struct ceph_osd_client
*osdc
,
32 struct ceph_object_id
*oid
,
33 struct ceph_object_locator
*oloc
,
34 char *lock_name
, char *cookie
);
35 int ceph_cls_break_lock(struct ceph_osd_client
*osdc
,
36 struct ceph_object_id
*oid
,
37 struct ceph_object_locator
*oloc
,
38 char *lock_name
, char *cookie
,
39 struct ceph_entity_name
*locker
);
40 int ceph_cls_set_cookie(struct ceph_osd_client
*osdc
,
41 struct ceph_object_id
*oid
,
42 struct ceph_object_locator
*oloc
,
43 char *lock_name
, u8 type
, char *old_cookie
,
44 char *tag
, char *new_cookie
);
46 void ceph_free_lockers(struct ceph_locker
*lockers
, u32 num_lockers
);
48 int ceph_cls_lock_info(struct ceph_osd_client
*osdc
,
49 struct ceph_object_id
*oid
,
50 struct ceph_object_locator
*oloc
,
51 char *lock_name
, u8
*type
, char **tag
,
52 struct ceph_locker
**lockers
, u32
*num_lockers
);