* Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
* Use is subject to license terms.
*
- * Copyright (c) 2011, 2012, Whamcloud, Inc.
+ * Copyright (c) 2011, 2012, Intel Corporation.
*/
/*
* This file is part of Lustre, http://www.lustre.org/
cl_lock_release(env, lock, "glimpse", cfs_current());
} else {
CDEBUG(D_DLMTRACE, "No objects for inode\n");
+ cl_merge_lvb(inode);
}
}
result = cl_io_get(inode, &env, &io, &refcheck);
if (result > 0) {
+ again:
+ io->ci_verify_layout = 1;
result = cl_io_init(env, io, CIT_MISC, io->ci_obj);
if (result > 0)
/*
else if (result == 0)
result = cl_glimpse_lock(env, io, inode, io->ci_obj,
agl);
+
+ OBD_FAIL_TIMEOUT(OBD_FAIL_GLIMPSE_DELAY, 2);
cl_io_fini(env, io);
- cl_env_put(env, &refcheck);
- }
- RETURN(result);
+ if (unlikely(io->ci_need_restart))
+ goto again;
+ cl_env_put(env, &refcheck);
+ }
+ RETURN(result);
}
int cl_local_size(struct inode *inode)