From d28a689f1340d880ebbbe41ca2cfa6887f18bc93 Mon Sep 17 00:00:00 2001 From: adilger Date: Fri, 23 Dec 2005 23:59:09 +0000 Subject: [PATCH] Branch b_release_1_4_6 Use (effectively) ptlrpc_daemonize() when starting the ping evictor thread, as this thread can do filesystem IO when evicting clients (update last_rcvd) and as a result trip LASSERT in pop_ctxt(). We can't call ptlrpc_daemonize() directly from code in obdclass as that results in module symbol circular dependencies. Looking into moving the pinger code into ptlrpc entirely to avoid this issue. b=9961 r=nathan --- lustre/obdclass/genops.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/lustre/obdclass/genops.c b/lustre/obdclass/genops.c index b55e0df..f35a03b 100644 --- a/lustre/obdclass/genops.c +++ b/lustre/obdclass/genops.c @@ -1013,7 +1013,15 @@ static int ping_evictor_main(void *arg) ENTRY; lock_kernel(); - libcfs_daemonize("ping_evictor"); + + /* ptlrpc_daemonize() */ + exit_mm(current); + lustre_daemonize_helper(); + set_fs_pwd(current->fs, init_task.fs->pwdmnt, init_task.fs->pwd); + exit_files(current); + reparent_to_init(); + THREAD_NAME(current->comm, sizeof(current->comm), "ping_evictor"); + SIGNAL_MASK_LOCK(current, flags); sigfillset(¤t->blocked); RECALC_SIGPENDING; -- 1.8.3.1