| // SPDX-License-Identifier: GPL-2.0 | 
 | #include <linux/kernel.h> | 
 | #include "ubifs.h" | 
 |  | 
 | /* Normal UBIFS messages */ | 
 | void ubifs_msg(const struct ubifs_info *c, const char *fmt, ...) | 
 | { | 
 | 	struct va_format vaf; | 
 | 	va_list args; | 
 |  | 
 | 	va_start(args, fmt); | 
 |  | 
 | 	vaf.fmt = fmt; | 
 | 	vaf.va = &args; | 
 |  | 
 | 	pr_notice("UBIFS (ubi%d:%d): %pV\n", | 
 | 		  c->vi.ubi_num, c->vi.vol_id, &vaf); | 
 |  | 
 | 	va_end(args); | 
 | }								    \ | 
 |  | 
 | /* UBIFS error messages */ | 
 | void ubifs_err(const struct ubifs_info *c, const char *fmt, ...) | 
 | { | 
 | 	struct va_format vaf; | 
 | 	va_list args; | 
 |  | 
 | 	va_start(args, fmt); | 
 |  | 
 | 	vaf.fmt = fmt; | 
 | 	vaf.va = &args; | 
 |  | 
 | 	pr_err("UBIFS error (ubi%d:%d pid %d): %ps: %pV\n", | 
 | 	       c->vi.ubi_num, c->vi.vol_id, current->pid, | 
 | 	       __builtin_return_address(0), | 
 | 	       &vaf); | 
 |  | 
 | 	va_end(args); | 
 | }								    \ | 
 |  | 
 | /* UBIFS warning messages */ | 
 | void ubifs_warn(const struct ubifs_info *c, const char *fmt, ...) | 
 | { | 
 | 	struct va_format vaf; | 
 | 	va_list args; | 
 |  | 
 | 	va_start(args, fmt); | 
 |  | 
 | 	vaf.fmt = fmt; | 
 | 	vaf.va = &args; | 
 |  | 
 | 	pr_warn("UBIFS warning (ubi%d:%d pid %d): %ps: %pV\n", | 
 | 		c->vi.ubi_num, c->vi.vol_id, current->pid, | 
 | 		__builtin_return_address(0), | 
 | 		&vaf); | 
 |  | 
 | 	va_end(args); | 
 | } | 
 |  | 
 | static char *assert_names[] = { | 
 | 	[ASSACT_REPORT] = "report", | 
 | 	[ASSACT_RO] = "read-only", | 
 | 	[ASSACT_PANIC] = "panic", | 
 | }; | 
 |  | 
 | const char *ubifs_assert_action_name(struct ubifs_info *c) | 
 | { | 
 | 	return assert_names[c->assert_action]; | 
 | } |