ubifs: Allow to silence debug dumps

Debug dump logs are not always required. Add a new config option
UBIFS_SILENCE_DEBUG_DUMP to silence all debug dumps. On powerpc/mpc85xx
when enabled this will decrease size of U-Boot binary by 11 kB.

Signed-off-by: Pali Rohár <pali@kernel.org>
Tested-by: Tony Dinh <mibodhi@gmail.com>
This commit is contained in:
Pali Rohár 2022-08-07 21:27:09 +02:00 committed by Tom Rini
parent d5d9f32579
commit 6b752c729e
2 changed files with 36 additions and 0 deletions

View File

@ -4,3 +4,11 @@ config UBIFS_SILENCE_MSG
help help
Make the verbose messages from UBIFS stop printing. This leaves Make the verbose messages from UBIFS stop printing. This leaves
warnings and errors enabled. warnings and errors enabled.
config UBIFS_SILENCE_DEBUG_DUMP
bool "UBIFS silence debug dumps"
default y if UBIFS_SILENCE_MSG
default n
help
Make the debug dumps from UBIFS stop printing.
This decreases size of U-Boot binary.

View File

@ -35,6 +35,7 @@
static DEFINE_SPINLOCK(dbg_lock); static DEFINE_SPINLOCK(dbg_lock);
#endif #endif
#ifndef CONFIG_UBIFS_SILENCE_DEBUG_DUMP
static const char *get_key_fmt(int fmt) static const char *get_key_fmt(int fmt)
{ {
switch (fmt) { switch (fmt) {
@ -230,6 +231,7 @@ static void dump_ch(const struct ubifs_ch *ch)
(unsigned long long)le64_to_cpu(ch->sqnum)); (unsigned long long)le64_to_cpu(ch->sqnum));
pr_err("\tlen %u\n", le32_to_cpu(ch->len)); pr_err("\tlen %u\n", le32_to_cpu(ch->len));
} }
#endif
void ubifs_dump_inode(struct ubifs_info *c, const struct inode *inode) void ubifs_dump_inode(struct ubifs_info *c, const struct inode *inode)
{ {
@ -303,6 +305,7 @@ void ubifs_dump_inode(struct ubifs_info *c, const struct inode *inode)
void ubifs_dump_node(const struct ubifs_info *c, const void *node) void ubifs_dump_node(const struct ubifs_info *c, const void *node)
{ {
#ifndef CONFIG_UBIFS_SILENCE_DEBUG_DUMP
int i, n; int i, n;
union ubifs_key key; union ubifs_key key;
const struct ubifs_ch *ch = node; const struct ubifs_ch *ch = node;
@ -546,10 +549,12 @@ void ubifs_dump_node(const struct ubifs_info *c, const void *node)
(int)ch->node_type); (int)ch->node_type);
} }
spin_unlock(&dbg_lock); spin_unlock(&dbg_lock);
#endif
} }
void ubifs_dump_budget_req(const struct ubifs_budget_req *req) void ubifs_dump_budget_req(const struct ubifs_budget_req *req)
{ {
#ifndef CONFIG_UBIFS_SILENCE_DEBUG_DUMP
spin_lock(&dbg_lock); spin_lock(&dbg_lock);
pr_err("Budgeting request: new_ino %d, dirtied_ino %d\n", pr_err("Budgeting request: new_ino %d, dirtied_ino %d\n",
req->new_ino, req->dirtied_ino); req->new_ino, req->dirtied_ino);
@ -563,10 +568,12 @@ void ubifs_dump_budget_req(const struct ubifs_budget_req *req)
pr_err("\tdata_growth %d dd_growth %d\n", pr_err("\tdata_growth %d dd_growth %d\n",
req->data_growth, req->dd_growth); req->data_growth, req->dd_growth);
spin_unlock(&dbg_lock); spin_unlock(&dbg_lock);
#endif
} }
void ubifs_dump_lstats(const struct ubifs_lp_stats *lst) void ubifs_dump_lstats(const struct ubifs_lp_stats *lst)
{ {
#ifndef CONFIG_UBIFS_SILENCE_DEBUG_DUMP
spin_lock(&dbg_lock); spin_lock(&dbg_lock);
pr_err("(pid %d) Lprops statistics: empty_lebs %d, idx_lebs %d\n", pr_err("(pid %d) Lprops statistics: empty_lebs %d, idx_lebs %d\n",
current->pid, lst->empty_lebs, lst->idx_lebs); current->pid, lst->empty_lebs, lst->idx_lebs);
@ -575,6 +582,7 @@ void ubifs_dump_lstats(const struct ubifs_lp_stats *lst)
pr_err("\ttotal_used %lld, total_dark %lld, total_dead %lld\n", pr_err("\ttotal_used %lld, total_dark %lld, total_dead %lld\n",
lst->total_used, lst->total_dark, lst->total_dead); lst->total_used, lst->total_dark, lst->total_dead);
spin_unlock(&dbg_lock); spin_unlock(&dbg_lock);
#endif
} }
#ifndef __UBOOT__ #ifndef __UBOOT__
@ -653,6 +661,7 @@ void ubifs_dump_budg(struct ubifs_info *c, const struct ubifs_budg_info *bi)
void ubifs_dump_lprop(const struct ubifs_info *c, const struct ubifs_lprops *lp) void ubifs_dump_lprop(const struct ubifs_info *c, const struct ubifs_lprops *lp)
{ {
#ifndef CONFIG_UBIFS_SILENCE_DEBUG_DUMP
int i, spc, dark = 0, dead = 0; int i, spc, dark = 0, dead = 0;
struct rb_node *rb; struct rb_node *rb;
struct ubifs_bud *bud; struct ubifs_bud *bud;
@ -740,6 +749,7 @@ void ubifs_dump_lprop(const struct ubifs_info *c, const struct ubifs_lprops *lp)
if (lp->lnum == c->gc_lnum) if (lp->lnum == c->gc_lnum)
pr_cont(", GC LEB"); pr_cont(", GC LEB");
pr_cont(")\n"); pr_cont(")\n");
#endif
} }
void ubifs_dump_lprops(struct ubifs_info *c) void ubifs_dump_lprops(struct ubifs_info *c)
@ -766,6 +776,7 @@ void ubifs_dump_lprops(struct ubifs_info *c)
void ubifs_dump_lpt_info(struct ubifs_info *c) void ubifs_dump_lpt_info(struct ubifs_info *c)
{ {
#ifndef CONFIG_UBIFS_SILENCE_DEBUG_DUMP
int i; int i;
spin_lock(&dbg_lock); spin_lock(&dbg_lock);
@ -800,11 +811,13 @@ void ubifs_dump_lpt_info(struct ubifs_info *c)
i + c->lpt_first, c->ltab[i].free, c->ltab[i].dirty, i + c->lpt_first, c->ltab[i].free, c->ltab[i].dirty,
c->ltab[i].tgc, c->ltab[i].cmt); c->ltab[i].tgc, c->ltab[i].cmt);
spin_unlock(&dbg_lock); spin_unlock(&dbg_lock);
#endif
} }
void ubifs_dump_sleb(const struct ubifs_info *c, void ubifs_dump_sleb(const struct ubifs_info *c,
const struct ubifs_scan_leb *sleb, int offs) const struct ubifs_scan_leb *sleb, int offs)
{ {
#ifndef CONFIG_UBIFS_SILENCE_DEBUG_DUMP
struct ubifs_scan_node *snod; struct ubifs_scan_node *snod;
pr_err("(pid %d) start dumping scanned data from LEB %d:%d\n", pr_err("(pid %d) start dumping scanned data from LEB %d:%d\n",
@ -816,10 +829,12 @@ void ubifs_dump_sleb(const struct ubifs_info *c,
sleb->lnum, snod->offs, snod->len); sleb->lnum, snod->offs, snod->len);
ubifs_dump_node(c, snod->node); ubifs_dump_node(c, snod->node);
} }
#endif
} }
void ubifs_dump_leb(const struct ubifs_info *c, int lnum) void ubifs_dump_leb(const struct ubifs_info *c, int lnum)
{ {
#ifndef CONFIG_UBIFS_SILENCE_DEBUG_DUMP
struct ubifs_scan_leb *sleb; struct ubifs_scan_leb *sleb;
struct ubifs_scan_node *snod; struct ubifs_scan_node *snod;
void *buf; void *buf;
@ -854,11 +869,13 @@ void ubifs_dump_leb(const struct ubifs_info *c, int lnum)
out: out:
vfree(buf); vfree(buf);
return; return;
#endif
} }
void ubifs_dump_znode(const struct ubifs_info *c, void ubifs_dump_znode(const struct ubifs_info *c,
const struct ubifs_znode *znode) const struct ubifs_znode *znode)
{ {
#ifndef CONFIG_UBIFS_SILENCE_DEBUG_DUMP
int n; int n;
const struct ubifs_zbranch *zbr; const struct ubifs_zbranch *zbr;
char key_buf[DBG_KEY_BUF_LEN]; char key_buf[DBG_KEY_BUF_LEN];
@ -893,10 +910,12 @@ void ubifs_dump_znode(const struct ubifs_info *c,
DBG_KEY_BUF_LEN)); DBG_KEY_BUF_LEN));
} }
spin_unlock(&dbg_lock); spin_unlock(&dbg_lock);
#endif
} }
void ubifs_dump_heap(struct ubifs_info *c, struct ubifs_lpt_heap *heap, int cat) void ubifs_dump_heap(struct ubifs_info *c, struct ubifs_lpt_heap *heap, int cat)
{ {
#ifndef CONFIG_UBIFS_SILENCE_DEBUG_DUMP
int i; int i;
pr_err("(pid %d) start dumping heap cat %d (%d elements)\n", pr_err("(pid %d) start dumping heap cat %d (%d elements)\n",
@ -909,11 +928,13 @@ void ubifs_dump_heap(struct ubifs_info *c, struct ubifs_lpt_heap *heap, int cat)
lprops->dirty, lprops->flags); lprops->dirty, lprops->flags);
} }
pr_err("(pid %d) finish dumping heap\n", current->pid); pr_err("(pid %d) finish dumping heap\n", current->pid);
#endif
} }
void ubifs_dump_pnode(struct ubifs_info *c, struct ubifs_pnode *pnode, void ubifs_dump_pnode(struct ubifs_info *c, struct ubifs_pnode *pnode,
struct ubifs_nnode *parent, int iip) struct ubifs_nnode *parent, int iip)
{ {
#ifndef CONFIG_UBIFS_SILENCE_DEBUG_DUMP
int i; int i;
pr_err("(pid %d) dumping pnode:\n", current->pid); pr_err("(pid %d) dumping pnode:\n", current->pid);
@ -927,10 +948,12 @@ void ubifs_dump_pnode(struct ubifs_info *c, struct ubifs_pnode *pnode,
pr_err("\t%d: free %d dirty %d flags %d lnum %d\n", pr_err("\t%d: free %d dirty %d flags %d lnum %d\n",
i, lp->free, lp->dirty, lp->flags, lp->lnum); i, lp->free, lp->dirty, lp->flags, lp->lnum);
} }
#endif
} }
void ubifs_dump_tnc(struct ubifs_info *c) void ubifs_dump_tnc(struct ubifs_info *c)
{ {
#ifndef CONFIG_UBIFS_SILENCE_DEBUG_DUMP
struct ubifs_znode *znode; struct ubifs_znode *znode;
int level; int level;
@ -948,14 +971,17 @@ void ubifs_dump_tnc(struct ubifs_info *c)
znode = ubifs_tnc_levelorder_next(c->zroot.znode, znode); znode = ubifs_tnc_levelorder_next(c->zroot.znode, znode);
} }
pr_err("(pid %d) finish dumping TNC tree\n", current->pid); pr_err("(pid %d) finish dumping TNC tree\n", current->pid);
#endif
} }
#ifndef CONFIG_UBIFS_SILENCE_DEBUG_DUMP
static int dump_znode(struct ubifs_info *c, struct ubifs_znode *znode, static int dump_znode(struct ubifs_info *c, struct ubifs_znode *znode,
void *priv) void *priv)
{ {
ubifs_dump_znode(c, znode); ubifs_dump_znode(c, znode);
return 0; return 0;
} }
#endif
/** /**
* ubifs_dump_index - dump the on-flash index. * ubifs_dump_index - dump the on-flash index.
@ -966,7 +992,9 @@ static int dump_znode(struct ubifs_info *c, struct ubifs_znode *znode,
*/ */
void ubifs_dump_index(struct ubifs_info *c) void ubifs_dump_index(struct ubifs_info *c)
{ {
#ifndef CONFIG_UBIFS_SILENCE_DEBUG_DUMP
dbg_walk_index(c, NULL, dump_znode, NULL); dbg_walk_index(c, NULL, dump_znode, NULL);
#endif
} }
#ifndef __UBOOT__ #ifndef __UBOOT__