Whamcloud - gitweb
LU-4198 clio: turn on lockless for some kind of IO
[fs/lustre-release.git] / lustre / llite / vvp_io.c
index 97366bb..ac3965f 100644 (file)
@@ -568,6 +568,16 @@ static int vvp_io_rw_lock(const struct lu_env *env, struct cl_io *io,
                ast_flags |= CEF_NONBLOCK;
        if (io->ci_lock_no_expand)
                ast_flags |= CEF_LOCK_NO_EXPAND;
                ast_flags |= CEF_NONBLOCK;
        if (io->ci_lock_no_expand)
                ast_flags |= CEF_LOCK_NO_EXPAND;
+       if (vio->vui_fd) {
+               /* Group lock held means no lockless any more */
+               if (vio->vui_fd->fd_flags & LL_FILE_GROUP_LOCKED)
+                       io->ci_ignore_lockless = 1;
+
+               if (ll_file_nolock(vio->vui_fd->fd_file) ||
+                   (vio->vui_fd->fd_flags & LL_FILE_LOCKLESS_IO &&
+                    !io->ci_ignore_lockless))
+                       ast_flags |= CEF_NEVER;
+       }
 
        result = vvp_mmap_locks(env, vio, io);
        if (result == 0)
 
        result = vvp_mmap_locks(env, vio, io);
        if (result == 0)