| // 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]; |
| } |