X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=blobdiff_plain;f=lustre%2Fllite%2Fvvp_io.c;h=ac3965f96930c5994be8ddca68d2cf2a5250679e;hp=97366bbe8010c22b5c85714222f829adfc8d0a55;hb=6bce536725efd166d2772f13fe954f271f9c53b8;hpb=361e9eaef13c0f472ad45388d3e147dabc32b737 diff --git a/lustre/llite/vvp_io.c b/lustre/llite/vvp_io.c index 97366bb..ac3965f 100644 --- a/lustre/llite/vvp_io.c +++ b/lustre/llite/vvp_io.c @@ -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; + 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)