/* user_lock_res->l_flags flags. */ #define USER_LOCK_ATTACHED (0x00000001) /* we have initialized
* the lvb */ #define USER_LOCK_BUSY (0x00000002) /* we are currently in
* dlm_lock */ #define USER_LOCK_BLOCKED (0x00000004) /* blocked waiting to
* downconvert*/ #define USER_LOCK_IN_TEARDOWN (0x00000008) /* we're currently * destroying this
* lock. */ #define USER_LOCK_QUEUED (0x00000010) /* lock is on the
* workqueue */ #define USER_LOCK_IN_CANCEL (0x00000020)
struct user_lock_res {
spinlock_t l_lock;
int l_flags;
#define USER_DLM_LOCK_ID_MAX_LEN 32 char l_name[USER_DLM_LOCK_ID_MAX_LEN]; int l_namelen; int l_level; unsignedint l_ro_holders; unsignedint l_ex_holders; struct ocfs2_dlm_lksb l_lksb;
int l_requested; int l_blocking;
wait_queue_head_t l_event;
struct work_struct l_work;
};
externstruct workqueue_struct *user_dlm_worker;
void user_dlm_lock_res_init(struct user_lock_res *lockres, struct dentry *dentry); int user_dlm_destroy_lock(struct user_lock_res *lockres); int user_dlm_cluster_lock(struct user_lock_res *lockres, int level, int lkm_flags); void user_dlm_cluster_unlock(struct user_lock_res *lockres, int level); void user_dlm_write_lvb(struct inode *inode, constchar *val, unsignedint len); bool user_dlm_read_lvb(struct inode *inode, char *val); struct ocfs2_cluster_connection *user_dlm_register(conststruct qstr *name); void user_dlm_unregister(struct ocfs2_cluster_connection *conn); void user_dlm_set_locking_protocol(void);
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.