CDEBUG(D_VFSTRACE, "VFS Op:inode=%lu/%u(%p)\n", inode->i_ino,
inode->i_generation, inode);
-
if (inode->i_sb->s_root != file->f_dentry)
ll_stats_ops_tally(sbi, LPROC_LL_RELEASE, 1);
fd = LUSTRE_FPRIVATE(file);
lli->lli_async_rc = 0;
rc = ll_mdc_close(sbi->ll_mdc_exp, inode, file);
+
+ if (OBD_FAIL_TIMEOUT_MS(OBD_FAIL_PTLRPC_DUMP_LOG, obd_fail_val))
+ libcfs_debug_dumplog();
+
RETURN(rc);
}
down_read(&lli->lli_truncate_rwsem); /* Bug 18233 */
- ltd.lock_style = ll_file_get_lock(file, (obd_off)(*ppos), end,
- iov_copy, nrsegs_copy,
+ ltd.lock_style = ll_file_get_lock(file, (obd_off)(*ppos), end,
+ iov_copy, nrsegs_copy,
<d.u.lockh, <d.u.tree,
OBD_BRW_READ);
if (ltd.lock_style < 0 || ltd.lock_style == LL_LOCK_STYLE_NOLOCK)
(((size - 1) >> CFS_PAGE_SHIFT) < cur_index)) {
if (ltd.lock_style != LL_LOCK_STYLE_NOLOCK) {
- ll_file_put_lock(inode, end,
+ ll_file_put_lock(inode, end,
ltd.lock_style,
- <d.u.lockh,
+ <d.u.lockh,
<d.u.tree,
OBD_BRW_READ);
up_read(&lli->lli_truncate_rwsem);
* ll_glimpse_size) could get correct values in lsm */
OBD_ALLOC_PTR(xtimes);
if (NULL == xtimes) {
- ll_file_put_lock(inode, end, ltd.lock_style,
+ ll_file_put_lock(inode, end, ltd.lock_style,
<d.u.lockh, <d.u.tree,
OBD_BRW_READ);
up_read(&lli->lli_truncate_rwsem);
}
run_test 170 "test lctl df to handle corrupted log ====================="
+test_171() { # bug20592
+#define OBD_FAIL_PTLRPC_DUMP_LOG 0x50e
+ $LCTL set_param fail_loc=0x50e
+ $LCTL set_param fail_val=3000
+ multiop_bg_pause $DIR/$tfile Os || true
+ # cause log dump
+ sleep 3
+ if dmesg | grep "recursive fault"; then
+ error "caught a recursive fault"
+ fi
+ $LCTL set_param fail_loc=0
+ true
+}
+run_test 171 "test libcfs_debug_dumplog_thread stuck in do_exit() ======"
+
obdecho_create_test() {
local OBD=$1
local node=$2