<wave> - ok mike, I'm looking at it..   Allow me a short while to beat my
head against a wall for a bit to get it into readahead mode...


On Wed, Jun 14, 2017 at 3:56 AM, Mike Belopuhov <m...@belopuhov.com> wrote:

> On Thu, Jun 08, 2017 at 11:55 +0200, Mike Belopuhov wrote:
> > On Wed, Jun 07, 2017 at 23:04 -0500, Amit Kulkarni wrote:
> > > On Wed, 7 Jun 2017 21:27:27 -0500
> > > Amit Kulkarni <amit.o...@gmail.com> wrote:
> > >
> > > > On Thu, 8 Jun 2017 01:57:25 +0200
> > > > Mike Belopuhov <m...@belopuhov.com> wrote:
> > > >
> > > > > On Wed, Jun 07, 2017 at 18:35 -0500, Amit Kulkarni wrote:
> > > > > > Wow, please get this in!!!
> > > > > >
> > > > > > This fixes cvs update on hard disks, to go much much faster.
> When I am
> > > > > > updating the entire set of cvs trees: www, src, xenocara, ports,
> I can
> > > > > > still use firefox and have it perfectly usable. There's a night
> and
> > > > > > day improvement, before and after. Thanks for debugging and
> fixing
> > > > > > this.
> > > > > >
> > > > >
> > > > > What kind of broken hardware do you have that this diff helps you?
> > > > > Can you show us your dmesg?
> > > > >
> > >
> > > Please ignore previous dmesg, it was incomplete.
> > >
> >
> > Are you 100% sure this diff changes anything for you?
> > Can you please try the one below.  It adds a printf.
> >
>
> As you all might have gathered by now Amit has jumped the gun
> but was wrong to do so.  His setup is not affected by this change.
> That was expected so please don't get distracted by this as I'm
> still looking forward to replies to the original set of changes.
> beck@?
>
> > diff --git sys/kern/vfs_bio.c sys/kern/vfs_bio.c
> > index 95bc80bc0e6..9316e6e0eb2 100644
> > --- sys/kern/vfs_bio.c
> > +++ sys/kern/vfs_bio.c
> > @@ -534,10 +534,27 @@ bread_cluster_callback(struct buf *bp)
> >                */
> >               buf_fix_mapping(bp, newsize);
> >               bp->b_bcount = newsize;
> >       }
> >
> > +     /* Invalidate read-ahead buffers if read short */
> > +     if (bp->b_resid > 0) {
> > +             printf("read %ld resid %ld\n", bp->b_bcount, bp->b_resid);
> > +             for (i = 0; xbpp[i] != NULL; i++)
> > +                     continue;
> > +             for (i = i - 1; i != 0; i--) {
> > +                     if (xbpp[i]->b_bufsize <= bp->b_resid) {
> > +                             bp->b_resid -= xbpp[i]->b_bufsize;
> > +                             SET(xbpp[i]->b_flags, B_INVAL);
> > +                     } else if (bp->b_resid > 0) {
> > +                             bp->b_resid = 0;
> > +                             SET(xbpp[i]->b_flags, B_INVAL);
> > +                     } else
> > +                             break;
> > +             }
> > +     }
> > +
> >       for (i = 1; xbpp[i] != 0; i++) {
> >               if (ISSET(bp->b_flags, B_ERROR))
> >                       SET(xbpp[i]->b_flags, B_INVAL | B_ERROR);
> >               biodone(xbpp[i]);
> >       }
>
>

Reply via email to