18c2ecf20Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0
28c2ecf20Sopenharmony_ci#include <linux/kernel.h>
38c2ecf20Sopenharmony_ci#include "ubifs.h"
48c2ecf20Sopenharmony_ci
58c2ecf20Sopenharmony_ci/* Normal UBIFS messages */
68c2ecf20Sopenharmony_civoid ubifs_msg(const struct ubifs_info *c, const char *fmt, ...)
78c2ecf20Sopenharmony_ci{
88c2ecf20Sopenharmony_ci	struct va_format vaf;
98c2ecf20Sopenharmony_ci	va_list args;
108c2ecf20Sopenharmony_ci
118c2ecf20Sopenharmony_ci	va_start(args, fmt);
128c2ecf20Sopenharmony_ci
138c2ecf20Sopenharmony_ci	vaf.fmt = fmt;
148c2ecf20Sopenharmony_ci	vaf.va = &args;
158c2ecf20Sopenharmony_ci
168c2ecf20Sopenharmony_ci	pr_notice("UBIFS (ubi%d:%d): %pV\n",
178c2ecf20Sopenharmony_ci		  c->vi.ubi_num, c->vi.vol_id, &vaf);
188c2ecf20Sopenharmony_ci
198c2ecf20Sopenharmony_ci	va_end(args);
208c2ecf20Sopenharmony_ci}								    \
218c2ecf20Sopenharmony_ci
228c2ecf20Sopenharmony_ci/* UBIFS error messages */
238c2ecf20Sopenharmony_civoid ubifs_err(const struct ubifs_info *c, const char *fmt, ...)
248c2ecf20Sopenharmony_ci{
258c2ecf20Sopenharmony_ci	struct va_format vaf;
268c2ecf20Sopenharmony_ci	va_list args;
278c2ecf20Sopenharmony_ci
288c2ecf20Sopenharmony_ci	va_start(args, fmt);
298c2ecf20Sopenharmony_ci
308c2ecf20Sopenharmony_ci	vaf.fmt = fmt;
318c2ecf20Sopenharmony_ci	vaf.va = &args;
328c2ecf20Sopenharmony_ci
338c2ecf20Sopenharmony_ci	pr_err("UBIFS error (ubi%d:%d pid %d): %ps: %pV\n",
348c2ecf20Sopenharmony_ci	       c->vi.ubi_num, c->vi.vol_id, current->pid,
358c2ecf20Sopenharmony_ci	       __builtin_return_address(0),
368c2ecf20Sopenharmony_ci	       &vaf);
378c2ecf20Sopenharmony_ci
388c2ecf20Sopenharmony_ci	va_end(args);
398c2ecf20Sopenharmony_ci}								    \
408c2ecf20Sopenharmony_ci
418c2ecf20Sopenharmony_ci/* UBIFS warning messages */
428c2ecf20Sopenharmony_civoid ubifs_warn(const struct ubifs_info *c, const char *fmt, ...)
438c2ecf20Sopenharmony_ci{
448c2ecf20Sopenharmony_ci	struct va_format vaf;
458c2ecf20Sopenharmony_ci	va_list args;
468c2ecf20Sopenharmony_ci
478c2ecf20Sopenharmony_ci	va_start(args, fmt);
488c2ecf20Sopenharmony_ci
498c2ecf20Sopenharmony_ci	vaf.fmt = fmt;
508c2ecf20Sopenharmony_ci	vaf.va = &args;
518c2ecf20Sopenharmony_ci
528c2ecf20Sopenharmony_ci	pr_warn("UBIFS warning (ubi%d:%d pid %d): %ps: %pV\n",
538c2ecf20Sopenharmony_ci		c->vi.ubi_num, c->vi.vol_id, current->pid,
548c2ecf20Sopenharmony_ci		__builtin_return_address(0),
558c2ecf20Sopenharmony_ci		&vaf);
568c2ecf20Sopenharmony_ci
578c2ecf20Sopenharmony_ci	va_end(args);
588c2ecf20Sopenharmony_ci}
598c2ecf20Sopenharmony_ci
608c2ecf20Sopenharmony_cistatic char *assert_names[] = {
618c2ecf20Sopenharmony_ci	[ASSACT_REPORT] = "report",
628c2ecf20Sopenharmony_ci	[ASSACT_RO] = "read-only",
638c2ecf20Sopenharmony_ci	[ASSACT_PANIC] = "panic",
648c2ecf20Sopenharmony_ci};
658c2ecf20Sopenharmony_ci
668c2ecf20Sopenharmony_ciconst char *ubifs_assert_action_name(struct ubifs_info *c)
678c2ecf20Sopenharmony_ci{
688c2ecf20Sopenharmony_ci	return assert_names[c->assert_action];
698c2ecf20Sopenharmony_ci}
70