From: Greg Kroah-Hartman <gregkh@suse.de>
To: linux-kernel@vger.kernel.org,
Andrew Morton <akpm@linux-foundation.org>,
torvalds@linux-foundation.org, stable@kernel.org
Subject: Re: Linux 2.6.23.2
Date: Fri, 16 Nov 2007 10:39:55 -0800 [thread overview]
Message-ID: <20071116183955.GD9807@kroah.com> (raw)
In-Reply-To: <20071116183940.GC9807@kroah.com>
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain; charset=unknown-8bit, Size: 45669 bytes --]
diff --git a/Documentation/ja_JP/HOWTO b/Documentation/ja_JP/HOWTO
index 9f08dab..d9d832c 100644
--- a/Documentation/ja_JP/HOWTO
+++ b/Documentation/ja_JP/HOWTO
@@ -1,4 +1,4 @@
-NOTE:
+NOTE:
This is a version of Documentation/HOWTO translated into Japanese.
This document is maintained by Tsugikazu Shibata <tshibata@ab.jp.nec.com>
and the JF Project team <www.linux.or.jp/JF>.
@@ -11,14 +11,14 @@ for non English (read: Japanese) speakers and is not intended as a
fork. So if you have any comments or updates for this file, please try
to update the original English file first.
-Last Updated: 2007/07/18
+Last Updated: 2007/09/23
==================================
ããã¯ã
-linux-2.6.22/Documentation/HOWTO
+linux-2.6.23/Documentation/HOWTO
ã®å訳ã§ãã
翻訳å£ä½ï¼ JF ããã¸ã§ã¯ã < http://www.linux.or.jp/JF/ >
-翻訳æ¥ï¼ 2007/07/16
+翻訳æ¥ï¼ 2007/09/19
翻訳è
ï¼ Tsugikazu Shibata <tshibata at ab dot jp dot nec dot com>
æ ¡æ£è
ï¼ æ¾åãã <nbh--mats at nifty dot com>
å°æ é
å
¸ãã (Masanori Kobayasi) <zap03216 at nifty dot ne dot jp>
@@ -27,6 +27,7 @@ linux-2.6.22/Documentation/HOWTO
éå£ãã (Kenji Noguchi) <tokyo246 at gmail dot com>
æ²³å
ãã (Takayoshi Kochi) <t-kochi at bq dot jp dot nec dot com>
岩æ¬ãã (iwamoto) <iwamoto.kn at ncos dot nec dot co dot jp>
+ å
ç°ãã (Satoshi Uchida) <s-uchida at ap dot jp dot nec dot com>
==================================
Linux ã«ã¼ãã«éçºã®ããæ¹
@@ -40,7 +41,7 @@ Linux ã«ã¼ãã«éçºã³ãã¥ããã£ã¨å
±ã«æ´»åããããæ¹ãå¦ã
æå©ãã«ãªãã¾ãã
ããããã®ããã¥ã¡ã³ãã®ã©ãããå¤ããªã£ã¦ããå ´åã«ã¯ããã®ããã¥ã¡ã³
-ãã®æå¾ã«ãªã¹ãããã¡ã³ããã¼ã«ããããéã£ã¦ãã ããã
+ãã®æå¾ã«ãªã¹ãããã¡ã³ããã«ããããéã£ã¦ãã ããã
ã¯ããã«
---------
@@ -59,7 +60,7 @@ Linux ã«ã¼ãã«éçºã³ãã¥ããã£ã¨å
±ã«æ´»åããããæ¹ãå¦ã
ãã«éçºè
ã«ã¯å¿
è¦ã§ããã¢ã¼ããã¯ãã£åãã®ä½ã¬ãã«é¨åã®éçºãããã®
ã§ãªããã°ã(ã©ããªã¢ã¼ããã¯ãã£ã§ã)ã¢ã»ã³ããª(訳注: è¨èª)ã¯å¿
è¦ãã
ã¾ããã以ä¸ã®æ¬ã¯ãC è¨èªã®ååãªç¥èãä½å¹´ãã®çµé¨ã«åã£ã¦ä»£ãããã®
-ã§ã¯ããã¾ããããå°ãªãã¨ããªãã¡ã¬ã³ã¹ã¨ãã¦ã¯ããæ¬ã§ãã
+ã§ã¯ããã¾ããããå°ãªãã¨ããªãã¡ã¬ã³ã¹ã¨ãã¦ã¯è¯ãæ¬ã§ãã
- "The C Programming Language" by Kernighan and Ritchie [Prentice Hall]
-ãããã°ã©ãã³ã°è¨èªï¼£ç¬¬2çã(B.W. ã«ã¼ããã³/D.M. ãªããã¼è ç³ç°æ´ä¹
訳) [å
±ç«åºç]
- "Practical C Programming" by Steve Oualline [O'Reilly]
@@ -76,7 +77,7 @@ Linux ã«ã¼ãã«éçºã³ãã¥ããã£ã¨å
±ã«æ´»åããããæ¹ãå¦ã
ã¨ãã©ããã«ã¼ãã«ããã¼ã«ãã§ã¤ã³ã C è¨èªæ¡å¼µã«ç½®ãã¦ããåæãã©ã
ãªã£ã¦ããã®ããããã«ãããã¨ããããã¾ããæ®å¿µãªãã¨ã«æ±ºå®çãªãªãã¡
ã¬ã³ã¹ã¯åå¨ãã¾ãããæ
å ±ãå¾ãã«ã¯ãgcc ã® info ãã¼ã¸( info gcc )ã
-ã¿ã¦ãã ããã
+è¦ã¦ãã ããã
ããªãã¯æ¢åã®éçºã³ãã¥ããã£ã¨ä¸ç·ã«ä½æ¥ããæ¹æ³ãå¦ã¼ãã¨ãã¦ããã
ã¨ã«çæãã¦ãã ããããã®ã³ãã¥ããã£ã¯ãã³ã¼ãã£ã³ã°ãã¹ã¿ã¤ã«ã
@@ -92,7 +93,7 @@ Linux ã«ã¼ãã«éçºã³ãã¥ããã£ã¨å
±ã«æ´»åããããæ¹ãå¦ã
Linux ã«ã¼ãã«ã®ã½ã¼ã¹ã³ã¼ã㯠GPL ã©ã¤ã»ã³ã¹ã®ä¸ã§ãªãªã¼ã¹ããã¦ãã¾
ããã©ã¤ã»ã³ã¹ã®è©³ç´°ã«ã¤ãã¦ã¯ãã½ã¼ã¹ããªã¼ã®ã¡ã¤ã³ãã£ã¬ã¯ããªã«åå¨
-ãããCOPYING ã®ãã¡ã¤ã«ãã¿ã¦ãã ãããããã©ã¤ã»ã³ã¹ã«ã¤ãã¦ããã«è³ª
+ãããCOPYING ã®ãã¡ã¤ã«ãè¦ã¦ãã ãããããã©ã¤ã»ã³ã¹ã«ã¤ãã¦ããã«è³ª
åãããã°ãLinux Kernel ã¡ã¼ãªã³ã°ãªã¹ãã«è³ªåããã®ã§ã¯ãªããã©ãã
æ³å¾å®¶ã«ç¸è«ãã¦ãã ãããã¡ã¼ãªã³ã°ãªã¹ãã®äººéã¯æ³å¾å®¶ã§ã¯ãªããæ³ç
åé¡ã«ã¤ãã¦ã¯å½¼ãã®å£°æã¯ãã¦ã«ããã¹ãã§ã¯ããã¾ããã
@@ -109,7 +110,8 @@ Linux ã«ã¼ãã«ã½ã¼ã¹ããªã¼ã¯å¹
åºãç¯å²ã®ããã¥ã¡ã³ããå
æ°ããããã¥ã¡ã³ããã¡ã¤ã«ã追å ãããã¨ãå§ãã¾ãã
ã«ã¼ãã«ã®å¤æ´ããã«ã¼ãã«ãã¦ã¼ã¶ç©ºéã«å
¬éãã¦ããã¤ã³ã¿ã¼ãã§ã¤ã¹ã®
夿´ãå¼ãèµ·ããå ´åããã®å¤æ´ã説æããããã¥ã¢ã«ãã¼ã¸ã®ããããæ
å ±
-ãããã¥ã¢ã«ãã¼ã¸ã®ã¡ã³ãã mtk-manpages@gmx.net ã«éããã¨ãå§ãã¾ãã
+ãããã¥ã¢ã«ãã¼ã¸ã®ã¡ã³ãã mtk-manpages@gmx.net ã«éããã¨ãå§ãã¾
+ãã
以ä¸ã¯ã«ã¼ãã«ã½ã¼ã¹ããªã¼ã«å«ã¾ãã¦ããèªãã§ããã¹ããã¡ã¤ã«ã®ä¸è¦§ã§
ã-
@@ -117,7 +119,7 @@ Linux ã«ã¼ãã«ã½ã¼ã¹ããªã¼ã¯å¹
åºãç¯å²ã®ããã¥ã¡ã³ããå
README
ãã®ãã¡ã¤ã«ã¯ Linuxã«ã¼ãã«ã®ç°¡åãªèæ¯ã¨ã«ã¼ãã«ãè¨å®(訳注
configure )ããçæ(訳注 build )ããããã«å¿
è¦ãªãã¨ã¯ä½ããæ¸ãã
- ã¦ãã¾ããã«ã¼ãã«ã«é¢ãã¦åãã¦ã®äººã¯ããããã¹ã¿ã¼ãããã¨ããã§
+ ã¦ãã¾ããã«ã¼ãã«ã«é¢ãã¦åãã¦ã®äººã¯ããããã¹ã¿ã¼ãããã¨è¯ãã§
ãããã
Documentation/Changes
@@ -128,7 +130,7 @@ Linux ã«ã¼ãã«ã½ã¼ã¹ããªã¼ã¯å¹
åºãç¯å²ã®ããã¥ã¡ã³ããå
Documentation/CodingStyle
ãã㯠Linux ã«ã¼ãã«ã®ã³ã¼ãã£ã³ã°ã¹ã¿ã¤ã«ã¨èæ¯ã«ããçç±ãè¨è¿°
ãã¦ãã¾ããå
¨ã¦ã®æ°ããã³ã¼ãã¯ãã®ããã¥ã¡ã³ãã«ããã¬ã¤ãã©ã¤ã³
- ã«å¾ã£ã¦ãããã¨ãæå¾
ããã¦ãã¾ãã大é¨åã®ã¡ã³ããã¼ã¯ãããã®ã«ã¼
+ ã«å¾ã£ã¦ãããã¨ãæå¾
ããã¦ãã¾ãã大é¨åã®ã¡ã³ããã¯ãããã®ã«ã¼
ã«ã«å¾ã£ã¦ãããã®ã ããåãä»ããå¤ãã®äººã¯æ£ããã¹ã¿ã¤ã«ã®ã³ã¼ã
ã ããã¬ãã¥ã¼ãã¾ãã
@@ -168,16 +170,16 @@ Linux ã«ã¼ãã«ã½ã¼ã¹ããªã¼ã¯å¹
åºãç¯å²ã®ããã¥ã¡ã³ããå
æ¯æ´ãã¦ãã ããã
Documentation/ManagementStyle
- ãã®ããã¥ã¡ã³ã㯠Linux ã«ã¼ãã«ã®ã¡ã³ããã¼éãã©ãè¡åãããã
+ ãã®ããã¥ã¡ã³ã㯠Linux ã«ã¼ãã«ã®ã¡ã³ããéãã©ãè¡åãããã
å½¼ãã®ææ³ã®èæ¯ã«ããå
±æããã¦ããç²¾ç¥ã«ã¤ãã¦è¨è¿°ãã¦ãã¾ããã
ãã¯ã«ã¼ãã«éçºã®åå¿è
ãªãï¼ãããã¯ãåã«èå³ãããã ãã®äººã§ãï¼
- éè¦ã§ãããªããªããã®ããã¥ã¡ã³ãã¯ãã«ã¼ãã«ã¡ã³ããã¼éã®ç¬ç¹ãª
+ éè¦ã§ãããªããªããã®ããã¥ã¡ã³ãã¯ãã«ã¼ãã«ã¡ã³ããéã®ç¬ç¹ãª
è¡åã«ã¤ãã¦ã®å¤ãã®èª¤è§£ãæ··ä¹±ãè§£æ¶ããããã§ãã
Documentation/stable_kernel_rules.txt
ãã®ãã¡ã¤ã«ã¯ã©ã®ããã« stable ã«ã¼ãã«ã®ãªãªã¼ã¹ãè¡ããããã®ã«ã¼
ã«ãè¨è¿°ããã¦ãã¾ããããã¦ãããã®ãªãªã¼ã¹ã®ä¸ã®ã©ããã§å¤æ´ãå
- ãå
¥ãã¦ãããããå ´åã«ä½ãããã°ãããã示ããã¦ãã¾ãã
+ ãå
¥ãã¦ãããããå ´åã«ä½ãããã°è¯ããã示ããã¦ãã¾ãã
Documentation/kernel-docs.txt
ããã«ã¼ãã«éçºã«ä»éããå¤é¨ããã¥ã¡ã³ãã®ãªã¹ãã§ããããããªãã
@@ -218,9 +220,9 @@ web ãµã¤ãã«ã¯ãã³ã¼ãã®æ§æããµãã·ã¹ãã ãç¾å¨åå¨ãã
ããã«ã¯ãã¾ããã«ã¼ãã«ã®ã³ã³ãã¤ã«ã®ããæ¹ããããã®å½ã¦æ¹ãªã©ã®éæ¥
çãªåºæ¬æ
å ±ãè¨è¿°ããã¦ãã¾ãã
-ããªããã©ãããã¹ã¿ã¼ããã¦ãããããããªãããLinux ã«ã¼ãã«éçºã³ãã¥
+ããªããã©ãããã¹ã¿ã¼ããã¦è¯ããããããªãããLinux ã«ã¼ãã«éçºã³ãã¥
ããã£ã«åå ãã¦ä½ããããã¨ããããã¦ããå ´åã«ã¯ãLinux kernel
-Janitor's ããã¸ã§ã¯ãã«ããã°ããã§ããã -
+Janitor's ããã¸ã§ã¯ãã«ããã°è¯ãã§ããã -
http://janitor.kernelnewbies.org/
ããã¯ãã®ãããªã¹ã¿ã¼ããããã®ã«ãã£ã¦ã¤ãã®å ´æã§ããããã«ã¯ã
Linux ã«ã¼ãã«ã½ã¼ã¹ããªã¼ã®ä¸ã«å«ã¾ããããããã«ããä¿®æ£ããªããã°ãª
@@ -243,7 +245,7 @@ Linux ã«ã¼ãã«ã½ã¼ã¹ããªã¼ã®ä¸ã«å«ã¾ããããããã«ããä¿
èªå·±åç
§æ¹å¼ã§ãç´¢å¼ãã¤ãã web å½¢å¼ã§ãã½ã¼ã¹ã³ã¼ããåç
§ãããã¨ã
ã§ãã¾ãããã®ææ°ã®ç´ æ´ããã«ã¼ãã«ã³ã¼ãã®ãªãã¸ããªã¯ä»¥ä¸ã§è¦ã¤ãã
ã¾ã-
- http://sosdg.org/~coywolf/lxr/
+ http://sosdg.org/~qiyong/lxr/
éçºããã»ã¹
-----------------------
@@ -265,9 +267,9 @@ Linux ã«ã¼ãã«ã®éçºããã»ã¹ã¯ç¾å¨å¹¾ã¤ãã®ç°ãªãã¡ã¤ã³ã
以ä¸ã®ã¨ãã-
- æ°ããã«ã¼ãã«ããªãªã¼ã¹ãããç´å¾ã«ã2é±éã®ç¹å¥æéãè¨ãããã
- ãã®æéä¸ã«ãã¡ã³ããã¼é㯠Linus ã«å¤§ããªå·®åãéããã¨ãã§ãã¾
- ãããã®ãããªå·®åã¯é常 -mm ã«ã¼ãã«ã«æ°é±éå«ã¾ãã¦ãããããã§
- ãã 大ããªå¤æ´ã¯ git(ã«ã¼ãã«ã®ã½ã¼ã¹ç®¡çãã¼ã«ã詳細ã¯
+ ãã®æéä¸ã«ãã¡ã³ããé㯠Linus ã«å¤§ããªå·®åãéããã¨ãã§ãã¾ãã
+ ãã®ãããªå·®åã¯é常 -mm ã«ã¼ãã«ã«æ°é±éå«ã¾ãã¦ãããããã§ãã
+ 大ããªå¤æ´ã¯ git(ã«ã¼ãã«ã®ã½ã¼ã¹ç®¡çãã¼ã«ã詳細ã¯
http://git.or.cz/ åç
§) ã使ã£ã¦éãã®ã好ã¾ããããæ¹ã§ããããã
ããã¡ã¤ã«ã®å½¢å¼ã®ã¾ã¾éãã®ã§ãååã§ãã
@@ -285,6 +287,10 @@ Linux ã«ã¼ãã«ã®éçºããã»ã¹ã¯ç¾å¨å¹¾ã¤ãã®ç°ãªãã¡ã¤ã³ã
ã«å®å®ããç¶æ
ã«ããã¨å¤æããã¨ãã«ãªãªã¼ã¹ããã¾ããç®æ¨ã¯æ¯é±æ°
ãã -rc ã«ã¼ãã«ããªãªã¼ã¹ãããã¨ã§ãã
+ - 以ä¸ã® URL ã§å -rc ãªãªã¼ã¹ã«åå¨ããæ¢ç¥ã®å¾æ»ãåé¡ã®ãªã¹ã
+ ã追跡ããã¾ã-
+ http://kernelnewbies.org/known_regressions
+
- ãã®ããã»ã¹ã¯ã«ã¼ãã«ã ãæºåãã§ãããã¨èããããã¾ã§ç¶ç¶ãã¾
ãããã®ããã»ã¹ã¯ã ããã 6é±éç¶ç¶ãã¾ãã
@@ -331,8 +337,8 @@ Andrew ã¯åå¥ã®ãµãã·ã¹ãã ã«ã¼ãã«ããªã¼ã¨ããããå
¨ã¦é
linux-kernel ã¡ã¼ãªã³ã°ãªã¹ãã§åéããã夿°ã®ãããã¨åæã«ä¸ã¤ã«ã¾
ã¨ãã¾ãã
ãã®ããªã¼ã¯æ°æ©è½ã¨ããããæ¤è¨¼ãããå ´ã¨ãªãã¾ããããæéã®éããã
-ã -mm ã«å
¥ã£ã¦ä¾¡å¤ã証æãããããAndrew ããµãã·ã¹ãã ã¡ã³ããããã¡
-ã¤ã³ã©ã¤ã³ã¸å
¥ããããã« Linus ã«ããã·ã¥ãã¾ãã
+ã -mm ã«å
¥ã£ã¦ä¾¡å¤ã証æãããããAndrew ããµãã·ã¹ãã ã¡ã³ãããã
+ã¡ã¤ã³ã©ã¤ã³ã¸å
¥ããããã« Linus ã«ããã·ã¥ãã¾ãã
ã¡ã¤ã³ã«ã¼ãã«ããªã¼ã«å«ããããã« Linus ã«éãåã«ããã¹ã¦ã®æ°ãããã
ãã -mm ããªã¼ã§ãã¹ãããããã¨ãå¼·ãæ¨å¥¨ããã¾ãã
@@ -460,7 +466,7 @@ MAINTAINERS ãã¡ã¤ã«ã«ãªã¹ããããã¾ãã®ã§åç
§ãã¦ãã ãã
ãã-
å½¼ãã¯ããªãã®ãããã®è¡æ¯ã«ã³ã¡ã³ããå
¥ãããã®ã§ããã®ããã«ã¯ããã
ãããããã¾ãããããªãã®ã¡ã¼ã«ããã°ã©ã ã空ç½ãã¿ããå§ç¸®ããªããã
-ã«ç¢ºèªããæ¹ãããã§ããæåã®è¯ããã¹ãã¨ãã¦ã¯ãèªåã«ã¡ã¼ã«ãéã£ã¦
+ã«ç¢ºèªããæ¹ãè¯ãã§ããæåã®è¯ããã¹ãã¨ãã¦ã¯ãèªåã«ã¡ã¼ã«ãéã£ã¦
ã¿ã¦ããã®ããããèªåã§å½ã¦ã¦ã¿ããã¨ã§ããããããããã¾ãè¡ããªããª
ããããªãã®ã¡ã¼ã«ããã°ã©ã ãç´ãã¦ãããããæ£ããåãããã«å¤ããã¹
ãã§ãã
@@ -507,14 +513,14 @@ MAINTAINERS ãã¡ã¤ã«ã«ãªã¹ããããã¾ãã®ã§åç
§ãã¦ãã ãã
ã¨ãæ®éã®ãã¨ã§ããããã¯ããªãã®ããããåãå
¥ããããªãã¨ãããã¨ã§
㯠*ããã¾ãã*ãããã¦ããªãèªèº«ã«å対ãããã¨ãæå³ããã®ã§ã *ããã¾
ãã*ãåã«èªåã®ãããã«å¯¾ãã¦ææãããåé¡ãå
¨ã¦ä¿®æ£ãã¦åéããã°
-ããã®ã§ãã
+è¯ãã®ã§ãã
ã«ã¼ãã«ã³ãã¥ããã£ã¨ä¼æ¥çµç¹ã®ã¡ãã
-----------------------------------------------------------------
ã«ã¼ãã«ã³ãã¥ããã£ã¯å¤§é¨åã®ä¼çµ±çãªä¼ç¤¾ã®éçºç°å¢ã¨ã¯ç°ã£ãããæ¹ã§
-åãã¦ãã¾ãã以ä¸ã¯åé¡ãé¿ããããã«ã§ããã¨ãããã¨ã®ã®ãªã¹ãã§ã-
+åãã¦ãã¾ãã以ä¸ã¯åé¡ãé¿ããããã«ã§ããã¨è¯ããã¨ã®ãªã¹ãã§ã-
ããªãã®ææ¡ãã夿´ã«ã¤ãã¦è¨ãã¨ãã®ãã¾ãè¨ãæ¹ï¼
@@ -525,7 +531,7 @@ MAINTAINERS ãã¡ã¤ã«ã«ãªã¹ããããã¾ãã®ã§åç
§ãã¦ãã ãã
- "以ä¸ã¯ä¸é£ã®å°ããªããã群ã§ãã..."
- "ããã¯å
¸åçãªãã·ã³ã§ã®æ§è½ãåä¸ããã¾ã.."
- ãããæ¹ãããæªãè¨ãæ¹ï¼
+ ãããæ¹ãè¯ãæªãè¨ãæ¹ï¼
- ãã®ããæ¹ã§ AIX/ptx/Solaris ã§ã¯ã§ããã®ã§ãã§ããã¯ãã
- ç§ã¯ããã20å¹´ãã®éãã£ã¦ãããã ãã
@@ -575,10 +581,10 @@ Linux ã«ã¼ãã«ã³ãã¥ããã£ã¯ãä¸åº¦ã«å¤§éã®ã³ã¼ãã®å¡ãå
1) å°ãããããã¯ããªãã®ããããé©ç¨ãããè¦è¾¼ã¿ã大ãããã¾ããã«ã¼
ãã«ã®äººéã¯ããããæ£ãããã©ããã確èªããæéãå´åããããªãã
- ãã§ãã5è¡ã®ãããã¯ã¡ã³ããããã£ã1ç§è¦ãã ãã§é©ç¨ã§ãã¾ããã
- ããã500è¡ã®ãããã¯ãæ£ãããã¨ãã¬ãã¥ã¼ããã®ã«æ°æéããããã
- ããã¾ãã(æéã¯ãããã®ãµã¤ãºãªã©ã«ããææ°é¢æ°ã«æ¯ä¾ãã¦ãããã¾
- ã)
+ ãã§ãã5è¡ã®ãããã¯ã¡ã³ããããã£ã1ç§è¦ãã ãã§é©ç¨ã§ãã¾ãã
+ ãããã500è¡ã®ãããã¯ãæ£ãããã¨ãã¬ãã¥ã¼ããã®ã«æ°æéãããã
+ ãããã¾ãã(æéã¯ãããã®ãµã¤ãºãªã©ã«ããææ°é¢æ°ã«æ¯ä¾ãã¦ããã
+ ã¾ã)
å°ãããããã¯ä½ããã£ãã¨ãã«ãããã°ãã¨ã¦ãç°¡åã«ãªãã¾ãããã
ãã1å1ååãé¤ãã®ã¯ãã¨ã¦ã大ããªããããå½ã¦ãå¾ã«(ãã¤ãä½ãã
@@ -587,23 +593,23 @@ Linux ã«ã¼ãã«ã³ãã¥ããã£ã¯ãä¸åº¦ã«å¤§éã®ã³ã¼ãã®å¡ãå
2) å°ããããããéãã ãã§ãªããéãã¾ãã«ãæ¸ãç´ãã¦ãã·ã³ãã«ã«ã
ã(ãããã¯ãåã«é çªãå¤ããã ãã§ã)ãã¨ããã¨ã¦ãéè¦ã§ãã
-以ä¸ã¯ã«ã¼ãã«éçºè
ã® Al Viro ã®ãã¨ã話ãã§ãï¼
+以ä¸ã¯ã«ã¼ãã«éçºè
ã® Al Viro ã®ãã¨ã話ã§ãï¼
"çå¾ã®æ°å¦ã®å®¿é¡ãæ¡ç¹ããå
çã®ãã¨ãèãã¦ã¿ã¦ãã ãããå
- çã¯çå¾ãè§£ã«å°éããã¾ã§ã®è©¦è¡é¯èª¤ãã¿ããã¨ã¯æããªãã§ãã
- ããå
çã¯ç°¡æ½ãªæé«ã®è§£ãã¿ããã®ã§ããè¯ãçå¾ã¯ãããç¥ã£ã¦
+ çã¯çå¾ãè§£ã«å°éããã¾ã§ã®è©¦è¡é¯èª¤ãè¦ããã¨ã¯æããªãã§ãã
+ ããå
çã¯ç°¡æ½ãªæé«ã®è§£ãè¦ããã®ã§ããè¯ãçå¾ã¯ãããç¥ã£ã¦
ãããããã¦æçµè§£ã®åã®ä¸é使¥ãæåºãããã¨ã¯æ±ºãã¦ãªãã®ã§
ã"
- ã«ã¼ãã«éçºã§ãããã¯åãã§ããã¡ã³ããã¼éã¨ã¬ãã¥ã¼ã¢éã¯ã
- åé¡ã解決ããè§£ã®èå¾ã«ãªãæèããã»ã¹ãã¿ããã¨ã¯æãã¾ããã
- å½¼ãã¯åç´ã§ãããããªè§£æ±ºæ¹æ³ãã¿ããã®ã§ãã
+ ã«ã¼ãã«éçºã§ãããã¯åãã§ããã¡ã³ããéã¨ã¬ãã¥ã¼ã¢éã¯ã
+ åé¡ã解決ããè§£ã®èå¾ã«ãªãæèããã»ã¹ãè¦ããã¨ã¯æãã¾ããã
+ å½¼ãã¯åç´ã§ãããããªè§£æ±ºæ¹æ³ãè¦ããã®ã§ãã
ãããããªè§£ã説æããã®ã¨ãã³ãã¥ããã£ã¨å
±ã«ä»äºãããæªè§£æ±ºã®ä»äºã
è°è«ãããã¨ã®ãã©ã³ã¹ããã¼ãããã®ã¯é£ããããããã¾ããã
ã§ããããéçºããã»ã¹ã®æ©ææ®µéã§æ¹åã®ããã®ãã£ã¼ãããã¯ããããã
-ãã«ããã®ãããã§ããã夿´ç¹ãå°ããé¨åã«åå²ãã¦å
¨ä½ã§ã¯ã¾ã 宿ã
-ã¦ããªãä»äºã(é¨åçã«)åãè¾¼ãã§ããããããã«ãããã¨ããããã¨ã§ãã
+ãã«ããã®ãè¯ãã§ããã夿´ç¹ãå°ããé¨åã«åå²ãã¦å
¨ä½ã§ã¯ã¾ã 宿ã
+ã¦ããªãä»äºã(é¨åçã«)åãè¾¼ãã§ããããããã«ãããã¨ãè¯ããã¨ã§ãã
ã¾ããã§ãä¸ãã£ã¦ããªããã®ãã"å°æ¥ç´ã" ãããªãããããæ¬æµã«å«ã
ã¦ãããããã«éã£ã¦ããããã¯åãä»ããããªããã¨ãçè§£ãã¦ãã ããã
@@ -629,7 +635,7 @@ Linux ã«ã¼ãã«ã³ãã¥ããã£ã¯ãä¸åº¦ã«å¤§éã®ã³ã¼ãã®å¡ãå
- ãã¹ãçµæ
ããã«ã¤ãã¦å
¨ã¦ãã©ã®ããã«ããã¹ããã«ã¤ãã¦ã®è©³ç´°ã¯ã以ä¸ã®ããã¥ã¡
-ã³ãã® ChangeLog ã»ã¯ã·ã§ã³ãã¿ã¦ãã ãã-
+ã³ãã® ChangeLog ã»ã¯ã·ã§ã³ãè¦ã¦ãã ãã-
"The Perfect Patch"
http://www.zip.com.au/~akpm/linux/patches/stuff/tpp.txt
diff --git a/Makefile b/Makefile
index c244a02..c6d545c 100644
--- a/Makefile
+++ b/Makefile
@@ -1,7 +1,7 @@
VERSION = 2
PATCHLEVEL = 6
SUBLEVEL = 23
-EXTRAVERSION = .1
+EXTRAVERSION = .2
NAME = Arr Matey! A Hairy Bilge Rat!
# *DOCUMENTATION*
diff --git a/block/ll_rw_blk.c b/block/ll_rw_blk.c
index ed39313..026cf24 100644
--- a/block/ll_rw_blk.c
+++ b/block/ll_rw_blk.c
@@ -819,7 +819,6 @@ static int __blk_free_tags(struct blk_queue_tag *bqt)
retval = atomic_dec_and_test(&bqt->refcnt);
if (retval) {
BUG_ON(bqt->busy);
- BUG_ON(!list_empty(&bqt->busy_list));
kfree(bqt->tag_index);
bqt->tag_index = NULL;
@@ -931,7 +930,6 @@ static struct blk_queue_tag *__blk_queue_init_tags(struct request_queue *q,
if (init_tag_map(q, tags, depth))
goto fail;
- INIT_LIST_HEAD(&tags->busy_list);
tags->busy = 0;
atomic_set(&tags->refcnt, 1);
return tags;
@@ -982,6 +980,7 @@ int blk_queue_init_tags(struct request_queue *q, int depth,
*/
q->queue_tags = tags;
q->queue_flags |= (1 << QUEUE_FLAG_QUEUED);
+ INIT_LIST_HEAD(&q->tag_busy_list);
return 0;
fail:
kfree(tags);
@@ -1152,7 +1151,7 @@ int blk_queue_start_tag(struct request_queue *q, struct request *rq)
rq->tag = tag;
bqt->tag_index[tag] = rq;
blkdev_dequeue_request(rq);
- list_add(&rq->queuelist, &bqt->busy_list);
+ list_add(&rq->queuelist, &q->tag_busy_list);
bqt->busy++;
return 0;
}
@@ -1173,11 +1172,10 @@ EXPORT_SYMBOL(blk_queue_start_tag);
**/
void blk_queue_invalidate_tags(struct request_queue *q)
{
- struct blk_queue_tag *bqt = q->queue_tags;
struct list_head *tmp, *n;
struct request *rq;
- list_for_each_safe(tmp, n, &bqt->busy_list) {
+ list_for_each_safe(tmp, n, &q->tag_busy_list) {
rq = list_entry_rq(tmp);
if (rq->tag == -1) {
diff --git a/fs/locks.c b/fs/locks.c
index c795eaa..494f250 100644
--- a/fs/locks.c
+++ b/fs/locks.c
@@ -694,11 +694,20 @@ EXPORT_SYMBOL(posix_test_lock);
* Note: the above assumption may not be true when handling lock requests
* from a broken NFS client. But broken NFS clients have a lot more to
* worry about than proper deadlock detection anyway... --okir
+ *
+ * However, the failure of this assumption (also possible in the case of
+ * multiple tasks sharing the same open file table) also means there's no
+ * guarantee that the loop below will terminate. As a hack, we give up
+ * after a few iterations.
*/
+
+#define MAX_DEADLK_ITERATIONS 10
+
static int posix_locks_deadlock(struct file_lock *caller_fl,
struct file_lock *block_fl)
{
struct list_head *tmp;
+ int i = 0;
next_task:
if (posix_same_owner(caller_fl, block_fl))
@@ -706,6 +715,8 @@ next_task:
list_for_each(tmp, &blocked_list) {
struct file_lock *fl = list_entry(tmp, struct file_lock, fl_link);
if (posix_same_owner(fl, block_fl)) {
+ if (i++ > MAX_DEADLK_ITERATIONS)
+ return 0;
fl = fl->fl_next;
block_fl = fl;
goto next_task;
diff --git a/fs/proc/array.c b/fs/proc/array.c
index ee4814d..20d7ae4 100644
--- a/fs/proc/array.c
+++ b/fs/proc/array.c
@@ -351,7 +351,8 @@ static cputime_t task_utime(struct task_struct *p)
}
utime = (clock_t)temp;
- return clock_t_to_cputime(utime);
+ p->prev_utime = max(p->prev_utime, clock_t_to_cputime(utime));
+ return p->prev_utime;
}
static cputime_t task_stime(struct task_struct *p)
@@ -366,7 +367,8 @@ static cputime_t task_stime(struct task_struct *p)
stime = nsec_to_clock_t(p->se.sum_exec_runtime) -
cputime_to_clock_t(task_utime(p));
- return clock_t_to_cputime(stime);
+ p->prev_stime = max(p->prev_stime, clock_t_to_cputime(stime));
+ return p->prev_stime;
}
#endif
diff --git a/fs/splice.c b/fs/splice.c
index e95a362..02c39ae 100644
--- a/fs/splice.c
+++ b/fs/splice.c
@@ -1390,10 +1390,10 @@ static int pipe_to_user(struct pipe_inode_info *pipe, struct pipe_buffer *buf,
if (copy_to_user(sd->u.userptr, src + buf->offset, sd->len))
ret = -EFAULT;
+ buf->ops->unmap(pipe, buf, src);
out:
if (ret > 0)
sd->u.userptr += ret;
- buf->ops->unmap(pipe, buf, src);
return ret;
}
diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h
index b126c6f..d26bbb0 100644
--- a/include/linux/blkdev.h
+++ b/include/linux/blkdev.h
@@ -356,7 +356,6 @@ enum blk_queue_state {
struct blk_queue_tag {
struct request **tag_index; /* map of busy tags */
unsigned long *tag_map; /* bit map of free/busy tags */
- struct list_head busy_list; /* fifo list of busy tags */
int busy; /* current depth */
int max_depth; /* what we will send to device */
int real_max_depth; /* what the array can hold */
@@ -451,6 +450,7 @@ struct request_queue
unsigned int dma_alignment;
struct blk_queue_tag *queue_tags;
+ struct list_head tag_busy_list;
unsigned int nr_sorted;
unsigned int in_flight;
diff --git a/include/linux/sched.h b/include/linux/sched.h
index 313c6b6..f509fbd 100644
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
@@ -1022,6 +1022,7 @@ struct task_struct {
unsigned int rt_priority;
cputime_t utime, stime;
+ cputime_t prev_utime, prev_stime;
unsigned long nvcsw, nivcsw; /* context switch counts */
struct timespec start_time; /* monotonic time */
struct timespec real_start_time; /* boot based time */
diff --git a/kernel/fork.c b/kernel/fork.c
index 33f12f4..f299d45 100644
--- a/kernel/fork.c
+++ b/kernel/fork.c
@@ -1045,6 +1045,8 @@ static struct task_struct *copy_process(unsigned long clone_flags,
p->utime = cputime_zero;
p->stime = cputime_zero;
+ p->prev_utime = cputime_zero;
+ p->prev_stime = cputime_zero;
#ifdef CONFIG_TASK_XACCT
p->rchar = 0; /* I/O counter: bytes read */
diff --git a/kernel/futex_compat.c b/kernel/futex_compat.c
index 2c2e295..f938c23 100644
--- a/kernel/futex_compat.c
+++ b/kernel/futex_compat.c
@@ -29,6 +29,15 @@ fetch_robust_entry(compat_uptr_t *uentry, struct robust_list __user **entry,
return 0;
}
+static void __user *futex_uaddr(struct robust_list *entry,
+ compat_long_t futex_offset)
+{
+ compat_uptr_t base = ptr_to_compat(entry);
+ void __user *uaddr = compat_ptr(base + futex_offset);
+
+ return uaddr;
+}
+
/*
* Walk curr->robust_list (very carefully, it's a userspace list!)
* and mark any locks found there dead, and notify any waiters.
@@ -75,11 +84,13 @@ void compat_exit_robust_list(struct task_struct *curr)
* A pending lock might already be on the list, so
* dont process it twice:
*/
- if (entry != pending)
- if (handle_futex_death((void __user *)entry + futex_offset,
- curr, pi))
- return;
+ if (entry != pending) {
+ void __user *uaddr = futex_uaddr(entry,
+ futex_offset);
+ if (handle_futex_death(uaddr, curr, pi))
+ return;
+ }
if (rc)
return;
uentry = next_uentry;
@@ -93,9 +104,11 @@ void compat_exit_robust_list(struct task_struct *curr)
cond_resched();
}
- if (pending)
- handle_futex_death((void __user *)pending + futex_offset,
- curr, pip);
+ if (pending) {
+ void __user *uaddr = futex_uaddr(pending, futex_offset);
+
+ handle_futex_death(uaddr, curr, pip);
+ }
}
asmlinkage long
diff --git a/kernel/lockdep.c b/kernel/lockdep.c
index 734da57..42ae4a5 100644
--- a/kernel/lockdep.c
+++ b/kernel/lockdep.c
@@ -1521,7 +1521,7 @@ cache_hit:
}
static int validate_chain(struct task_struct *curr, struct lockdep_map *lock,
- struct held_lock *hlock, int chain_head)
+ struct held_lock *hlock, int chain_head, u64 chain_key)
{
/*
* Trylock needs to maintain the stack of held locks, but it
@@ -1534,7 +1534,7 @@ static int validate_chain(struct task_struct *curr, struct lockdep_map *lock,
* graph_lock for us)
*/
if (!hlock->trylock && (hlock->check == 2) &&
- lookup_chain_cache(curr->curr_chain_key, hlock->class)) {
+ lookup_chain_cache(chain_key, hlock->class)) {
/*
* Check whether last held lock:
*
@@ -1576,7 +1576,7 @@ static int validate_chain(struct task_struct *curr, struct lockdep_map *lock,
#else
static inline int validate_chain(struct task_struct *curr,
struct lockdep_map *lock, struct held_lock *hlock,
- int chain_head)
+ int chain_head, u64 chain_key)
{
return 1;
}
@@ -2450,11 +2450,11 @@ static int __lock_acquire(struct lockdep_map *lock, unsigned int subclass,
chain_head = 1;
}
chain_key = iterate_chain_key(chain_key, id);
- curr->curr_chain_key = chain_key;
- if (!validate_chain(curr, lock, hlock, chain_head))
+ if (!validate_chain(curr, lock, hlock, chain_head, chain_key))
return 0;
+ curr->curr_chain_key = chain_key;
curr->lockdep_depth++;
check_chain_key(curr);
#ifdef CONFIG_DEBUG_LOCKDEP
diff --git a/kernel/params.c b/kernel/params.c
index 4e57732..5e5651f 100644
--- a/kernel/params.c
+++ b/kernel/params.c
@@ -595,13 +595,16 @@ static void __init param_sysfs_builtin(void)
for (i=0; i < __stop___param - __start___param; i++) {
char *dot;
+ size_t max_name_len;
kp = &__start___param[i];
+ max_name_len =
+ min_t(size_t, MAX_KBUILD_MODNAME, strlen(kp->name));
- /* We do not handle args without periods. */
- dot = memchr(kp->name, '.', MAX_KBUILD_MODNAME);
+ dot = memchr(kp->name, '.', max_name_len);
if (!dot) {
- DEBUGP("couldn't find period in %s\n", kp->name);
+ DEBUGP("couldn't find period in first %d characters "
+ "of %s\n", MAX_KBUILD_MODNAME, kp->name);
continue;
}
name_len = dot - kp->name;
diff --git a/kernel/softlockup.c b/kernel/softlockup.c
index 708d488..e557c44 100644
--- a/kernel/softlockup.c
+++ b/kernel/softlockup.c
@@ -80,10 +80,11 @@ void softlockup_tick(void)
print_timestamp = per_cpu(print_timestamp, this_cpu);
/* report at most once a second */
- if (print_timestamp < (touch_timestamp + 1) ||
- did_panic ||
- !per_cpu(watchdog_task, this_cpu))
+ if ((print_timestamp >= touch_timestamp &&
+ print_timestamp < (touch_timestamp + 1)) ||
+ did_panic || !per_cpu(watchdog_task, this_cpu)) {
return;
+ }
/* do not print during early bootup: */
if (unlikely(system_state != SYSTEM_RUNNING)) {
diff --git a/mm/filemap.c b/mm/filemap.c
index 15c8413..14ca63f 100644
--- a/mm/filemap.c
+++ b/mm/filemap.c
@@ -1312,7 +1312,7 @@ int filemap_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
size = (i_size_read(inode) + PAGE_CACHE_SIZE - 1) >> PAGE_CACHE_SHIFT;
if (vmf->pgoff >= size)
- goto outside_data_content;
+ return VM_FAULT_SIGBUS;
/* If we don't want any read-ahead, don't bother */
if (VM_RandomReadHint(vma))
@@ -1389,7 +1389,7 @@ retry_find:
if (unlikely(vmf->pgoff >= size)) {
unlock_page(page);
page_cache_release(page);
- goto outside_data_content;
+ return VM_FAULT_SIGBUS;
}
/*
@@ -1400,15 +1400,6 @@ retry_find:
vmf->page = page;
return ret | VM_FAULT_LOCKED;
-outside_data_content:
- /*
- * An external ptracer can access pages that normally aren't
- * accessible..
- */
- if (vma->vm_mm == current->mm)
- return VM_FAULT_SIGBUS;
-
- /* Fall through to the non-read-ahead case */
no_cached_page:
/*
* We're only likely to ever get here if MADV_RANDOM is in
diff --git a/mm/page-writeback.c b/mm/page-writeback.c
index 4472036..97ddc58 100644
--- a/mm/page-writeback.c
+++ b/mm/page-writeback.c
@@ -672,8 +672,10 @@ retry:
ret = (*writepage)(page, wbc, data);
- if (unlikely(ret == AOP_WRITEPAGE_ACTIVATE))
+ if (unlikely(ret == AOP_WRITEPAGE_ACTIVATE)) {
unlock_page(page);
+ ret = 0;
+ }
if (ret || (--(wbc->nr_to_write) <= 0))
done = 1;
if (wbc->nonblocking && bdi_write_congested(bdi)) {
diff --git a/mm/shmem.c b/mm/shmem.c
index fcd19d3..95558e4 100644
--- a/mm/shmem.c
+++ b/mm/shmem.c
@@ -916,6 +916,21 @@ static int shmem_writepage(struct page *page, struct writeback_control *wbc)
struct inode *inode;
BUG_ON(!PageLocked(page));
+ /*
+ * shmem_backing_dev_info's capabilities prevent regular writeback or
+ * sync from ever calling shmem_writepage; but a stacking filesystem
+ * may use the ->writepage of its underlying filesystem, in which case
+ * we want to do nothing when that underlying filesystem is tmpfs
+ * (writing out to swap is useful as a response to memory pressure, but
+ * of no use to stabilize the data) - just redirty the page, unlock it
+ * and claim success in this case. AOP_WRITEPAGE_ACTIVATE, and the
+ * page_mapped check below, must be avoided unless we're in reclaim.
+ */
+ if (!wbc->for_reclaim) {
+ set_page_dirty(page);
+ unlock_page(page);
+ return 0;
+ }
BUG_ON(page_mapped(page));
mapping = page->mapping;
diff --git a/mm/slub.c b/mm/slub.c
index addb20a..c1f2fda 100644
--- a/mm/slub.c
+++ b/mm/slub.c
@@ -1501,28 +1501,8 @@ new_slab:
page = new_slab(s, gfpflags, node);
if (page) {
cpu = smp_processor_id();
- if (s->cpu_slab[cpu]) {
- /*
- * Someone else populated the cpu_slab while we
- * enabled interrupts, or we have gotten scheduled
- * on another cpu. The page may not be on the
- * requested node even if __GFP_THISNODE was
- * specified. So we need to recheck.
- */
- if (node == -1 ||
- page_to_nid(s->cpu_slab[cpu]) == node) {
- /*
- * Current cpuslab is acceptable and we
- * want the current one since its cache hot
- */
- discard_slab(s, page);
- page = s->cpu_slab[cpu];
- slab_lock(page);
- goto load_freelist;
- }
- /* New slab does not fit our expectations */
+ if (s->cpu_slab[cpu])
flush_slab(s, s->cpu_slab[cpu], cpu);
- }
slab_lock(page);
SetSlabFrozen(page);
s->cpu_slab[cpu] = page;
next prev parent reply other threads:[~2007-11-16 18:42 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-11-16 18:37 Linux 2.6.23.8 Greg Kroah-Hartman
2007-11-16 18:38 ` Greg Kroah-Hartman
2007-11-16 18:39 ` Linux 2.6.23.2 Greg Kroah-Hartman
2007-11-16 18:39 ` Greg Kroah-Hartman [this message]
2007-11-16 19:35 ` Mark Lord
2007-11-16 19:39 ` Matti Aarnio
2007-11-16 19:57 ` Matt Mackall
2007-11-16 23:35 ` David Woodhouse
2007-11-18 1:38 ` Krzysztof Halasa
2007-11-16 20:10 ` Greg KH
2007-11-16 18:44 ` Linux 2.6.23.3 Greg Kroah-Hartman
2007-11-16 18:44 ` Greg Kroah-Hartman
2007-11-16 23:15 ` Michael Tokarev
2007-11-17 1:03 ` Greg KH
2007-11-16 18:46 ` Linux 2.6.23.4 Greg Kroah-Hartman
2007-11-16 18:46 ` Greg Kroah-Hartman
2007-11-16 18:47 ` Linux 2.6.23.5 Greg Kroah-Hartman
2007-11-16 18:47 ` Greg Kroah-Hartman
2007-11-16 18:48 ` Linux 2.6.23.6 Greg Kroah-Hartman
2007-11-16 18:49 ` Greg Kroah-Hartman
2007-11-16 18:50 ` Linux 2.6.23.7 Greg Kroah-Hartman
2007-11-16 18:50 ` Greg Kroah-Hartman
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=20071116183955.GD9807@kroah.com \
--to=gregkh@suse.de \
--cc=akpm@linux-foundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=stable@kernel.org \
--cc=torvalds@linux-foundation.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.