lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <9c763646-f320-4975-ae19-2a40607757b1@yukuai.org.cn>
Date: Sun, 7 Sep 2025 15:57:45 +0800
From: Yu Kuai <hailan@...uai.org.cn>
To: kernel test robot <lkp@...el.com>, Yu Kuai <yukuai1@...weicloud.com>,
 hch@...radead.org, colyli@...nel.org, hare@...e.de, dlemoal@...nel.org,
 tieren@...as.com, bvanassche@....org, axboe@...nel.dk, tj@...nel.org,
 josef@...icpanda.com, song@...nel.org, yukuai3@...wei.com,
 satyat@...gle.com, ebiggers@...gle.com, kmo@...erainc.com,
 akpm@...ux-foundation.org, neil@...wn.name
Cc: oe-kbuild-all@...ts.linux.dev, linux-block@...r.kernel.org,
 linux-kernel@...r.kernel.org, cgroups@...r.kernel.org,
 linux-raid@...r.kernel.org, yi.zhang@...wei.com, yangerkun@...wei.com,
 johnny.chenyi@...wei.com
Subject: Re: [PATCH for-6.18/block 02/16] block: initialize bio issue time in
 blk_mq_submit_bio()

Hi,

在 2025/9/6 23:27, kernel test robot 写道:
> Hi Yu,
>
> kernel test robot noticed the following build errors:
>
> [auto build test ERROR on axboe-block/for-next]
> [also build test ERROR on linus/master v6.17-rc4 next-20250905]
> [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/Yu-Kuai/block-cleanup-bio_issue/20250905-153659
> base:   https://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux-block.git for-next
> patch link:    https://lore.kernel.org/r/20250905070643.2533483-3-yukuai1%40huaweicloud.com
> patch subject: [PATCH for-6.18/block 02/16] block: initialize bio issue time in blk_mq_submit_bio()
> config: i386-buildonly-randconfig-003-20250906 (https://download.01.org/0day-ci/archive/20250906/202509062332.tqE0Bc8k-lkp@intel.com/config)
> compiler: gcc-13 (Debian 13.3.0-16) 13.3.0
> reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250906/202509062332.tqE0Bc8k-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@...el.com>
> | Closes: https://lore.kernel.org/oe-kbuild-all/202509062332.tqE0Bc8k-lkp@intel.com/
>
> All errors (new ones prefixed by >>):
>
>     block/blk-mq.c: In function 'blk_mq_submit_bio':
>>> block/blk-mq.c:3171:12: error: 'struct bio' has no member named 'issue_time_ns'
>      3171 |         bio->issue_time_ns = blk_time_get_ns();

This should be included inside BLK_CGROUP config, sorry about this.

Thanks,
Kuai

>           |            ^~
>
>
> vim +3171 block/blk-mq.c
>
>    3097	
>    3098	/**
>    3099	 * blk_mq_submit_bio - Create and send a request to block device.
>    3100	 * @bio: Bio pointer.
>    3101	 *
>    3102	 * Builds up a request structure from @q and @bio and send to the device. The
>    3103	 * request may not be queued directly to hardware if:
>    3104	 * * This request can be merged with another one
>    3105	 * * We want to place request at plug queue for possible future merging
>    3106	 * * There is an IO scheduler active at this queue
>    3107	 *
>    3108	 * It will not queue the request if there is an error with the bio, or at the
>    3109	 * request creation.
>    3110	 */
>    3111	void blk_mq_submit_bio(struct bio *bio)
>    3112	{
>    3113		struct request_queue *q = bdev_get_queue(bio->bi_bdev);
>    3114		struct blk_plug *plug = current->plug;
>    3115		const int is_sync = op_is_sync(bio->bi_opf);
>    3116		struct blk_mq_hw_ctx *hctx;
>    3117		unsigned int nr_segs;
>    3118		struct request *rq;
>    3119		blk_status_t ret;
>    3120	
>    3121		/*
>    3122		 * If the plug has a cached request for this queue, try to use it.
>    3123		 */
>    3124		rq = blk_mq_peek_cached_request(plug, q, bio->bi_opf);
>    3125	
>    3126		/*
>    3127		 * A BIO that was released from a zone write plug has already been
>    3128		 * through the preparation in this function, already holds a reference
>    3129		 * on the queue usage counter, and is the only write BIO in-flight for
>    3130		 * the target zone. Go straight to preparing a request for it.
>    3131		 */
>    3132		if (bio_zone_write_plugging(bio)) {
>    3133			nr_segs = bio->__bi_nr_segments;
>    3134			if (rq)
>    3135				blk_queue_exit(q);
>    3136			goto new_request;
>    3137		}
>    3138	
>    3139		/*
>    3140		 * The cached request already holds a q_usage_counter reference and we
>    3141		 * don't have to acquire a new one if we use it.
>    3142		 */
>    3143		if (!rq) {
>    3144			if (unlikely(bio_queue_enter(bio)))
>    3145				return;
>    3146		}
>    3147	
>    3148		/*
>    3149		 * Device reconfiguration may change logical block size or reduce the
>    3150		 * number of poll queues, so the checks for alignment and poll support
>    3151		 * have to be done with queue usage counter held.
>    3152		 */
>    3153		if (unlikely(bio_unaligned(bio, q))) {
>    3154			bio_io_error(bio);
>    3155			goto queue_exit;
>    3156		}
>    3157	
>    3158		if ((bio->bi_opf & REQ_POLLED) && !blk_mq_can_poll(q)) {
>    3159			bio->bi_status = BLK_STS_NOTSUPP;
>    3160			bio_endio(bio);
>    3161			goto queue_exit;
>    3162		}
>    3163	
>    3164		bio = __bio_split_to_limits(bio, &q->limits, &nr_segs);
>    3165		if (!bio)
>    3166			goto queue_exit;
>    3167	
>    3168		if (!bio_integrity_prep(bio))
>    3169			goto queue_exit;
>    3170	
>> 3171		bio->issue_time_ns = blk_time_get_ns();
>    3172		if (blk_mq_attempt_bio_merge(q, bio, nr_segs))
>    3173			goto queue_exit;
>    3174	
>    3175		if (bio_needs_zone_write_plugging(bio)) {
>    3176			if (blk_zone_plug_bio(bio, nr_segs))
>    3177				goto queue_exit;
>    3178		}
>    3179	
>    3180	new_request:
>    3181		if (rq) {
>    3182			blk_mq_use_cached_rq(rq, plug, bio);
>    3183		} else {
>    3184			rq = blk_mq_get_new_requests(q, plug, bio);
>    3185			if (unlikely(!rq)) {
>    3186				if (bio->bi_opf & REQ_NOWAIT)
>    3187					bio_wouldblock_error(bio);
>    3188				goto queue_exit;
>    3189			}
>    3190		}
>    3191	
>    3192		trace_block_getrq(bio);
>    3193	
>    3194		rq_qos_track(q, rq, bio);
>    3195	
>    3196		blk_mq_bio_to_request(rq, bio, nr_segs);
>    3197	
>    3198		ret = blk_crypto_rq_get_keyslot(rq);
>    3199		if (ret != BLK_STS_OK) {
>    3200			bio->bi_status = ret;
>    3201			bio_endio(bio);
>    3202			blk_mq_free_request(rq);
>    3203			return;
>    3204		}
>    3205	
>    3206		if (bio_zone_write_plugging(bio))
>    3207			blk_zone_write_plug_init_request(rq);
>    3208	
>    3209		if (op_is_flush(bio->bi_opf) && blk_insert_flush(rq))
>    3210			return;
>    3211	
>    3212		if (plug) {
>    3213			blk_add_rq_to_plug(plug, rq);
>    3214			return;
>    3215		}
>    3216	
>    3217		hctx = rq->mq_hctx;
>    3218		if ((rq->rq_flags & RQF_USE_SCHED) ||
>    3219		    (hctx->dispatch_busy && (q->nr_hw_queues == 1 || !is_sync))) {
>    3220			blk_mq_insert_request(rq, 0);
>    3221			blk_mq_run_hw_queue(hctx, true);
>    3222		} else {
>    3223			blk_mq_run_dispatch_ops(q, blk_mq_try_issue_directly(hctx, rq));
>    3224		}
>    3225		return;
>    3226	
>    3227	queue_exit:
>    3228		/*
>    3229		 * Don't drop the queue reference if we were trying to use a cached
>    3230		 * request and thus didn't acquire one.
>    3231		 */
>    3232		if (!rq)
>    3233			blk_queue_exit(q);
>    3234	}
>    3235	
>

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ