Re: [PATCH RESEND v2] bcache: convert bch_register_lock to rw_semaphore
kernel test robot <[email protected]> Tue, 7 Jul 2026 16:29:42 +0800
| Newsgroups | org.kernel.vger.linux-bcache,dev.linux.lists.oe-kbuild-all,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
Hi Qiliang, kernel test robot noticed the following build warnings: [auto build test WARNING on 502d801f0ab03e4f32f9a33d203154ce84887921] url: https://github.com/intel-lab-lkp/linux/commits/Qiliang-Yuan/bcache-convert-bch_register_lock-to-rw_semaphore/20260706-212031 base: 502d801f0ab03e4f32f9a33d203154ce84887921 patch link: https://lore.kernel.org/r/20260706-feat-bcache-v2-1-70a4b6e246c0%40gmail.com patch subject: [PATCH RESEND v2] bcache: convert bch_register_lock to rw_semaphore config: arc-allmodconfig (https://download.01.org/0day-ci/archive/20260707/[email protected]/config) compiler: arc-linux-gcc (GCC) 16.1.0 reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260707/[email protected]/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 <[email protected]> | Closes: https://lore.kernel.org/oe-kbuild-all/[email protected]/ All warnings (new ones prefixed by >>): drivers/md/bcache/sysfs.c: In function 'bch_cached_dev_show': >> drivers/md/bcache/sysfs.c:290:28: warning: unused variable 'dc' [-Wunused-variable] 290 | struct cached_dev *dc = container_of(kobj, struct cached_dev, | ^~ vim +/dc +290 drivers/md/bcache/sysfs.c 178 179 if (attr == &sysfs_cache_mode) 180 return bch_snprint_string_list(buf, PAGE_SIZE, 181 bch_cache_modes, 182 BDEV_CACHE_MODE(&dc->sb)); 183 184 if (attr == &sysfs_readahead_cache_policy) 185 return bch_snprint_string_list(buf, PAGE_SIZE, 186 bch_reada_cache_policies, 187 dc->cache_readahead_policy); 188 189 if (attr == &sysfs_stop_when_cache_set_failed) 190 return bch_snprint_string_list(buf, PAGE_SIZE, 191 bch_stop_on_failure_modes, 192 dc->stop_when_cache_set_failed); 193 194 195 sysfs_printf(data_csum, "%i", dc->disk.data_csum); 196 var_printf(verify, "%i"); 197 var_printf(bypass_torture_test, "%i"); 198 var_printf(writeback_metadata, "%i"); 199 var_printf(writeback_running, "%i"); 200 var_printf(writeback_consider_fragment, "%i"); 201 var_print(writeback_delay); 202 var_print(writeback_percent); 203 sysfs_hprint(writeback_rate, 204 wb ? atomic_long_read(&dc->writeback_rate.rate) << 9 : 0); 205 sysfs_printf(io_errors, "%i", atomic_read(&dc->io_errors)); 206 sysfs_printf(io_error_limit, "%i", dc->error_limit); 207 sysfs_printf(io_disable, "%i", dc->io_disable); 208 var_print(writeback_rate_update_seconds); 209 var_print(writeback_rate_i_term_inverse); 210 var_print(writeback_rate_p_term_inverse); 211 var_print(writeback_rate_fp_term_low); 212 var_print(writeback_rate_fp_term_mid); 213 var_print(writeback_rate_fp_term_high); 214 var_print(writeback_rate_minimum); 215 216 if (attr == &sysfs_writeback_rate_debug) { 217 char rate[20]; 218 char dirty[20]; 219 char target[20]; 220 char proportional[20]; 221 char integral[20]; 222 char change[20]; 223 s64 next_io; 224 225 /* 226 * Except for dirty and target, other values should 227 * be 0 if writeback is not running. 228 */ 229 bch_hprint(rate, 230 wb ? atomic_long_read(&dc->writeback_rate.rate) << 9 231 : 0); 232 bch_hprint(dirty, bcache_dev_sectors_dirty(&dc->disk) << 9); 233 bch_hprint(target, dc->writeback_rate_target << 9); 234 bch_hprint(proportional, 235 wb ? dc->writeback_rate_proportional << 9 : 0); 236 bch_hprint(integral, 237 wb ? dc->writeback_rate_integral_scaled << 9 : 0); 238 bch_hprint(change, wb ? dc->writeback_rate_change << 9 : 0); 239 next_io = wb ? div64_s64(dc->writeback_rate.next-local_clock(), 240 NSEC_PER_MSEC) : 0; 241 242 return sprintf(buf, 243 "rate:\t\t%s/sec\n" 244 "dirty:\t\t%s\n" 245 "target:\t\t%s\n" 246 "proportional:\t%s\n" 247 "integral:\t%s\n" 248 "change:\t\t%s/sec\n" 249 "next io:\t%llims\n", 250 rate, dirty, target, proportional, 251 integral, change, next_io); 252 } 253 254 sysfs_hprint(dirty_data, 255 bcache_dev_sectors_dirty(&dc->disk) << 9); 256 257 sysfs_hprint(stripe_size, ((uint64_t)dc->disk.stripe_size) << 9); 258 var_printf(partial_stripes_expensive, "%u"); 259 260 var_hprint(sequential_cutoff); 261 262 sysfs_print(running, atomic_read(&dc->running)); 263 sysfs_print(state, states[BDEV_STATE(&dc->sb)]); 264 265 if (attr == &sysfs_label) { 266 memcpy(buf, dc->sb.label, SB_LABEL_SIZE); 267 buf[SB_LABEL_SIZE + 1] = '\0'; 268 strcat(buf, "\n"); 269 return strlen(buf); 270 } 271 272 if (attr == &sysfs_backing_dev_name) { 273 snprintf(buf, BDEVNAME_SIZE + 1, "%pg", dc->bdev); 274 strcat(buf, "\n"); 275 return strlen(buf); 276 } 277 278 if (attr == &sysfs_backing_dev_uuid) { 279 /* convert binary uuid into 36-byte string plus '\0' */ 280 snprintf(buf, 36+1, "%pU", dc->sb.uuid); 281 strcat(buf, "\n"); 282 return strlen(buf); 283 } 284 285 #undef var 286 return 0; 287 } 288 SHOW(bch_cached_dev) 289 { > 290 struct cached_dev *dc = container_of(kobj, struct cached_dev, 291 disk.kobj); 292 ssize_t ret; 293 294 /* 295 * Statistics attributes like dirty_data read atomic variables and 296 * can be shown without holding the global bch_register_lock. 297 */ 298 if (attr == &sysfs_dirty_data || 299 attr == &sysfs_writeback_rate_debug) 300 return __bch_cached_dev_show(kobj, attr, buf); 301 302 down_read(&bch_register_lock); 303 ret = __bch_cached_dev_show(kobj, attr, buf); 304 up_read(&bch_register_lock); 305 306 return ret; 307 } 308 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki