From owner-svn-src-head@freebsd.org Thu Feb 22 07:01:56 2018 Return-Path: Delivered-To: svn-src-head@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 18C5AF095AB; Thu, 22 Feb 2018 07:01:56 +0000 (UTC) (envelope-from allanjude@freebsd.org) Received: from mx1.scaleengine.net (mx1.scaleengine.net [209.51.186.6]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id BA0F370744; Thu, 22 Feb 2018 07:01:55 +0000 (UTC) (envelope-from allanjude@freebsd.org) Received: from [10.1.1.2] (Seawolf.HML3.ScaleEngine.net [209.51.186.28]) (Authenticated sender: allanjude.freebsd@scaleengine.com) by mx1.scaleengine.net (Postfix) with ESMTPSA id BC67514E40; Thu, 22 Feb 2018 07:01:49 +0000 (UTC) Subject: Re: svn commit: r329814 - head/sys/cam To: "O. Hartmann" , Warner Losh Cc: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org References: <201802220543.w1M5hobv068907@repo.freebsd.org> <20180222070713.1ba6f278@freyja.zeit4.iv.bundesimmobilien.de> From: Allan Jude Message-ID: <89a4b962-ca69-4a42-579e-72ae777ef015@freebsd.org> Date: Thu, 22 Feb 2018 02:01:51 -0500 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.6.0 MIME-Version: 1.0 In-Reply-To: <20180222070713.1ba6f278@freyja.zeit4.iv.bundesimmobilien.de> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 22 Feb 2018 07:01:56 -0000 On 2018-02-22 01:07, O. Hartmann wrote: > On Thu, 22 Feb 2018 05:43:50 +0000 (UTC) > Warner Losh wrote: > >> Author: imp >> Date: Thu Feb 22 05:43:50 2018 >> New Revision: 329814 >> URL: https://svnweb.freebsd.org/changeset/base/329814 >> >> Log: >> Note when we tick. >> >> To help implement a policy of 'queue all trims until next I/O sched >> tick' policy to help coalesce them, note when we tick so we can do >> something special on the first call after the tick to get more work. >> >> Sponsored by: Netflix >> >> Modified: >> head/sys/cam/cam_iosched.c >> >> Modified: head/sys/cam/cam_iosched.c >> ============================================================================== >> --- head/sys/cam/cam_iosched.c Thu Feb 22 05:43:45 2018 >> (r329813) +++ head/sys/cam/cam_iosched.c Thu Feb 22 05:43:50 >> 2018 (r329814) @@ -60,6 +60,19 @@ static MALLOC_DEFINE(M_CAMSCHED, >> "CAM I/O Scheduler", "CAM I/O Scheduler buffers"); >> >> /* >> + * Trim or similar currently pending completion. Should only be set for >> + * those drivers wishing only one Trim active at a time. >> + */ >> +#define CAM_IOSCHED_FLAG_TRIM_ACTIVE (1ul << 0) >> + /* Callout active, and needs to be torn down */ >> +#define CAM_IOSCHED_FLAG_CALLOUT_ACTIVE (1ul << 1) >> + /* Timer has just ticked */ >> +#define CAM_IOSCHED_FLAG_TICK (1ul << 2) >> + >> + /* Periph drivers set these flags to indicate work */ >> +#define CAM_IOSCHED_FLAG_WORK_FLAGS ((0xffffu) << 16) >> + >> +/* >> * Default I/O scheduler for FreeBSD. This implementation is just a >> thin-vineer >> * over the bioq_* interface, with notions of separate calls for normal I/O >> and >> * for trims. >> @@ -574,6 +587,7 @@ cam_iosched_ticker(void *arg) >> cam_iosched_limiter_tick(&isc->write_stats); >> cam_iosched_limiter_tick(&isc->trim_stats); >> >> + isc->flags |= CAM_IOSCHED_FLAGS_TICK; >> cam_iosched_schedule(isc, isc->periph); >> >> /* >> @@ -701,17 +715,6 @@ cam_iosched_cl_maybe_steer(struct control_loop *clp) >> } >> #endif >> >> -/* >> - * Trim or similar currently pending completion. Should only be set for >> - * those drivers wishing only one Trim active at a time. >> - */ >> -#define CAM_IOSCHED_FLAG_TRIM_ACTIVE (1ul << 0) >> - /* Callout active, and needs to be torn down */ >> -#define CAM_IOSCHED_FLAG_CALLOUT_ACTIVE (1ul << 1) >> - >> - /* Periph drivers set these flags to indicate work */ >> -#define CAM_IOSCHED_FLAG_WORK_FLAGS ((0xffffu) << 16) >> - >> #ifdef CAM_IOSCHED_DYNAMIC >> static void >> cam_iosched_io_metric_update(struct cam_iosched_softc *isc, >> @@ -1322,6 +1325,10 @@ struct bio * >> cam_iosched_next_bio(struct cam_iosched_softc *isc) >> { >> struct bio *bp; >> + bool wastick; >> + >> + wastick = !!(isc->flags & CAM_IOSCHED_FLAGS_TICK); >> + isc->flags &= ~CAM_IOSCHED_FLAGS_TICK; >> >> /* >> * See if we have a trim that can be scheduled. We can only send one >> _______________________________________________ >> svn-src-head@freebsd.org mailing list >> https://lists.freebsd.org/mailman/listinfo/svn-src-head >> To unsubscribe, send any mail to "svn-src-head-unsubscribe@freebsd.org" > > A recent buildworld/buildkernel failed with this error just right now: > > --- cam_iosched.o --- > /usr/src/sys/cam/cam_iosched.c:593:16: error: use of undeclared identifier > 'CAM_IOSCHED_FLAGS_TICK' isc->flags |= CAM_IOSCHED_FLAGS_TICK; > Looks like a typo, FLAGS_TICK vs FLAG_TICK -- Allan Jude