inode_double_lock.h

来自「ocfs1.4.1 oracle分布式文件系统」· C头文件 代码 · 共 35 行

H
35
字号
#ifndef KAPI_INODE_DOUBLE_LOCK_H#define KAPI_INODE_DOUBLE_LOCK_H#ifdef NO_INODE_DOUBLE_LOCKstatic inline void inode_double_lock(struct inode *inode1, struct inode *inode2){	if (inode1 == NULL || inode2 == NULL || inode1 == inode2) {		if (inode1)			mutex_lock(&inode1->i_mutex);		else if (inode2)			mutex_lock(&inode2->i_mutex);		return;	}	if (inode1 < inode2) {		mutex_lock_nested(&inode1->i_mutex, I_MUTEX_PARENT);		mutex_lock_nested(&inode2->i_mutex, I_MUTEX_CHILD);	} else {		mutex_lock_nested(&inode2->i_mutex, I_MUTEX_PARENT);		mutex_lock_nested(&inode1->i_mutex, I_MUTEX_CHILD);	}}static inline void inode_double_unlock(struct inode *inode1, struct inode *inode2){	if (inode1)		mutex_unlock(&inode1->i_mutex);	if (inode2 && inode2 != inode1)		mutex_unlock(&inode2->i_mutex);}#endif#endif

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?