Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 20 Feb 2002 20:35:00 -0800 (PST)
From:      Matthew Dillon <dillon@apollo.backplane.com>
To:        Terry Lambert <tlambert2@mindspring.com>
Cc:        Greg Lehey <grog@FreeBSD.ORG>, Jake Burkholder <jake@locore.ca>, "David O'Brien" <obrien@FreeBSD.ORG>, current@FreeBSD.ORG
Subject:   Re: Patch to improve mutex collision performance
Message-ID:  <200202210435.g1L4Z0H92642@apollo.backplane.com>
References:  <200202181912.g1IJCGK32122@apollo.backplane.com> <20020218114326.A98974@dragon.nuxi.com> <200202181951.g1IJpip33604@apollo.backplane.com> <20020218153807.E96115@locore.ca> <20020221111915.N65817@wantadilla.lemis.com> <200202210146.g1L1kqg91511@apollo.backplane.com> <3C746FC1.897E759C@mindspring.com>

next in thread | previous in thread | raw e-mail | index | archive | help

:Matthew Dillon wrote:
:>     I'm not interested in using P4.  I think it's a mistake.  That is, I
:>     think it is being severely overused.  At the very least it is preventing
:>     me from comitting simple things to -current because as far as I can tell
:>     when you add up the junk sitting in P4 it touches almost every file
:>     in the kernel tree.  Everything I've tried to work on has some hack
:>     sitting in P4 somewhere that somebody hasn't committed.
:
:By the same token, you have also stated:
:
:]     Well... try again.  If something ought to be compatible in a piecemeal
:]    commit and isn't, then something unexpected happened and you need to
:]    find out what it was.  Doing a full-on commit for something like the
:]    proc lock patch is far too dangerous.  It's just too large a patch set
:]    and we know from experience (cam, softupdates, etc...) that having a
:]    small handful of people testing a large private patch is not going to
:]    find all the bugs.
:
:How do you reconcile these divergent points of view?

    These are not divergent points of view.  I am saying quite clearly that
    the ucred code and proc-locking code can be committed in a piecemeal
    fashion.  In fact, good chunk of the proc locking code already has been
    with no ill effect on the tree - it might not be completely operational
    due to Giant, but just comitting it tests a great deal of infrastructure
    including potential lock order reversals and mismatched locks.  That's
    the whole point of doing things this way.

:What large scale changes are "OK", and what large scale changes
:are "too dangerous"?

    The best example I can think of is Julian's initial KSE commit, where
    he rearranged the proc structure.  The rearrangement touched a huge
    number of files and the commit had to be made all at once, not file by
    file, due to the structural changes. 

:Do you have a set of rules, that would let us look at a patch
:set and instantly decide which of these two categories the
:code fell into?
:
:I'm not trying to be a jerk, but not everything can be broken
:down into 1 line commits, and not everything can be broken down
:into 8 line commits, or 64 line commits, or 512 line commits,
:etc. (if you'll forgive my proof by induction).
:
:-- Terry

    This is getting a bit absurd.  I am arguing a general principle here,
    you are not contributing anything by stretching it into an irrational
    statement.  One line commits?  Oh come on!

    I will say that the work *I* am doing on -current is mostly piecemeal
    in nature.  I even expect the VM locking to wind up being piecemeal.
    Everything I have posted to date has been piecemeal.  For example,
    the ucred patchset I posted does not patch all the ucred functions,
    it just patched the read-only functions.  But as a side effect that
    gave me a basis to track down the other uses of Giant in the general
    syscall path.  That was a good demarkation point for me.  It is by
    no means the end... it is, as I have said, piecemeal.

    The result?  I was able to immediately note the use of Giant in
    trap.c (the ucred clearing code) as well as its use in userret(),
    plus I could test a few of the ucred functions like getuid() and test
    the Giant instrumentation.

    So you see, a piecemeal commit can have a great ability to move the
    development process forward.  When you spend weeks or months putting
    together an UBER-patch you do not get any of that... it's all delayed
    and when the patch finally goes in people wind up spending a lot of
    time testing the patch itself rather then working on the ramification
    of what the patch allows you to move on to.

					-Matt
					Matthew Dillon 
					<dillon@backplane.com>

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200202210435.g1L4Z0H92642>