linux-fsdevel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: Viacheslav Dubeyko <slava@dubeyko.com>, ceph-devel@vger.kernel.org
Cc: oe-kbuild-all@lists.linux.dev, idryomov@gmail.com,
	linux-fsdevel@vger.kernel.org, pdonnell@redhat.com,
	amarkuze@redhat.com, Slava.Dubeyko@ibm.com, slava@dubeyko.com,
	vdubeyko@redhat.com
Subject: Re: [PATCH] ceph: introduce Kunit based unit-tests for string operations
Date: Thu, 25 Sep 2025 21:04:55 +0800	[thread overview]
Message-ID: <202509252015.tfuSHe3S-lkp@intel.com> (raw)
In-Reply-To: <20250919181149.500408-2-slava@dubeyko.com>

Hi Viacheslav,

kernel test robot noticed the following build warnings:

[auto build test WARNING on ceph-client/testing]
[also build test WARNING on ceph-client/for-linus linus/master v6.17-rc7 next-20250924]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/Viacheslav-Dubeyko/ceph-introduce-Kunit-based-unit-tests-for-string-operations/20250920-021357
base:   https://github.com/ceph/ceph-client.git testing
patch link:    https://lore.kernel.org/r/20250919181149.500408-2-slava%40dubeyko.com
patch subject: [PATCH] ceph: introduce Kunit based unit-tests for string operations
config: loongarch-randconfig-r133-20250925 (https://download.01.org/0day-ci/archive/20250925/202509252015.tfuSHe3S-lkp@intel.com/config)
compiler: clang version 20.1.8 (https://github.com/llvm/llvm-project 87f0227cb60147a26a1eeb4fb06e3b505e9c7261)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250925/202509252015.tfuSHe3S-lkp@intel.com/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@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202509252015.tfuSHe3S-lkp@intel.com/

sparse warnings: (new ones prefixed by >>)
>> fs/ceph/strings_test.c:102:11: sparse: sparse: symbol 'ceph_str_idx_2_mds_state' was not declared. Should it be static?
>> fs/ceph/strings_test.c:247:11: sparse: sparse: symbol 'ceph_str_idx_2_mds_op' was not declared. Should it be static?
>> fs/ceph/strings_test.c:459:11: sparse: sparse: symbol 'ceph_str_idx_2_lease_op' was not declared. Should it be static?

vim +/ceph_str_idx_2_mds_state +102 fs/ceph/strings_test.c

   100	
   101	#define CEPH_MDS_STATE_STR_COUNT	(CEPH_MDS_STATE_UNKNOWN_NAME_STR_IDX)
 > 102	const int ceph_str_idx_2_mds_state[CEPH_MDS_STATE_STR_COUNT] = {
   103	/* 0 */		CEPH_MDS_STATE_DNE,
   104	/* 1 */		CEPH_MDS_STATE_STOPPED,
   105	/* 2 */		CEPH_MDS_STATE_BOOT,
   106	/* 3 */		CEPH_MDS_STATE_STANDBY,
   107	/* 4 */		CEPH_MDS_STATE_STANDBY_REPLAY,
   108	/* 5 */		CEPH_MDS_STATE_REPLAYONCE,
   109	/* 6 */		CEPH_MDS_STATE_CREATING,
   110	/* 7 */		CEPH_MDS_STATE_STARTING,
   111	/* 8 */		CEPH_MDS_STATE_REPLAY,
   112	/* 9 */		CEPH_MDS_STATE_RESOLVE,
   113	/* 10 */	CEPH_MDS_STATE_RECONNECT,
   114	/* 11 */	CEPH_MDS_STATE_REJOIN,
   115	/* 12 */	CEPH_MDS_STATE_CLIENTREPLAY,
   116	/* 13 */	CEPH_MDS_STATE_ACTIVE,
   117	/* 14 */	CEPH_MDS_STATE_STOPPING
   118	};
   119	
   120	static int ceph_mds_state_next_op(int prev)
   121	{
   122		if (prev < CEPH_MDS_STATE_REPLAYONCE)
   123			return CEPH_MDS_STATE_REPLAYONCE;
   124	
   125		/* [-9..-4] */
   126		if (prev >= CEPH_MDS_STATE_REPLAYONCE &&
   127		    prev < CEPH_MDS_STATE_BOOT)
   128			return prev + 1;
   129	
   130		/* [-4..-1] */
   131		if (prev == CEPH_MDS_STATE_BOOT)
   132			return CEPH_MDS_STATE_STOPPED;
   133	
   134		/* [-1..0] */
   135		if (prev >= CEPH_MDS_STATE_STOPPED &&
   136		    prev < CEPH_MDS_STATE_DNE)
   137			return prev + 1;
   138	
   139		/* [0..8] */
   140		if (prev == CEPH_MDS_STATE_DNE)
   141			return CEPH_MDS_STATE_REPLAY;
   142	
   143		/* [8..14] */
   144		if (prev >= CEPH_MDS_STATE_REPLAY &&
   145		    prev < CEPH_MDS_STATE_STOPPING)
   146			return prev + 1;
   147	
   148		return CEPH_MDS_STATE_STOPPING;
   149	}
   150	
   151	static void ceph_mds_state_name_test(struct kunit *test)
   152	{
   153		const char *unknown_name =
   154			ceph_mds_state_name_strings[CEPH_MDS_STATE_UNKNOWN_NAME_STR_IDX];
   155		struct ceph_op_iterator iter;
   156		int start, end;
   157		int i;
   158	
   159		/* Test valid MDS states */
   160		for (i = 0; i < CEPH_MDS_STATE_STR_COUNT; i++) {
   161			KUNIT_EXPECT_STREQ(test,
   162				   ceph_mds_state_name(ceph_str_idx_2_mds_state[i]),
   163				   ceph_mds_state_name_strings[i]);
   164		}
   165	
   166		/* Test invalid/unknown states */
   167		start = CEPH_MDS_STATE_REPLAYONCE - CEPH_KUNIT_STRINGS_TEST_RANGE;
   168		end = CEPH_MDS_STATE_STOPPING + CEPH_KUNIT_STRINGS_TEST_RANGE;
   169		ceph_op_iterator_init(&iter, start, end, ceph_mds_state_next_op);
   170	
   171		while (ceph_op_iterator_valid(&iter)) {
   172			switch (ceph_mds_state_2_str_idx(iter.cur)) {
   173			case CEPH_MDS_STATE_UNKNOWN_NAME_STR_IDX:
   174				KUNIT_EXPECT_STREQ(test,
   175						   ceph_mds_state_name(iter.cur),
   176						   unknown_name);
   177				break;
   178	
   179			default:
   180				/* do nothing */
   181				break;
   182			}
   183	
   184			ceph_op_iterator_next(&iter);
   185		}
   186	
   187		KUNIT_EXPECT_STREQ(test,
   188				   ceph_mds_state_name(CEPH_KUNIT_OP_INVALID_MIN),
   189				   unknown_name);
   190		KUNIT_EXPECT_STREQ(test,
   191				   ceph_mds_state_name(CEPH_KUNIT_OP_INVALID_MAX),
   192				   unknown_name);
   193	}
   194	
   195	static int ceph_session_next_op(int prev)
   196	{
   197		return __ceph_next_op(prev,
   198				      CEPH_SESSION_REQUEST_OPEN,
   199				      CEPH_SESSION_REQUEST_FLUSH_MDLOG);
   200	}
   201	
   202	static void ceph_session_op_name_test(struct kunit *test)
   203	{
   204		const char *unknown_name =
   205				ceph_session_op_name_strings[CEPH_SESSION_UNKNOWN_NAME];
   206		struct ceph_op_iterator iter;
   207		int start, end;
   208		int i;
   209	
   210		/* Test valid session operations */
   211		for (i = CEPH_SESSION_REQUEST_OPEN; i < CEPH_SESSION_UNKNOWN_NAME; i++) {
   212			KUNIT_EXPECT_STREQ(test,
   213					   ceph_session_op_name(i),
   214					   ceph_session_op_name_strings[i]);
   215		}
   216	
   217		/* Test invalid/unknown operations */
   218		start = CEPH_SESSION_REQUEST_OPEN - CEPH_KUNIT_STRINGS_TEST_RANGE;
   219		end = CEPH_SESSION_REQUEST_FLUSH_MDLOG + CEPH_KUNIT_STRINGS_TEST_RANGE;
   220		ceph_op_iterator_init(&iter, start, end, ceph_session_next_op);
   221	
   222		while (ceph_op_iterator_valid(&iter)) {
   223			switch (ceph_session_op_2_str_idx(iter.cur)) {
   224			case CEPH_SESSION_UNKNOWN_NAME:
   225				KUNIT_EXPECT_STREQ(test,
   226						   ceph_session_op_name(iter.cur),
   227						   unknown_name);
   228				break;
   229	
   230			default:
   231				/* do nothing */
   232				break;
   233			}
   234	
   235			ceph_op_iterator_next(&iter);
   236		}
   237	
   238		KUNIT_EXPECT_STREQ(test,
   239				   ceph_session_op_name(CEPH_KUNIT_OP_INVALID_MIN),
   240				   unknown_name);
   241		KUNIT_EXPECT_STREQ(test,
   242				   ceph_session_op_name(CEPH_KUNIT_OP_INVALID_MAX),
   243				   unknown_name);
   244	}
   245	
   246	#define CEPH_MDS_OP_STR_COUNT	(CEPH_MDS_OP_UNKNOWN_NAME_STR_IDX)
 > 247	const int ceph_str_idx_2_mds_op[CEPH_MDS_OP_STR_COUNT] = {
   248	/* 0 */		CEPH_MDS_OP_LOOKUP,
   249	/* 1 */		CEPH_MDS_OP_GETATTR,
   250	/* 2 */		CEPH_MDS_OP_LOOKUPHASH,
   251	/* 3 */		CEPH_MDS_OP_LOOKUPPARENT,
   252	/* 4 */		CEPH_MDS_OP_LOOKUPINO,
   253	/* 5 */		CEPH_MDS_OP_LOOKUPNAME,
   254	/* 6 */		CEPH_MDS_OP_GETVXATTR,
   255	/* 7 */		CEPH_MDS_OP_SETXATTR,
   256	/* 8 */		CEPH_MDS_OP_RMXATTR,
   257	/* 9 */		CEPH_MDS_OP_SETLAYOUT,
   258	/* 10 */	CEPH_MDS_OP_SETATTR,
   259	/* 11 */	CEPH_MDS_OP_SETFILELOCK,
   260	/* 12 */	CEPH_MDS_OP_GETFILELOCK,
   261	/* 13 */	CEPH_MDS_OP_SETDIRLAYOUT,
   262	/* 14 */	CEPH_MDS_OP_MKNOD,
   263	/* 15 */	CEPH_MDS_OP_LINK,
   264	/* 16 */	CEPH_MDS_OP_UNLINK,
   265	/* 17 */	CEPH_MDS_OP_RENAME,
   266	/* 18 */	CEPH_MDS_OP_MKDIR,
   267	/* 19 */	CEPH_MDS_OP_RMDIR,
   268	/* 20 */	CEPH_MDS_OP_SYMLINK,
   269	/* 21 */	CEPH_MDS_OP_CREATE,
   270	/* 22 */	CEPH_MDS_OP_OPEN,
   271	/* 23 */	CEPH_MDS_OP_READDIR,
   272	/* 24 */	CEPH_MDS_OP_LOOKUPSNAP,
   273	/* 25 */	CEPH_MDS_OP_MKSNAP,
   274	/* 26 */	CEPH_MDS_OP_RMSNAP,
   275	/* 27 */	CEPH_MDS_OP_LSSNAP,
   276	/* 28 */	CEPH_MDS_OP_RENAMESNAP
   277	};
   278	

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

      reply	other threads:[~2025-09-25 13:05 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-09-19 18:11 [PATCH] ceph: introduce Kunit based unit-tests for string operations Viacheslav Dubeyko
2025-09-25 13:04 ` kernel test robot [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=202509252015.tfuSHe3S-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=Slava.Dubeyko@ibm.com \
    --cc=amarkuze@redhat.com \
    --cc=ceph-devel@vger.kernel.org \
    --cc=idryomov@gmail.com \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=oe-kbuild-all@lists.linux.dev \
    --cc=pdonnell@redhat.com \
    --cc=slava@dubeyko.com \
    --cc=vdubeyko@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).