brintos

brintos / linux-shallow public Read only

0
0
Text · 7.1 KiB · 02fa66f Raw
263 lines · c
1// SPDX-License-Identifier: GPL-2.02/*3 *  linux/fs/befs/debug.c4 *5 * Copyright (C) 2001 Will Dyson (will_dyson at pobox.com)6 *7 * With help from the ntfs-tng driver by Anton Altparmakov8 *9 * Copyright (C) 1999  Makoto Kato (m_kato@ga2.so-net.ne.jp)10 *11 * debug functions12 */13 14#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt15#ifdef __KERNEL__16 17#include <linux/stdarg.h>18#include <linux/string.h>19#include <linux/spinlock.h>20#include <linux/kernel.h>21#include <linux/fs.h>22#include <linux/slab.h>23 24#endif				/* __KERNEL__ */25 26#include "befs.h"27 28void29befs_error(const struct super_block *sb, const char *fmt, ...)30{31	struct va_format vaf;32	va_list args;33 34	va_start(args, fmt);35	vaf.fmt = fmt;36	vaf.va = &args;37	pr_err("(%s): %pV\n", sb->s_id, &vaf);38	va_end(args);39}40 41void42befs_warning(const struct super_block *sb, const char *fmt, ...)43{44	struct va_format vaf;45	va_list args;46 47	va_start(args, fmt);48	vaf.fmt = fmt;49	vaf.va = &args;50	pr_warn("(%s): %pV\n", sb->s_id, &vaf);51	va_end(args);52}53 54void55befs_debug(const struct super_block *sb, const char *fmt, ...)56{57#ifdef CONFIG_BEFS_DEBUG58 59	struct va_format vaf;60	va_list args;61 62	va_start(args, fmt);63	vaf.fmt = fmt;64	vaf.va = &args;65	pr_debug("(%s): %pV\n", sb->s_id, &vaf);66	va_end(args);67 68#endif				//CONFIG_BEFS_DEBUG69}70 71void72befs_dump_inode(const struct super_block *sb, befs_inode *inode)73{74#ifdef CONFIG_BEFS_DEBUG75 76	befs_block_run tmp_run;77 78	befs_debug(sb, "befs_inode information");79 80	befs_debug(sb, "  magic1 %08x", fs32_to_cpu(sb, inode->magic1));81 82	tmp_run = fsrun_to_cpu(sb, inode->inode_num);83	befs_debug(sb, "  inode_num %u, %hu, %hu",84		   tmp_run.allocation_group, tmp_run.start, tmp_run.len);85 86	befs_debug(sb, "  uid %u", fs32_to_cpu(sb, inode->uid));87	befs_debug(sb, "  gid %u", fs32_to_cpu(sb, inode->gid));88	befs_debug(sb, "  mode %08x", fs32_to_cpu(sb, inode->mode));89	befs_debug(sb, "  flags %08x", fs32_to_cpu(sb, inode->flags));90	befs_debug(sb, "  create_time %llu",91		   fs64_to_cpu(sb, inode->create_time));92	befs_debug(sb, "  last_modified_time %llu",93		   fs64_to_cpu(sb, inode->last_modified_time));94 95	tmp_run = fsrun_to_cpu(sb, inode->parent);96	befs_debug(sb, "  parent [%u, %hu, %hu]",97		   tmp_run.allocation_group, tmp_run.start, tmp_run.len);98 99	tmp_run = fsrun_to_cpu(sb, inode->attributes);100	befs_debug(sb, "  attributes [%u, %hu, %hu]",101		   tmp_run.allocation_group, tmp_run.start, tmp_run.len);102 103	befs_debug(sb, "  type %08x", fs32_to_cpu(sb, inode->type));104	befs_debug(sb, "  inode_size %u", fs32_to_cpu(sb, inode->inode_size));105 106	if (S_ISLNK(fs32_to_cpu(sb, inode->mode))) {107		befs_debug(sb, "  Symbolic link [%s]", inode->data.symlink);108	} else {109		int i;110 111		for (i = 0; i < BEFS_NUM_DIRECT_BLOCKS; i++) {112			tmp_run =113			    fsrun_to_cpu(sb, inode->data.datastream.direct[i]);114			befs_debug(sb, "  direct %d [%u, %hu, %hu]", i,115				   tmp_run.allocation_group, tmp_run.start,116				   tmp_run.len);117		}118		befs_debug(sb, "  max_direct_range %llu",119			   fs64_to_cpu(sb,120				       inode->data.datastream.121				       max_direct_range));122 123		tmp_run = fsrun_to_cpu(sb, inode->data.datastream.indirect);124		befs_debug(sb, "  indirect [%u, %hu, %hu]",125			   tmp_run.allocation_group,126			   tmp_run.start, tmp_run.len);127 128		befs_debug(sb, "  max_indirect_range %llu",129			   fs64_to_cpu(sb,130				       inode->data.datastream.131				       max_indirect_range));132 133		tmp_run =134		    fsrun_to_cpu(sb, inode->data.datastream.double_indirect);135		befs_debug(sb, "  double indirect [%u, %hu, %hu]",136			   tmp_run.allocation_group, tmp_run.start,137			   tmp_run.len);138 139		befs_debug(sb, "  max_double_indirect_range %llu",140			   fs64_to_cpu(sb,141				       inode->data.datastream.142				       max_double_indirect_range));143 144		befs_debug(sb, "  size %llu",145			   fs64_to_cpu(sb, inode->data.datastream.size));146	}147 148#endif				//CONFIG_BEFS_DEBUG149}150 151/*152 * Display super block structure for debug.153 */154 155void156befs_dump_super_block(const struct super_block *sb, befs_super_block *sup)157{158#ifdef CONFIG_BEFS_DEBUG159 160	befs_block_run tmp_run;161 162	befs_debug(sb, "befs_super_block information");163 164	befs_debug(sb, "  name %s", sup->name);165	befs_debug(sb, "  magic1 %08x", fs32_to_cpu(sb, sup->magic1));166	befs_debug(sb, "  fs_byte_order %08x",167		   fs32_to_cpu(sb, sup->fs_byte_order));168 169	befs_debug(sb, "  block_size %u", fs32_to_cpu(sb, sup->block_size));170	befs_debug(sb, "  block_shift %u", fs32_to_cpu(sb, sup->block_shift));171 172	befs_debug(sb, "  num_blocks %llu", fs64_to_cpu(sb, sup->num_blocks));173	befs_debug(sb, "  used_blocks %llu", fs64_to_cpu(sb, sup->used_blocks));174	befs_debug(sb, "  inode_size %u", fs32_to_cpu(sb, sup->inode_size));175 176	befs_debug(sb, "  magic2 %08x", fs32_to_cpu(sb, sup->magic2));177	befs_debug(sb, "  blocks_per_ag %u",178		   fs32_to_cpu(sb, sup->blocks_per_ag));179	befs_debug(sb, "  ag_shift %u", fs32_to_cpu(sb, sup->ag_shift));180	befs_debug(sb, "  num_ags %u", fs32_to_cpu(sb, sup->num_ags));181 182	befs_debug(sb, "  flags %08x", fs32_to_cpu(sb, sup->flags));183 184	tmp_run = fsrun_to_cpu(sb, sup->log_blocks);185	befs_debug(sb, "  log_blocks %u, %hu, %hu",186		   tmp_run.allocation_group, tmp_run.start, tmp_run.len);187 188	befs_debug(sb, "  log_start %lld", fs64_to_cpu(sb, sup->log_start));189	befs_debug(sb, "  log_end %lld", fs64_to_cpu(sb, sup->log_end));190 191	befs_debug(sb, "  magic3 %08x", fs32_to_cpu(sb, sup->magic3));192 193	tmp_run = fsrun_to_cpu(sb, sup->root_dir);194	befs_debug(sb, "  root_dir %u, %hu, %hu",195		   tmp_run.allocation_group, tmp_run.start, tmp_run.len);196 197	tmp_run = fsrun_to_cpu(sb, sup->indices);198	befs_debug(sb, "  indices %u, %hu, %hu",199		   tmp_run.allocation_group, tmp_run.start, tmp_run.len);200 201#endif				//CONFIG_BEFS_DEBUG202}203 204#if 0205/* unused */206void207befs_dump_small_data(const struct super_block *sb, befs_small_data *sd)208{209}210 211/* unused */212void213befs_dump_run(const struct super_block *sb, befs_disk_block_run run)214{215#ifdef CONFIG_BEFS_DEBUG216 217	befs_block_run n = fsrun_to_cpu(sb, run);218 219	befs_debug(sb, "[%u, %hu, %hu]", n.allocation_group, n.start, n.len);220 221#endif				//CONFIG_BEFS_DEBUG222}223#endif  /*  0  */224 225void226befs_dump_index_entry(const struct super_block *sb,227		      befs_disk_btree_super *super)228{229#ifdef CONFIG_BEFS_DEBUG230 231	befs_debug(sb, "Btree super structure");232	befs_debug(sb, "  magic %08x", fs32_to_cpu(sb, super->magic));233	befs_debug(sb, "  node_size %u", fs32_to_cpu(sb, super->node_size));234	befs_debug(sb, "  max_depth %08x", fs32_to_cpu(sb, super->max_depth));235 236	befs_debug(sb, "  data_type %08x", fs32_to_cpu(sb, super->data_type));237	befs_debug(sb, "  root_node_pointer %016LX",238		   fs64_to_cpu(sb, super->root_node_ptr));239	befs_debug(sb, "  free_node_pointer %016LX",240		   fs64_to_cpu(sb, super->free_node_ptr));241	befs_debug(sb, "  maximum size %016LX",242		   fs64_to_cpu(sb, super->max_size));243 244#endif				//CONFIG_BEFS_DEBUG245}246 247void248befs_dump_index_node(const struct super_block *sb, befs_btree_nodehead *node)249{250#ifdef CONFIG_BEFS_DEBUG251 252	befs_debug(sb, "Btree node structure");253	befs_debug(sb, "  left %016LX", fs64_to_cpu(sb, node->left));254	befs_debug(sb, "  right %016LX", fs64_to_cpu(sb, node->right));255	befs_debug(sb, "  overflow %016LX", fs64_to_cpu(sb, node->overflow));256	befs_debug(sb, "  all_key_count %hu",257		   fs16_to_cpu(sb, node->all_key_count));258	befs_debug(sb, "  all_key_length %hu",259		   fs16_to_cpu(sb, node->all_key_length));260 261#endif				//CONFIG_BEFS_DEBUG262}263