X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Fllite%2Fglimpse.c;h=2a677a4e6264b07389cd6fb77ef7fe501b083ce6;hb=HEAD;hp=d0bb414818b7a6b2dfc54164cadef5022486a94b;hpb=6d47f2b35118a75f65a5557a27eaade99d135f1b;p=fs%2Flustre-release.git diff --git a/lustre/llite/glimpse.c b/lustre/llite/glimpse.c index d0bb414..275bf99 100644 --- a/lustre/llite/glimpse.c +++ b/lustre/llite/glimpse.c @@ -27,7 +27,6 @@ */ /* * This file is part of Lustre, http://www.lustre.org/ - * Lustre is a trademark of Sun Microsystems, Inc. * * glimpse code used by vvp (and other Lustre clients in the future). * @@ -102,7 +101,8 @@ int cl_glimpse_lock(const struct lu_env *env, struct cl_io *io, * if there were no conflicting locks. If there * were conflicting locks, enqueuing or waiting * fails with -ENAVAIL, but valid inode - * attributes are returned anyway. */ + * attributes are returned anyway. + */ *descr = whole_file; descr->cld_obj = clob; descr->cld_mode = CLM_READ; @@ -211,11 +211,16 @@ int cl_glimpse_size0(struct inode *inode, int agl) } else if (result == 0) { result = cl_glimpse_lock(env, io, inode, io->ci_obj, agl); - if (!agl && result == -EWOULDBLOCK) + /** + * need to limit retries for FLR mirrors if fast read + * is short because of concurrent truncate. + */ + if (!agl && result == -EAGAIN && + !io->ci_tried_all_mirrors) io->ci_need_restart = 1; } - OBD_FAIL_TIMEOUT(OBD_FAIL_GLIMPSE_DELAY, 2); + CFS_FAIL_TIMEOUT(OBD_FAIL_GLIMPSE_DELAY, cfs_fail_val ?: 4); cl_io_fini(env, io); } while (unlikely(io->ci_need_restart));