[OpenAFS-devel] libafs not compiling on 2.6.12 due to software suspend changes

Sabin Iacob iacobs@exotic4.nipne.ro
Fri, 02 Sep 2005 14:37:24 +0300


This is a multi-part message in MIME format.
--------------000500040205020300010103
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

It appears that somewhere in the development process of 2.6.12 kernels 
the definition of refrigerator has changed to
void refrigerator(void)

Searching the changelogs got me to a page that is now available only 
from the google cache, which says, among other things:

author Christoph Lameter <christoph@lameter.com> Fri, 24 Jun 2005 23:13:50 -0700
committer Linus Torvalds <torvalds@ppc970.osdl.org> Sat, 25 Jun 2005 17:10:13 -0700

    [PATCH] Cleanup patch for process freezing

    1. Establish a simple API for process freezing defined in linux/include/sched.h:

       frozen(process)		Check for frozen process
       freezing(process)		Check if a process is being frozen
       freeze(process)		Tell a process to freeze (go to *refrigerator*)
       thaw_process(process)	Restart process
       frozen_process(process)	Process is frozen now

    2. Remove all references to PF_FREEZE and PF_FROZEN from all
       kernel sources except sched.h

    3. Fix numerous locations where try_to_freeze is manually done by a driver

    4. Remove the argument that is no longer necessary from two function calls.

    5. Some whitespace cleanup

    6. Clear potential race in *refrigerator* (provides an open window of PF_FREEZE
       cleared before setting PF_FROZEN, recalc_sigpending does not check
       PF_FROZEN).

    This patch does not address the problem of freeze_processes() violating the rule
    that a task may only modify its own flags by setting PF_FREEZE. This is not clean
    in an SMP environment. freeze(process) is therefore not SMP safe!


I am willing to get my hands dirty and provide the patch, if someone 
would give me some directions about detecting whether the old style 
(manually calling refrigerator) or the new style ( try_to_freeze() ) is 
required.

-- 
paranoia, n.:
        A healthy understanding of the way the universe works.
        


--------------000500040205020300010103
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: 7bit

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html;charset=UTF-8" http-equiv="Content-Type">
  <title></title>
</head>
<body bgcolor="#ffffff" text="#000000">
<font face="Verdana">It appears that somewhere in the development
process of 2.6.12 kernels the definition of refrigerator has changed to
<br>
void refrigerator(void)<br>
<br>
Searching the changelogs got me to a page that is now available only
from the google cache, which says, among other things:<br>
</font>
<pre>author Christoph Lameter <a class="moz-txt-link-rfc2396E" href="mailto:christoph@lameter.com">&lt;christoph@lameter.com&gt;</a> Fri, 24 Jun 2005 23:13:50 -0700
committer Linus Torvalds <a class="moz-txt-link-rfc2396E" href="mailto:torvalds@ppc970.osdl.org">&lt;torvalds@ppc970.osdl.org&gt;</a> Sat, 25 Jun 2005 17:10:13 -0700

    [PATCH] Cleanup patch for process freezing

    1. Establish a simple API for process freezing defined in linux/include/sched.h:

       frozen(process)		Check for frozen process
       freezing(process)		Check if a process is being frozen
       freeze(process)		Tell a process to freeze (go to <b
 style="color: black; background-color: rgb(255, 255, 102);">refrigerator</b>)
       thaw_process(process)	Restart process
       frozen_process(process)	Process is frozen now

    2. Remove all references to PF_FREEZE and PF_FROZEN from all
       kernel sources except sched.h

    3. Fix numerous locations where try_to_freeze is manually done by a driver

    4. Remove the argument that is no longer necessary from two function calls.

    5. Some whitespace cleanup

    6. Clear potential race in <b
 style="color: black; background-color: rgb(255, 255, 102);">refrigerator</b> (provides an open window of PF_FREEZE
       cleared before setting PF_FROZEN, recalc_sigpending does not check
       PF_FROZEN).

    This patch does not address the problem of freeze_processes() violating the rule
    that a task may only modify its own flags by setting PF_FREEZE. This is not clean
    in an SMP environment. freeze(process) is therefore not SMP safe!

</pre>
I am willing to get my hands dirty and provide the patch, if someone
would give me some directions about detecting whether the old style
(manually calling refrigerator) or the new style ( try_to_freeze() ) is
required.<br>
<br>
<pre class="moz-signature" cols="72">-- 
paranoia, n.:
        A healthy understanding of the way the universe works.
        
</pre>
</body>
</html>

--------------000500040205020300010103--