public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Paul Jackson <pj@sgi.com>
To: "Paul Menage" <menage@google.com>
Cc: rakib.mullick@gmail.com, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] Removes extra checking in kernel/cpuset.c
Date: Thu, 31 Jul 2008 14:13:28 -0500	[thread overview]
Message-ID: <20080731141328.0e2f4bce.pj@sgi.com> (raw)
In-Reply-To: <6599ad830807311009o4275c0d0k84d4a5d4eadc3f41@mail.gmail.com>

Paul M wrote:
> True, but if top_cpuset.cpus_allowed doesn't intersect with
> cpu_online_map then maybe we have other problems?

Good point.

... if I did agree to this patch, there are two nits that would have
to be fixed, and the patch resubmitted:

 1) The file pathnames should be one level deeper.  As stated in
    Documentation/applying-patches.txt:

	This means that paths to files inside the patch file contain the name of the
	kernel source directories it was generated against (or some other directory
	names like "a/" and "b/").

    This patch has:

	--- kernel/cpuset.c.orig	2008-07-31 17:03:34.000000000 +0600
	+++ kernel/cpuset.c	2008-07-31 21:33:34.000000000 +0600

    There needs to be one more level of path, as in:

	--- a/kernel/cpuset.c	2008-07-31 17:03:34.000000000 +0600
	+++ b/kernel/cpuset.c	2008-07-31 21:33:34.000000000 +0600

    I prefer to use specific directory names here, reflecting the
    actual kernel version used in the development, as in:

	--- 2.6.27-rc1-mm1.orig/kernel/cpuset.c	2008-07-31 17:03:34.000000000 +0600
	+++ 2.6.27-rc1-mm1/kernel/cpuset.c	2008-07-31 21:33:34.000000000 +0600

    (though "2.6.27-rc1-mm1" is not the actual version that was
    used in composing this patch -- I don't what version was used.)

 2) The spacing of the "else" should place it on the same line as the
    preceding closing "}" from the preceding "if (...) { ... }", as in:

        if (cs) {
                while (!cpus_intersects(cs->cpus_allowed, cpu_online_map))
                        cs = cs->parent;
                cpus_and(*pmask, cs->cpus_allowed, cpu_online_map);
        } else

    As submitted, the "else" was on the next line, by itself.


However ... I still don't like the patch all that much.  Granted, it
seems to save a few bytes of kernel text space (11 bytes on my x86_64
build), which is always tempting.

My problem with the patch is that it entangles the logic a (slight)
little bit more.  This can be seen in the above observation of Paul M,
which is -needed- in the case of the new code to prove that the kernel
can't crash here, but is not needed in the case of the old code to help
prove that.

I work very hard in code to minimize the special cases and conditions
that need to be in affect for each code statement.  Doing so makes for
more robust code, that is easier to understand, and less likely to get
broken by some future change.

I am presuming here that this code change was motivated by reading the
source code and noticing that it resulted in some non-essential runtime
checks for "cs" not being NULL.  If this proposed change was motivated
by actual performance analysis -- some real life need to optimize this
code path more than I ever imagined it needed to be optimized, then my
bias would change, toward accepting this patch.

-- 
                  I won't rest till it's the best ...
                  Programmer, Linux Scalability
                  Paul Jackson <pj@sgi.com> 1.940.382.4214

  reply	other threads:[~2008-07-31 19:13 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-07-31 15:46 [PATCH] Removes extra checking in kernel/cpuset.c Rakib Mullick
2008-07-31 16:15 ` Paul Jackson
2008-07-31 17:09   ` Paul Menage
2008-07-31 19:13     ` Paul Jackson [this message]
     [not found] <aVIzQ-Oh-23@gated-at.bofh.it>
2008-07-31 18:16 ` James Kosin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20080731141328.0e2f4bce.pj@sgi.com \
    --to=pj@sgi.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=menage@google.com \
    --cc=rakib.mullick@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox