Date: Thu, 22 Feb 2018 07:07:13 +0100 From: "O. Hartmann" <o.hartmann@walstatt.org> To: Warner Losh <imp@FreeBSD.org> Cc: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r329814 - head/sys/cam Message-ID: <20180222070713.1ba6f278@freyja.zeit4.iv.bundesimmobilien.de> In-Reply-To: <201802220543.w1M5hobv068907@repo.freebsd.org> References: <201802220543.w1M5hobv068907@repo.freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On Thu, 22 Feb 2018 05:43:50 +0000 (UTC) Warner Losh <imp@FreeBSD.org> 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;
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20180222070713.1ba6f278>