1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- /* SPDX-License-Identifier: GPL-2.0-or-later */
- /*
- * userdlm.h
- *
- * Userspace dlm defines
- *
- * Copyright (C) 2002, 2004 Oracle. All rights reserved.
- */
- #ifndef USERDLM_H
- #define USERDLM_H
- #include <linux/module.h>
- #include <linux/fs.h>
- #include <linux/types.h>
- #include <linux/workqueue.h>
- /* 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;
- unsigned int l_ro_holders;
- unsigned int 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;
- };
- extern struct 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,
- const char *val,
- unsigned int len);
- bool user_dlm_read_lvb(struct inode *inode, char *val);
- struct ocfs2_cluster_connection *user_dlm_register(const struct qstr *name);
- void user_dlm_unregister(struct ocfs2_cluster_connection *conn);
- void user_dlm_set_locking_protocol(void);
- struct dlmfs_inode_private {
- struct ocfs2_cluster_connection *ip_conn;
- struct user_lock_res ip_lockres; /* unused for directories. */
- struct inode *ip_parent;
- struct inode ip_vfs_inode;
- };
- static inline struct dlmfs_inode_private *
- DLMFS_I(struct inode *inode)
- {
- return container_of(inode,
- struct dlmfs_inode_private,
- ip_vfs_inode);
- }
- struct dlmfs_filp_private {
- int fp_lock_level;
- };
- #define DLMFS_MAGIC 0x76a9f425
- #endif /* USERDLM_H */
|