Linux 2.6.30 釋出

jollen 發表於 June 16, 2009 10:56 AM

Linux 2.6.30於2009年6月9日釋出,Linux kernel的發展進入了Linux 2.6.3x的時代。最近一年的 Linux 2.6核心發展有相當重大的進展,除了幾個知名大廠不斷貢獻程式碼外,新產品的開發,也帶動Linux kernel的快速發展。

Linux 2.6.30加入了新的filesystem:


一種log-structured filesystem,由John K. Ousterhout與Fred Douglis於1988年提出的設計,主要針對high write throughput的應用。

2. POHMELFS (Parallel Optimized Host Message Exchange Layered File System)


3. DST(Distributed STorage)


4. EXOFS(Object-Based Storage Devices)

支援OSD protocol的檔案系統。

5. FS-Cache

這是一個網路檔案系統(networking filesystem)的cache layer,FS-Cache可以將網路檔案系統的資料 cache 在磁碟裡。


另外,Intel也貢獻了fastboot(快速開機)程式碼,過去kernel在開機時花費許多時間在處理 I/O 上,例如:儲存裝置的I/O,由Intel貢獻的fastboot以asynchronous function call的觀念解決此問題。其原理在kernel/async.c裡的註解有很清楚的說明:

14 /*
16 Goals and Theory of Operation
18 The primary goal of this feature is to reduce the kernel boot time,
19 by doing various independent hardware delays and discovery operations
20 decoupled and not strictly serialized.
22 More specifically, the asynchronous function call concept allows
23 certain operations (primarily during system boot) to happen
24 asynchronously, out of order, while these operations still
25 have their externally visible parts happen sequentially and in-order.
26 (not unlike how out-of-order CPUs retire their instructions in order)
28 Key to the asynchronous function call implementation is the concept of
29 a "sequence cookie" (which, although it has an abstracted type, can be
30 thought of as a monotonically incrementing number).
32 The async core will assign each scheduled event such a sequence cookie and
33 pass this to the called functions.
35 The asynchronously called function should before doing a globally visible
36 operation, such as registering device numbers, call the
37 async_synchronize_cookie() function and pass in its own cookie. The
38 async_synchronize_cookie() function will make sure that all asynchronous
39 operations that were scheduled prior to the operation corresponding with the
40 cookie have completed.
42 Subsystem/driver initialization code that scheduled asynchronous probe
43 functions, but which shares global resources with other drivers/subsystems
44 that do not use the asynchronous call feature, need to do a full
45 synchronization with the async_synchronize_full() function, before returning
46 from their init function. This is to maintain strict ordering between the
47 asynchronous and synchronous parts of the kernel.
49 */

關於 fastboot 的做法,在LWN上的一篇文章[An asynchronous function call infrastructure]有很不錯的介紹。

Red Hat也貢獻了二個新的system call:preadv()與pwritev()。其他更多Linux 2.6.30的變更,可參考[kernelnewbies]上的說明。

Jollen's Blog 使用 Github issues 與讀者交流討論。請點擊上方的文章專屬 issue,或 open a new issue

您可透過電子郵件,或是 Linkedin 與我連絡。更歡迎使用微信,請搜尋 WeChat ID:jollentw