Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   1) /* SPDX-License-Identifier: GPL-2.0-or-later */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   2) /* -*- mode: c; c-basic-offset: 8; -*-
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   3)  * vim: noexpandtab sw=8 ts=8 sts=0:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   4)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   5)  * dlmglue.h
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   6)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   7)  * description here
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   8)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   9)  * Copyright (C) 2002, 2004 Oracle.  All rights reserved.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  10)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  11) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  12) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  13) #ifndef DLMGLUE_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  14) #define DLMGLUE_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  15) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  16) #include "dcache.h"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  17) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  18) #define OCFS2_LVB_VERSION 5
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  19) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  20) struct ocfs2_meta_lvb {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  21) 	__u8         lvb_version;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  22) 	__u8         lvb_reserved0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  23) 	__be16       lvb_idynfeatures;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  24) 	__be32       lvb_iclusters;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  25) 	__be32       lvb_iuid;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  26) 	__be32       lvb_igid;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  27) 	__be64       lvb_iatime_packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  28) 	__be64       lvb_ictime_packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  29) 	__be64       lvb_imtime_packed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  30) 	__be64       lvb_isize;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  31) 	__be16       lvb_imode;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  32) 	__be16       lvb_inlink;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  33) 	__be32       lvb_iattr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  34) 	__be32       lvb_igeneration;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  35) 	__be32       lvb_reserved2;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  36) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  37) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  38) #define OCFS2_QINFO_LVB_VERSION 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  39) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  40) struct ocfs2_qinfo_lvb {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  41) 	__u8	lvb_version;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  42) 	__u8	lvb_reserved[3];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  43) 	__be32	lvb_bgrace;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  44) 	__be32	lvb_igrace;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  45) 	__be32	lvb_syncms;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  46) 	__be32	lvb_blocks;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  47) 	__be32	lvb_free_blk;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  48) 	__be32	lvb_free_entry;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  49) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  50) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  51) #define OCFS2_ORPHAN_LVB_VERSION 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  52) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  53) struct ocfs2_orphan_scan_lvb {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  54) 	__u8	lvb_version;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  55) 	__u8	lvb_reserved[3];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  56) 	__be32	lvb_os_seqno;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  57) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  58) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  59) #define OCFS2_TRIMFS_LVB_VERSION 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  60) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  61) struct ocfs2_trim_fs_lvb {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  62) 	__u8	lvb_version;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  63) 	__u8	lvb_success;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  64) 	__u8	lvb_reserved[2];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  65) 	__be32	lvb_nodenum;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  66) 	__be64	lvb_start;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  67) 	__be64	lvb_len;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  68) 	__be64	lvb_minlen;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  69) 	__be64	lvb_trimlen;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  70) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  71) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  72) struct ocfs2_trim_fs_info {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  73) 	u8	tf_valid;	/* lvb is valid, or not */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  74) 	u8	tf_success;	/* trim is successful, or not */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  75) 	u32	tf_nodenum;	/* osb node number */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  76) 	u64	tf_start;	/* trim start offset in clusters */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  77) 	u64	tf_len;		/* trim end offset in clusters */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  78) 	u64	tf_minlen;	/* trim minimum contiguous free clusters */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  79) 	u64	tf_trimlen;	/* trimmed length in bytes */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  80) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  81) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  82) struct ocfs2_lock_holder {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  83) 	struct list_head oh_list;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  84) 	struct pid *oh_owner_pid;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  85) 	int oh_ex;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  86) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  87) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  88) /* ocfs2_inode_lock_full() 'arg_flags' flags */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  89) /* don't wait on recovery. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  90) #define OCFS2_META_LOCK_RECOVERY	(0x01)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  91) /* Instruct the dlm not to queue ourselves on the other node. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  92) #define OCFS2_META_LOCK_NOQUEUE		(0x02)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  93) /* don't block waiting for the downconvert thread, instead return -EAGAIN */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  94) #define OCFS2_LOCK_NONBLOCK		(0x04)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  95) /* just get back disk inode bh if we've got cluster lock. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  96) #define OCFS2_META_LOCK_GETBH		(0x08)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  97) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  98) /* Locking subclasses of inode cluster lock */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  99) enum {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) 	OI_LS_NORMAL = 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) 	OI_LS_PARENT,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) 	OI_LS_RENAME1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) 	OI_LS_RENAME2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) 	OI_LS_REFLINK_TARGET,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) int ocfs2_dlm_init(struct ocfs2_super *osb);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) void ocfs2_dlm_shutdown(struct ocfs2_super *osb, int hangup_pending);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) void ocfs2_lock_res_init_once(struct ocfs2_lock_res *res);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) void ocfs2_inode_lock_res_init(struct ocfs2_lock_res *res,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) 			       enum ocfs2_lock_type type,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) 			       unsigned int generation,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) 			       struct inode *inode);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) void ocfs2_dentry_lock_res_init(struct ocfs2_dentry_lock *dl,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) 				u64 parent, struct inode *inode);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) struct ocfs2_file_private;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) void ocfs2_file_lock_res_init(struct ocfs2_lock_res *lockres,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) 			      struct ocfs2_file_private *fp);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) struct ocfs2_mem_dqinfo;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) void ocfs2_qinfo_lock_res_init(struct ocfs2_lock_res *lockres,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121)                                struct ocfs2_mem_dqinfo *info);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) void ocfs2_refcount_lock_res_init(struct ocfs2_lock_res *lockres,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) 				  struct ocfs2_super *osb, u64 ref_blkno,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) 				  unsigned int generation);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) void ocfs2_lock_res_free(struct ocfs2_lock_res *res);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) int ocfs2_create_new_inode_locks(struct inode *inode);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) int ocfs2_drop_inode_locks(struct inode *inode);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128) int ocfs2_rw_lock(struct inode *inode, int write);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129) int ocfs2_try_rw_lock(struct inode *inode, int write);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) void ocfs2_rw_unlock(struct inode *inode, int write);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131) int ocfs2_open_lock(struct inode *inode);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) int ocfs2_try_open_lock(struct inode *inode, int write);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) void ocfs2_open_unlock(struct inode *inode);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134) int ocfs2_inode_lock_atime(struct inode *inode,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) 			  struct vfsmount *vfsmnt,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136) 			  int *level, int wait);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137) int ocfs2_inode_lock_full_nested(struct inode *inode,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138) 			 struct buffer_head **ret_bh,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139) 			 int ex,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140) 			 int arg_flags,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141) 			 int subclass);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142) int ocfs2_inode_lock_with_page(struct inode *inode,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143) 			      struct buffer_head **ret_bh,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144) 			      int ex,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145) 			      struct page *page);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146) /* Variants without special locking class or flags */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147) #define ocfs2_inode_lock_full(i, r, e, f)\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148) 		ocfs2_inode_lock_full_nested(i, r, e, f, OI_LS_NORMAL)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149) #define ocfs2_inode_lock_nested(i, b, e, s)\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 150) 		ocfs2_inode_lock_full_nested(i, b, e, 0, s)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 151) /* 99% of the time we don't want to supply any additional flags --
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 152)  * those are for very specific cases only. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153) #define ocfs2_inode_lock(i, b, e) ocfs2_inode_lock_full_nested(i, b, e, 0, OI_LS_NORMAL)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154) #define ocfs2_try_inode_lock(i, b, e)\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 155) 		ocfs2_inode_lock_full_nested(i, b, e, OCFS2_META_LOCK_NOQUEUE,\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 156) 		OI_LS_NORMAL)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 157) void ocfs2_inode_unlock(struct inode *inode,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 158) 		       int ex);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 159) int ocfs2_super_lock(struct ocfs2_super *osb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 160) 		     int ex);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 161) void ocfs2_super_unlock(struct ocfs2_super *osb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 162) 			int ex);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 163) int ocfs2_orphan_scan_lock(struct ocfs2_super *osb, u32 *seqno);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 164) void ocfs2_orphan_scan_unlock(struct ocfs2_super *osb, u32 seqno);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 165) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 166) int ocfs2_rename_lock(struct ocfs2_super *osb);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 167) void ocfs2_rename_unlock(struct ocfs2_super *osb);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 168) int ocfs2_nfs_sync_lock(struct ocfs2_super *osb, int ex);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 169) void ocfs2_nfs_sync_unlock(struct ocfs2_super *osb, int ex);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 170) void ocfs2_trim_fs_lock_res_init(struct ocfs2_super *osb);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 171) void ocfs2_trim_fs_lock_res_uninit(struct ocfs2_super *osb);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 172) int ocfs2_trim_fs_lock(struct ocfs2_super *osb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 173) 		       struct ocfs2_trim_fs_info *info, int trylock);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 174) void ocfs2_trim_fs_unlock(struct ocfs2_super *osb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 175) 			  struct ocfs2_trim_fs_info *info);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 176) int ocfs2_dentry_lock(struct dentry *dentry, int ex);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 177) void ocfs2_dentry_unlock(struct dentry *dentry, int ex);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 178) int ocfs2_file_lock(struct file *file, int ex, int trylock);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 179) void ocfs2_file_unlock(struct file *file);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 180) int ocfs2_qinfo_lock(struct ocfs2_mem_dqinfo *oinfo, int ex);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 181) void ocfs2_qinfo_unlock(struct ocfs2_mem_dqinfo *oinfo, int ex);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 182) struct ocfs2_refcount_tree;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 183) int ocfs2_refcount_lock(struct ocfs2_refcount_tree *ref_tree, int ex);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 184) void ocfs2_refcount_unlock(struct ocfs2_refcount_tree *ref_tree, int ex);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 185) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 186) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 187) void ocfs2_mark_lockres_freeing(struct ocfs2_super *osb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 188) 				struct ocfs2_lock_res *lockres);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 189) void ocfs2_simple_drop_lockres(struct ocfs2_super *osb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 190) 			       struct ocfs2_lock_res *lockres);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 191) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 192) /* for the downconvert thread */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 193) void ocfs2_wake_downconvert_thread(struct ocfs2_super *osb);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 194) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 195) struct ocfs2_dlm_debug *ocfs2_new_dlm_debug(void);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 196) void ocfs2_put_dlm_debug(struct ocfs2_dlm_debug *dlm_debug);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 197) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 198) /* To set the locking protocol on module initialization */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 199) void ocfs2_set_locking_protocol(void);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 200) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 201) /* The _tracker pair is used to avoid cluster recursive locking */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 202) int ocfs2_inode_lock_tracker(struct inode *inode,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 203) 			     struct buffer_head **ret_bh,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 204) 			     int ex,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 205) 			     struct ocfs2_lock_holder *oh);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 206) void ocfs2_inode_unlock_tracker(struct inode *inode,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 207) 				int ex,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 208) 				struct ocfs2_lock_holder *oh,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 209) 				int had_lock);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 210) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 211) #endif	/* DLMGLUE_H */