[ceph-client:tls-tracing-only 10/10] fs/ceph/blog_debugfs.c:26: warning: Function parameter or struct member 's' not described in 'blog_entries_show'

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



tree:   https://github.com/ceph/ceph-client.git tls-tracing-only
head:   6b738aa5f6bb2343f8277d318ff1e9ea9289212c
commit: 6b738aa5f6bb2343f8277d318ff1e9ea9289212c [10/10] proper isolation
config: s390-allmodconfig (https://download.01.org/0day-ci/archive/20250815/202508150401.905dissE-lkp@xxxxxxxxx/config)
compiler: clang version 18.1.8 (https://github.com/llvm/llvm-project 3b5b5c1ec4a3095ab096dd780e84d7ab81f3d7ff)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250815/202508150401.905dissE-lkp@xxxxxxxxx/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@xxxxxxxxx>
| Closes: https://lore.kernel.org/oe-kbuild-all/202508150401.905dissE-lkp@xxxxxxxxx/

All warnings (new ones prefixed by >>):

>> fs/ceph/blog_debugfs.c:26: warning: Function parameter or struct member 's' not described in 'blog_entries_show'
>> fs/ceph/blog_debugfs.c:26: warning: Function parameter or struct member 'p' not described in 'blog_entries_show'
>> fs/ceph/blog_debugfs.c:100: warning: Function parameter or struct member 's' not described in 'blog_stats_show'
>> fs/ceph/blog_debugfs.c:100: warning: Function parameter or struct member 'p' not described in 'blog_stats_show'
>> fs/ceph/blog_debugfs.c:138: warning: Function parameter or struct member 's' not described in 'blog_sources_show'
>> fs/ceph/blog_debugfs.c:138: warning: Function parameter or struct member 'p' not described in 'blog_sources_show'
>> fs/ceph/blog_debugfs.c:189: warning: Function parameter or struct member 's' not described in 'blog_clients_show'
>> fs/ceph/blog_debugfs.c:189: warning: Function parameter or struct member 'p' not described in 'blog_clients_show'
>> fs/ceph/blog_debugfs.c:232: warning: Function parameter or struct member 'file' not described in 'blog_clear_write'
>> fs/ceph/blog_debugfs.c:232: warning: Function parameter or struct member 'buf' not described in 'blog_clear_write'
>> fs/ceph/blog_debugfs.c:232: warning: Function parameter or struct member 'count' not described in 'blog_clear_write'
>> fs/ceph/blog_debugfs.c:232: warning: Function parameter or struct member 'ppos' not described in 'blog_clear_write'


vim +26 fs/ceph/blog_debugfs.c

    18	
    19	/**
    20	 * blog_entries_show - Show all BLOG entries for Ceph
    21	 * 
    22	 * Iterates through all contexts and their pagefrags, deserializing entries
    23	 * using BLOG's deserialization with Ceph's client callback
    24	 */
    25	static int blog_entries_show(struct seq_file *s, void *p)
  > 26	{
    27		struct blog_tls_ctx *ctx;
    28		struct blog_log_iter iter;
    29		struct blog_log_entry *entry;
    30		char output_buf[1024];
    31		int ret;
    32		int entry_count = 0;
    33		int ctx_count = 0;
    34	
    35		seq_printf(s, "Ceph BLOG Entries\n");
    36		seq_printf(s, "=================\n\n");
    37	
    38		/* Access the global logger - need to be careful here */
    39		spin_lock(&g_blog_logger.lock);
    40		
    41		list_for_each_entry(ctx, &g_blog_logger.contexts, list) {
    42			ctx_count++;
    43			seq_printf(s, "Context %d (ID: %llu, PID: %d, Comm: %s)\n",
    44			          ctx_count, ctx->id, ctx->pid, ctx->comm);
    45			seq_printf(s, "  Base jiffies: %lu, Refcount: %d\n",
    46			          ctx->base_jiffies, atomic_read(&ctx->refcount));
    47			
    48			/* Initialize iterator for this context's pagefrag */
    49			blog_log_iter_init(&iter, &ctx->pf);
    50			
    51			/* Iterate through all entries in this context */
    52			while ((entry = blog_log_iter_next(&iter)) != NULL) {
    53				entry_count++;
    54				
    55				/* Clear output buffer */
    56				memset(output_buf, 0, sizeof(output_buf));
    57				
    58				/* Use blog_des_entry with Ceph's client callback */
    59				ret = blog_des_entry(entry, output_buf, sizeof(output_buf),
    60				                    ceph_blog_client_des_callback);
    61				
    62				if (ret < 0) {
    63					seq_printf(s, "  Entry %d: [Error deserializing: %d]\n",
    64					          entry_count, ret);
    65				} else {
    66					/* Show entry details */
    67					seq_printf(s, "  Entry %d (ts_delta=%u, src=%u, client=%u, len=%u):\n",
    68					          entry_count, entry->ts_delta, entry->source_id, 
    69					          entry->client_id, entry->len);
    70					seq_printf(s, "    %s\n", output_buf);
    71				}
    72			}
    73			seq_printf(s, "\n");
    74		}
    75		
    76		spin_unlock(&g_blog_logger.lock);
    77		
    78		seq_printf(s, "Total contexts: %d\n", ctx_count);
    79		seq_printf(s, "Total entries: %d\n", entry_count);
    80		
    81		return 0;
    82	}
    83	
    84	static int blog_entries_open(struct inode *inode, struct file *file)
    85	{
    86		return single_open(file, blog_entries_show, inode->i_private);
    87	}
    88	
    89	static const struct file_operations blog_entries_fops = {
    90		.open = blog_entries_open,
    91		.read = seq_read,
    92		.llseek = seq_lseek,
    93		.release = single_release,
    94	};
    95	
    96	/**
    97	 * blog_stats_show - Show BLOG statistics
    98	 */
    99	static int blog_stats_show(struct seq_file *s, void *p)
 > 100	{
   101		seq_printf(s, "Ceph BLOG Statistics\n");
   102		seq_printf(s, "====================\n\n");
   103		
   104		seq_printf(s, "Global Logger State:\n");
   105		seq_printf(s, "  Total contexts allocated: %lu\n", 
   106		          g_blog_logger.total_contexts_allocated);
   107		seq_printf(s, "  Next context ID: %llu\n", g_blog_logger.next_ctx_id);
   108		seq_printf(s, "  Next source ID: %u\n", 
   109		          atomic_read(&g_blog_logger.next_source_id));
   110		
   111		seq_printf(s, "\nAllocation Batch:\n");
   112		seq_printf(s, "  Full magazines: %u\n", g_blog_logger.alloc_batch.nr_full);
   113		seq_printf(s, "  Empty magazines: %u\n", g_blog_logger.alloc_batch.nr_empty);
   114		
   115		seq_printf(s, "\nLog Batch:\n");
   116		seq_printf(s, "  Full magazines: %u\n", g_blog_logger.log_batch.nr_full);
   117		seq_printf(s, "  Empty magazines: %u\n", g_blog_logger.log_batch.nr_empty);
   118		
   119		return 0;
   120	}
   121	
   122	static int blog_stats_open(struct inode *inode, struct file *file)
   123	{
   124		return single_open(file, blog_stats_show, inode->i_private);
   125	}
   126	
   127	static const struct file_operations blog_stats_fops = {
   128		.open = blog_stats_open,
   129		.read = seq_read,
   130		.llseek = seq_lseek,
   131		.release = single_release,
   132	};
   133	
   134	/**
   135	 * blog_sources_show - Show all registered source locations
   136	 */
   137	static int blog_sources_show(struct seq_file *s, void *p)
 > 138	{
   139		struct blog_source_info *source;
   140		u32 id;
   141		int count = 0;
   142		
   143		seq_printf(s, "Ceph BLOG Source Locations\n");
   144		seq_printf(s, "===========================\n\n");
   145		
   146		for (id = 1; id < BLOG_MAX_SOURCE_IDS; id++) {
   147			source = blog_get_source_info(id);
   148			if (!source || !source->file)
   149				continue;
   150			
   151			count++;
   152			seq_printf(s, "ID %u: %s:%s:%u\n", id, 
   153			          source->file, source->func, source->line);
   154			seq_printf(s, "  Format: %s\n", source->fmt ? source->fmt : "(null)");
   155			seq_printf(s, "  Warnings: %d\n", source->warn_count);
   156			
   157	#if BLOG_TRACK_USAGE
   158			seq_printf(s, "  NAPI usage: %d calls, %d bytes\n",
   159			          atomic_read(&source->napi_usage),
   160			          atomic_read(&source->napi_bytes));
   161			seq_printf(s, "  Task usage: %d calls, %d bytes\n",
   162			          atomic_read(&source->task_usage),
   163			          atomic_read(&source->task_bytes));
   164	#endif
   165			seq_printf(s, "\n");
   166		}
   167		
   168		seq_printf(s, "Total registered sources: %d\n", count);
   169		
   170		return 0;
   171	}
   172	
   173	static int blog_sources_open(struct inode *inode, struct file *file)
   174	{
   175		return single_open(file, blog_sources_show, inode->i_private);
   176	}
   177	
   178	static const struct file_operations blog_sources_fops = {
   179		.open = blog_sources_open,
   180		.read = seq_read,
   181		.llseek = seq_lseek,
   182		.release = single_release,
   183	};
   184	
   185	/**
   186	 * blog_clients_show - Show all registered Ceph clients
   187	 */
   188	static int blog_clients_show(struct seq_file *s, void *p)
 > 189	{
   190		u32 id;
   191		int count = 0;
   192		const struct ceph_blog_client_info *info;
   193		
   194		seq_printf(s, "Ceph BLOG Registered Clients\n");
   195		seq_printf(s, "=============================\n\n");
   196		
   197		for (id = 1; id < CEPH_BLOG_MAX_CLIENTS; id++) {
   198			info = ceph_blog_get_client_info(id);
   199			if (!info || info->global_id == 0)
   200				continue;
   201			
   202			count++;
   203			
   204			seq_printf(s, "Client ID %u:\n", id);
   205			seq_printf(s, "  FSID: %pU\n", info->fsid);
   206			seq_printf(s, "  Global ID: %llu\n", info->global_id);
   207			seq_printf(s, "\n");
   208		}
   209		
   210		seq_printf(s, "Total registered clients: %d\n", count);
   211		
   212		return 0;
   213	}
   214	

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki




[Index of Archives]     [CEPH Users]     [Ceph Large]     [Ceph Dev]     [Information on CEPH]     [Linux BTRFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux