if (io->ci_lock_no_expand)
ast_flags |= CEF_LOCK_NO_EXPAND;
if (vio->vui_fd) {
+ int flags;
+
/* Group lock held means no lockless any more */
if (vio->vui_fd->fd_flags & LL_FILE_GROUP_LOCKED)
io->ci_dio_lock = 1;
+ flags = iocb_ki_flags_get(vio->vui_iocb->ki_filp,
+ vio->vui_iocb);
if (ll_file_nolock(vio->vui_fd->fd_file) ||
- (vio->vui_fd->fd_file->f_flags & O_DIRECT &&
+ (iocb_ki_flags_check(flags, DIRECT) &&
!io->ci_dio_lock))
ast_flags |= CEF_NEVER;
}
int total_bytes_read = 0;
struct iov_iter iter;
pgoff_t page_offset;
+ int flags;
ENTRY;
if (!can_populate_pages(env, io, inode))
RETURN(0);
- if (!(file->f_flags & O_DIRECT)) {
+ flags = iocb_ki_flags_get(file, vio->vui_iocb);
+ if (!iocb_ki_flags_check(flags, DIRECT)) {
result = cl_io_lru_reserve(env, io, pos, crw_bytes);
if (result)
RETURN(result);
size_t ci_bytes = io->ci_bytes;
struct iov_iter iter;
size_t written = 0;
+ int flags;
ENTRY;
if (CFS_FAIL_CHECK(OBD_FAIL_LLITE_IMUTEX_NOSEC) && lock_inode)
RETURN(-EINVAL);
- if (!(file->f_flags & O_DIRECT)) {
+ flags = iocb_ki_flags_get(file, vio->vui_iocb);
+ if (!iocb_ki_flags_check(flags, DIRECT)) {
result = cl_io_lru_reserve(env, io, pos, crw_bytes);
if (result)
RETURN(result);