You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
ocfs2_dlmfs: User DLM_* when decoding file open flags.
In commit 0016eedc41, we have
changed dlmfs to use stackglue. So when use DLM* when we
decode dlm flags from open level.
Signed-off-by: Tao Ma <tao.ma@oracle.com>
Signed-off-by: Joel Becker <joel.becker@oracle.com>
This commit is contained in:
@@ -112,20 +112,20 @@ MODULE_PARM_DESC(capabilities, DLMFS_CAPABILITIES);
|
|||||||
* O_RDONLY -> PRMODE level
|
* O_RDONLY -> PRMODE level
|
||||||
* O_WRONLY -> EXMODE level
|
* O_WRONLY -> EXMODE level
|
||||||
*
|
*
|
||||||
* O_NONBLOCK -> LKM_NOQUEUE
|
* O_NONBLOCK -> NOQUEUE
|
||||||
*/
|
*/
|
||||||
static int dlmfs_decode_open_flags(int open_flags,
|
static int dlmfs_decode_open_flags(int open_flags,
|
||||||
int *level,
|
int *level,
|
||||||
int *flags)
|
int *flags)
|
||||||
{
|
{
|
||||||
if (open_flags & (O_WRONLY|O_RDWR))
|
if (open_flags & (O_WRONLY|O_RDWR))
|
||||||
*level = LKM_EXMODE;
|
*level = DLM_LOCK_EX;
|
||||||
else
|
else
|
||||||
*level = LKM_PRMODE;
|
*level = DLM_LOCK_PR;
|
||||||
|
|
||||||
*flags = 0;
|
*flags = 0;
|
||||||
if (open_flags & O_NONBLOCK)
|
if (open_flags & O_NONBLOCK)
|
||||||
*flags |= LKM_NOQUEUE;
|
*flags |= DLM_LKF_NOQUEUE;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -166,7 +166,7 @@ static int dlmfs_file_open(struct inode *inode,
|
|||||||
* to be able userspace to be able to distinguish a
|
* to be able userspace to be able to distinguish a
|
||||||
* valid lock request from one that simply couldn't be
|
* valid lock request from one that simply couldn't be
|
||||||
* granted. */
|
* granted. */
|
||||||
if (flags & LKM_NOQUEUE && status == -EAGAIN)
|
if (flags & DLM_LKF_NOQUEUE && status == -EAGAIN)
|
||||||
status = -ETXTBSY;
|
status = -ETXTBSY;
|
||||||
kfree(fp);
|
kfree(fp);
|
||||||
goto bail;
|
goto bail;
|
||||||
@@ -193,7 +193,7 @@ static int dlmfs_file_release(struct inode *inode,
|
|||||||
status = 0;
|
status = 0;
|
||||||
if (fp) {
|
if (fp) {
|
||||||
level = fp->fp_lock_level;
|
level = fp->fp_lock_level;
|
||||||
if (level != LKM_IVMODE)
|
if (level != DLM_LOCK_IV)
|
||||||
user_dlm_cluster_unlock(&ip->ip_lockres, level);
|
user_dlm_cluster_unlock(&ip->ip_lockres, level);
|
||||||
|
|
||||||
kfree(fp);
|
kfree(fp);
|
||||||
|
|||||||
Reference in New Issue
Block a user