Whamcloud - gitweb
LU-16695 llite: switch to ki_flags from f_flags
[fs/lustre-release.git] / lustre / llite / vvp_io.c
index 4b27dec..8e659bf 100644 (file)
@@ -569,12 +569,16 @@ static int vvp_io_rw_lock(const struct lu_env *env, struct cl_io *io,
        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;
        }
@@ -834,6 +838,7 @@ static int vvp_io_read_start(const struct lu_env *env,
        int total_bytes_read = 0;
        struct iov_iter iter;
        pgoff_t page_offset;
+       int flags;
 
        ENTRY;
 
@@ -853,7 +858,8 @@ static int vvp_io_read_start(const struct lu_env *env,
        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);
@@ -1275,6 +1281,7 @@ static int vvp_io_write_start(const struct lu_env *env,
        size_t ci_bytes = io->ci_bytes;
        struct iov_iter iter;
        size_t written = 0;
+       int flags;
 
        ENTRY;
 
@@ -1321,7 +1328,8 @@ static int vvp_io_write_start(const struct lu_env *env,
        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);