infra: disable say_logging by default

This commit is contained in:
Thomas Schoebel-Theuer 2020-03-07 19:49:18 +01:00
parent bef8f30ab1
commit 11358d0279
3 changed files with 47 additions and 12 deletions

View File

@ -160,7 +160,7 @@ struct say_channel *find_channel(const void *id)
struct say_channel *res = default_channel;
struct say_channel *ch;
if (cannot_schedule())
if (!default_channel || cannot_schedule())
return res;
down_read(&say_mutex);
@ -197,7 +197,7 @@ void bind_to_channel(struct say_channel *ch, struct task_struct *whom)
{
int i;
if (cannot_schedule())
if (!default_channel || !ch || cannot_schedule())
return;
down_write(&say_mutex);
@ -230,7 +230,7 @@ struct say_channel *get_binding(struct task_struct *whom)
struct say_channel *ch;
int i;
if (cannot_schedule())
if (!default_channel || cannot_schedule())
return NULL;
down_read(&say_mutex);
@ -253,7 +253,7 @@ void remove_binding_from(struct say_channel *ch, struct task_struct *whom)
bool found = false;
int i;
if (cannot_schedule())
if (!default_channel || !ch || cannot_schedule())
return;
down_write(&say_mutex);
@ -273,7 +273,7 @@ EXPORT_SYMBOL_GPL(remove_binding_from);
void remove_binding(struct task_struct *whom)
{
if (cannot_schedule())
if (!default_channel || cannot_schedule())
return;
down_write(&say_mutex);
@ -284,6 +284,9 @@ EXPORT_SYMBOL_GPL(remove_binding);
void rollover_channel(struct say_channel *ch)
{
if (!default_channel || cannot_schedule())
return;
if (!ch) {
ch = find_channel(current);
}
@ -296,7 +299,7 @@ void rollover_all(void)
{
struct say_channel *ch;
if (cannot_schedule())
if (!default_channel || cannot_schedule())
return;
down_read(&say_mutex);
@ -428,6 +431,9 @@ struct say_channel *make_channel(const char *name, bool must_exist)
struct say_channel *res = NULL;
struct say_channel *ch;
if (must_exist && !default_channel)
return NULL;
if (cannot_schedule()) {
printk(KERN_ERR "trying to make channel in atomic\n");
return NULL;
@ -480,6 +486,9 @@ void _say(struct say_channel *ch, int class, va_list args, bool use_args, const
int rest;
int written;
if (!default_channel)
return;
if (unlikely(!ch))
return;
if (unlikely(ch->ch_delete && ch != default_channel)) {
@ -520,6 +529,9 @@ void say_to(struct say_channel *ch, int class, const char *fmt, ...)
va_list args;
unsigned long flags;
if (!default_channel)
return;
if (!class && !brick_say_debug)
return;
@ -569,6 +581,9 @@ void brick_say_to(struct say_channel *ch, int class, bool dump, const char *pref
va_list args;
unsigned long flags;
if (!default_channel)
return;
if (!class && !brick_say_debug)
return;
@ -884,8 +899,16 @@ int _say_thread(void *data)
void init_say(void)
{
default_channel = make_channel(CONFIG_MARS_LOGDIR, true);
say_thread = kthread_create(_say_thread, NULL, "brick_say");
/* Only initialize once */
if (default_channel)
return;
default_channel = make_channel(CONFIG_MARS_LOGDIR, false);
if (!default_channel)
return;
if (!say_thread)
say_thread = kthread_create(_say_thread, NULL, "brick_say");
if (IS_ERR(say_thread)) {
say_thread = NULL;
} else {

View File

@ -3334,7 +3334,7 @@ int make_log_init(void *buf, struct mars_dent *dent)
if (unlikely(!rot->log_say)) {
char *name = path_make("%s/logstatus-%s", parent_path, my_id());
if (likely(name)) {
rot->log_say = make_channel(name, false);
rot->log_say = make_channel(name, true);
brick_string_free(name);
}
}
@ -6250,6 +6250,8 @@ static int main_worker(struct mars_global *global, struct mars_dent *dent, bool
return 0;
}
#define SAY_TEST_STR CONFIG_MARS_LOGDIR "/5.total.log"
static int _main_thread(void *data)
{
long long last_rollover = jiffies;
@ -6276,11 +6278,17 @@ static int _main_thread(void *data)
(void *)&bio_brick_type,
NULL
};
struct kstat dummy;
int say_status;
struct list_head *tmp;
int trigger_mode;
int status;
loff_t memlimit;
say_status = mars_stat(SAY_TEST_STR, &dummy, true);
if (!say_status)
init_say();
MARS_DBG("-------- NEW ROUND %d ---------\n", atomic_read(&server_handler_count));
/* Static memlimit */
@ -6528,6 +6536,11 @@ static int __init init_main(void)
return -ENOENT;
}
/* This must come first to be effective */
status = mars_stat(SAY_TEST_STR, &dummy, true);
if (!status)
init_say();
#ifdef MARS_HAS_PREPATCH
// bump the min_free limit
if (min_free_kbytes < new_limit)
@ -6536,8 +6549,6 @@ static int __init init_main(void)
printk(KERN_INFO "loading MARS, BUILDTAG=%s BUILDHOST=%s BUILDDATE=%s\n", BUILDTAG, BUILDHOST, BUILDDATE);
init_say(); // this must come first
/* be careful: order is important!
*/
DO_INIT(brick_mem);

View File

@ -1058,7 +1058,8 @@ void bind_to_dent(struct mars_dent *dent, struct say_channel **ch)
break;
}
if (test->d_use_channel && test->d_path) {
dent->d_say_channel = make_channel(test->d_path, true);
dent->d_say_channel = make_channel(test->d_path,
true);
break;
}
test = test->d_parent;