|
@@ -2026,7 +2026,7 @@ static ssize_t ocfs2_file_splice_read(struct file *in,
|
|
|
size_t len,
|
|
|
unsigned int flags)
|
|
|
{
|
|
|
- int ret = 0;
|
|
|
+ int ret = 0, lock_level = 0;
|
|
|
struct inode *inode = in->f_path.dentry->d_inode;
|
|
|
|
|
|
mlog_entry("(0x%p, 0x%p, %u, '%.*s')\n", in, pipe,
|
|
@@ -2037,12 +2037,12 @@ static ssize_t ocfs2_file_splice_read(struct file *in,
|
|
|
/*
|
|
|
* See the comment in ocfs2_file_aio_read()
|
|
|
*/
|
|
|
- ret = ocfs2_inode_lock(inode, NULL, 0);
|
|
|
+ ret = ocfs2_inode_lock_atime(inode, in->f_vfsmnt, &lock_level);
|
|
|
if (ret < 0) {
|
|
|
mlog_errno(ret);
|
|
|
goto bail;
|
|
|
}
|
|
|
- ocfs2_inode_unlock(inode, 0);
|
|
|
+ ocfs2_inode_unlock(inode, lock_level);
|
|
|
|
|
|
ret = generic_file_splice_read(in, ppos, pipe, len, flags);
|
|
|
|