This source file includes following definitions.
- DLMFS_I
   1 
   2 
   3 
   4 
   5 
   6 
   7 
   8 
   9 
  10 
  11 
  12 
  13 #ifndef USERDLM_H
  14 #define USERDLM_H
  15 
  16 #include <linux/module.h>
  17 #include <linux/fs.h>
  18 #include <linux/types.h>
  19 #include <linux/workqueue.h>
  20 
  21 
  22 #define USER_LOCK_ATTACHED      (0x00000001) 
  23 
  24 #define USER_LOCK_BUSY          (0x00000002) 
  25 
  26 #define USER_LOCK_BLOCKED       (0x00000004) 
  27 
  28 #define USER_LOCK_IN_TEARDOWN   (0x00000008) 
  29 
  30 
  31 #define USER_LOCK_QUEUED        (0x00000010) 
  32 
  33 #define USER_LOCK_IN_CANCEL     (0x00000020)
  34 
  35 struct user_lock_res {
  36         spinlock_t               l_lock;
  37 
  38         int                      l_flags;
  39 
  40 #define USER_DLM_LOCK_ID_MAX_LEN  32
  41         char                     l_name[USER_DLM_LOCK_ID_MAX_LEN];
  42         int                      l_namelen;
  43         int                      l_level;
  44         unsigned int             l_ro_holders;
  45         unsigned int             l_ex_holders;
  46         struct ocfs2_dlm_lksb    l_lksb;
  47 
  48         int                      l_requested;
  49         int                      l_blocking;
  50 
  51         wait_queue_head_t        l_event;
  52 
  53         struct work_struct       l_work;
  54 };
  55 
  56 extern struct workqueue_struct *user_dlm_worker;
  57 
  58 void user_dlm_lock_res_init(struct user_lock_res *lockres,
  59                             struct dentry *dentry);
  60 int user_dlm_destroy_lock(struct user_lock_res *lockres);
  61 int user_dlm_cluster_lock(struct user_lock_res *lockres,
  62                           int level,
  63                           int lkm_flags);
  64 void user_dlm_cluster_unlock(struct user_lock_res *lockres,
  65                              int level);
  66 void user_dlm_write_lvb(struct inode *inode,
  67                         const char *val,
  68                         unsigned int len);
  69 ssize_t user_dlm_read_lvb(struct inode *inode,
  70                           char *val,
  71                           unsigned int len);
  72 struct ocfs2_cluster_connection *user_dlm_register(const struct qstr *name);
  73 void user_dlm_unregister(struct ocfs2_cluster_connection *conn);
  74 void user_dlm_set_locking_protocol(void);
  75 
  76 struct dlmfs_inode_private {
  77         struct ocfs2_cluster_connection *ip_conn;
  78 
  79         struct user_lock_res ip_lockres; 
  80         struct inode         *ip_parent;
  81 
  82         struct inode         ip_vfs_inode;
  83 };
  84 
  85 static inline struct dlmfs_inode_private *
  86 DLMFS_I(struct inode *inode)
  87 {
  88         return container_of(inode,
  89                             struct dlmfs_inode_private,
  90                             ip_vfs_inode);
  91 }
  92 
  93 struct dlmfs_filp_private {
  94         int                  fp_lock_level;
  95 };
  96 
  97 #define DLMFS_MAGIC     0x76a9f425
  98 
  99 #endif