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
prev parent 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).