OSDN Git Service

Release docs/kernel-docs-2.6/filesystems/exofs.txt [JF:20113]
authorMasanori Kobayasi <yasikoba@users.sourceforge.jp>
Wed, 5 Sep 2012 16:03:38 +0000 (01:03 +0900)
committerMasanori Kobayasi <yasikoba@users.sourceforge.jp>
Wed, 5 Sep 2012 16:03:38 +0000 (01:03 +0900)
docs/kernel-docs-2.6/filesystems/exofs.txt [new file with mode: 0644]
docs/kernel-docs-2.6/filesystems/exofs.txt.info [new file with mode: 0644]
lists/kdoc-2.6-reserved.list
www/news.m4

diff --git a/docs/kernel-docs-2.6/filesystems/exofs.txt b/docs/kernel-docs-2.6/filesystems/exofs.txt
new file mode 100644 (file)
index 0000000..ef35644
--- /dev/null
@@ -0,0 +1,341 @@
+=========================================================
+¤³¤ì¤Ï¡¢
+Linux-3.4.1/Documentation/filesystems/exofs.txt ¤ÎÏÂÌõ¤Ç¤¹¡£
+ËÝÌõÃÄÂΡ§ JF ¥×¥í¥¸¥§¥¯¥È < http://linuxjf.sourceforge.jp/ >
+¹¹¿·Æü ¡§ 2012/09/03
+ËÝÌõ¼Ô ¡§ Seiji Kaneko < skaneko at a2 dot mbn dot or dot jp >
+ººÆɼԠ¡§ Masanori Kobayasi < zap03216 at nifty dot ne dot jp >
+=========================================================
+===============================================================================
+#WHAT IS EXOFS?
+EXOFS ¤È¤Ï²¿¤«
+===============================================================================
+
+#exofs is a file system that uses an OSD and exports the API of a normal Linux
+#file system. Users access exofs like any other local file system, and exofs
+#will in turn issue commands to the local OSD initiator.
+exofs ¤È¤Ï OSD ¤òÍѤ¤¡¢Ä̾ï¤Î Linux ¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Î API ¤ò¸ø³«¤·¤¿¥Õ
+¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Ç¤¹¡£exofs ¤ËÂФ¹¤ë¥æ¡¼¥¶¥¢¥¯¥»¥¹¤Ï¾¤Î¥í¡¼¥«¥ë¥Õ¥¡¥¤¥ë¥·
+¥¹¥Æ¥à¤Ø¤Î¥¢¥¯¥»¥¹¤ÈƱ¤¸¤è¤¦¤Ë¹Ô¤¤¡¢exofs ¤Ï¤½¤Î¥¢¥¯¥»¥¹¤ò¥í¡¼¥«¥ë¤Î OSD
+¥¤¥Ë¥·¥¨¡¼¥¿¤Ø¤Î¥³¥Þ¥ó¥É¤È¤·¤Æ¼Â¹Ô¤·¤Þ¤¹¡£
+
+#OSD is a new T10 command set that views storage devices not as a large/flat
+#array of sectors but as a container of objects, each having a length, quota,
+#time attributes and more. Each object is addressed by a 64bit ID, and is
+#contained in a 64bit ID partition. Each object has associated attributes
+#attached to it, which are integral part of the object and provide metadata about
+#the object. The standard defines some common obligatory attributes, but user
+#attributes can be added as needed.
+OSD ¤È¤Ï¡¢¿·¤·¤¤ T10 ¥³¥Þ¥ó¥É¥»¥Ã¥È¤Ç¡¢¥¹¥È¥ì¡¼¥¸¥Ç¥Ð¥¤¥¹¤òµðÂç¤Ç¥Õ¥é¥Ã
+¥È¤Ê¥»¥¯¥¿¤ÎÇÛÎó¤È¤·¤Æ¤Ç¤Ï¤Ê¤¯¡¢¥µ¥¤¥º¤ä¥¯¥ª¡¼¥¿¤ä»þ´Ö´Ø·¸¤Î°À­¤Ê¤É¤ò»ý
+¤Ã¤¿¥ª¥Ö¥¸¥§¥¯¥È¤Î³ÊǼÀè¤È¤·¤Æ°·¤¦¤â¤Î¤Ç¤¹¡£³Æ¥ª¥Ö¥¸¥§¥¯¥È¤Ï 64 ¥Ó¥Ã¥È¤Î
+¼±Ê̻Ҥǥ¢¥É¥ì¥¹¤µ¤ì¡¢64 bit ¼±Ê̻Ҥò¤â¤Ä¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤Ë´Þ¤Þ¤ì¤Þ¤¹¡£
+³Æ¥ª¥Ö¥¸¥§¥¯¥È¤Ë¤Ï´ØÏ¢ÉÕ¤±¤é¤ì¤¿ÉÕ°°À­¤¬Éղ䵤졢¤³¤Î°À­¤Ï¥ª¥Ö¥¸¥§¥¯
+¥È¤ËÅý¹ç¤µ¤ì¤¿¥ª¥Ö¥¸¥§¥¯¥È¤Î°ìÉô¤È¤·¤Æ¡¢¤½¤Î¥á¥¿¥Ç¡¼¥¿¤ò³ÊǼ¤·¤Þ¤¹¡£
+ɸ½à¤Ë¤Ï´ö¤Ä¤«¤Î¶¦Ä̤Îɬ¿Ü°À­¤¬ÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤¹¤¬¡¢É¬Íפ˱þ¤¸¤Æ¥æ¡¼¥¶Äê
+µÁ°À­¤ò²Ã¤¨¤ë¤³¤È¤â²Äǽ¤Ç¤¹¡£
+
+===============================================================================
+#ENVIRONMENT
+Æ°ºî´Ä¶­
+===============================================================================
+
+#To use this file system, you need to have an object store to run it on.  You
+#may download a target from:
+¤³¤Î¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤ò»È¤¦¤Ë¤Ï¡¢¤³¤Î¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤ÇÍѤ¤¤ë¤¿¤á¤Î¥ª¥Ö¥¸
+¥§¥¯¥È¥¹¥È¥¢¤¬É¬ÍפǤ¹¡£¥¿¡¼¥²¥Ã¥È¤ò°Ê²¼¤«¤é¥À¥¦¥ó¥í¡¼¥É¤·¤Æ»È¤¦¤³¤È¤â²Ä
+ǽ¤Ç¤¹¡£
+
+http://open-osd.org
+
+#See Documentation/scsi/osd.txt for how to setup a working osd environment.
+osd ´Ä¶­¤òÀßÄꤷ¤ÆÆ°¤«¤¹¤¿¤á¤Î¼ê½ç¤Ë¤Ä¤¤¤Æ¤Ï¡¢Documentation/scsi/osd.txt
+¤ò»²¾È¤¯¤À¤µ¤¤¡£
+
+===============================================================================
+#USAGE
+ÍøÍÑÊýË¡
+===============================================================================
+
+#1. Download and compile exofs and open-osd initiator:
+#  You need an external Kernel source tree or kernel headers from your
+#  distribution. (anything based on 2.6.26 or later).
+1. exofs ¤È open-osd ¥¤¥Ë¥·¥¨¡¼¥¿¤ò¥À¥¦¥ó¥í¡¼¥É¤·¤Æ¥³¥ó¥Ñ¥¤¥ë¤¹¤ë:
+  »È¤Ã¤Æ¤¤¤ë¥Ç¥£¥¹¥È¥ê¥Ó¥å¡¼¥·¥ç¥ó¤ÇÇÛÉÛ¤µ¤ì¤Æ¤¤¤ë¥«¡¼¥Í¥ë¥½¡¼¥¹¥Ä¥ê¡¼
+  ¤Þ¤¿¤Ï¥«¡¼¥Í¥ë¥Ø¥Ã¥À (2.6.26 ¤Þ¤¿¤Ï¤½¤ì°Ê¹ß¤Ê¤é¤É¤Î¥Ð¡¼¥¸¥ç¥ó¤Ç¤â²Ä)
+  ¤¬ÊÌÅÓɬÍפǤ¹¡£
+
+#  a. download open-osd including exofs source using:
+  a. exofs ¥½¡¼¥¹¤ò´Þ¤à open-osd ¤ò°Ê²¼¤Î¤è¤¦¤Ë¤·¤Æ¥À¥¦¥ó¥í¡¼¥É¤¹¤ë¡£
+     [parent-directory]$ git clone git://git.open-osd.org/open-osd.git
+
+#  b. Build the library module like this:
+  b. ¥é¥¤¥Ö¥é¥ê¥â¥¸¥å¡¼¥ë¤ò°Ê²¼¤Î¥³¥Þ¥ó¥É¤ÇºîÀ®¤¹¤ë¡£
+     [parent-directory]$ make -C KSRC=$(KER_DIR) open-osd
+
+#     This will build both the open-osd initiator as well as the exofs kernel
+#     module. Use whatever parameters you compiled your Kernel with and
+#     $(KER_DIR) above pointing to the Kernel you compile against. See the file
+#     open-osd/top-level-Makefile for an example.
+     ¤³¤ì¤Ë¤è¤ê¡¢open-osd ¥¤¥Ë¥·¥¨¡¼¥¿¤È exofs ¥«¡¼¥Í¥ë¥â¥¸¥å¡¼¥ë¤Îξ
+     Êý¤¬¥Ó¥ë¥É¤µ¤ì¤Þ¤¹¡£¥«¡¼¥Í¥ë¥³¥ó¥Ñ¥¤¥ë»þ¤ËÍ¿¤¨¤Æ¤¤¤ë¥Ñ¥é¥á¡¼¥¿¤Ë
+     ²Ã¤¨¡¢¥³¥ó¥Ñ¥¤¥ëÂоݤȤ¹¤ë¥«¡¼¥Í¥ë¤ò»Ø¤¹ $(KER_DIR) ¤òÀßÄꤷ¤Æ¤¯
+     ¤À¤µ¤¤¡£Îã¤Ï open-osd/top-level-Makefile ¤ò»²¾È¤¯¤À¤µ¤¤¡£
+
+#2. Get the OSD initiator and target set up properly, and login to the target.
+#  See Documentation/scsi/osd.txt for farther instructions. Also see ./do-osd
+#  for example script that does all these steps.
+2. OSD ¥¤¥Ë¥·¥¨¡¼¥¿¤È¥¿¡¼¥²¥Ã¥È¤òŬÀÚ¤ËÀßÄꤷ¡¢¥¿¡¼¥²¥Ã¥È¤Ë¥í¥°¥¤¥ó¤·
+¤Þ¤¹¡£ÀßÄê¼ê½ç¤Î¾ÜºÙ¤Ï Documentation/scsi/osd.txt ¤ò»²¾È¤¯¤À¤µ¤¤¡£¤Þ
+¤¿¡¢¤³¤Î¼ê½ç¤ÎÁ´¤Æ¤ò¼Â¹Ô¤¹¤ë¥¹¥¯¥ê¥×¥È¤ÎÎã¤Ç¤¢¤ë ./do-osd ¤ò¤´Í÷¤¯¤À¤µ¤¤¡£
+
+#3. Insmod the exofs.ko module:
+#   [exofs]$ insmod exofs.ko
+3. exofs.ko ¥â¥¸¥å¡¼¥ë¤ò insmod ¤¹¤ë¡£
+   [exofs]$ insmod exofs.ko
+
+#4. Make sure the directory where you want to mount exists. If not, create it.
+#   (For example, mkdir /mnt/exofs)
+4. ¥Þ¥¦¥ó¥ÈÀè¤Î¥Ç¥£¥ì¥¯¥È¥ê¤¬Â¸ºß¤¹¤ë¤³¤È¤ò³Îǧ¤·¤Þ¤¹¡£¤Ê¤¤¾ì¹ç¤ÏºîÀ®
+¤·¤Þ¤¹ (Î㤨¤Ð¡¢mkdir /mnt/exofs)¡£
+
+#5. At first run you will need to invoke the mkfs.exofs application
+5. ½é²ó¤Î¼Â¹Ô¤Ç¤Ï¡¢mkfs.exofs ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Î¼Â¹Ô¤¬É¬Íפˤʤë¤Ç¤·
+¤ç¤¦¡£
+#   As an example, this will create the file system on:
+   Î㤨¤Ð¡¢¼¡¤Î¥³¥Þ¥ó¥É¤Ï¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤ò /dev/osd0 ¤Î ¥Ñ¡¼¥Æ¥£¥·¥ç
+   ¥ó ID 65536 ¾å¤ËºîÀ®¤·¤Þ¤¹¡£
+
+   mkfs.exofs --pid=65536 --format /dev/osd0
+
+#   The --format is optional. If not specified no OSD_FORMAT will be
+#   performed and a clean file system will be created in the specified pid,
+#   in the available space of the target. (Use --format=size_in_meg to limit
+#   the total LUN space available)
+   --format ¤Ï¥ª¥×¥·¥ç¥ó¤Ç¡¢»ØÄꤷ¤Ê¤¤¾ì¹ç¤Ë¤Ï OSD_FORMAT ¤¬¼Â¹Ô¤µ¤ì
+   ¤º¡¢»ØÄꤵ¤ì¤¿ pid ¤Ç¥¯¥ê¡¼¥ó¤Ê¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤¬¡¢¥¿¡¼¥²¥Ã¥È¤ÎÄó¶¡
+   ¤¹¤ëÎΰè (Á´ÂÎ) ¤ò»È¤Ã¤ÆºîÀ®¤µ¤ì¤Þ¤¹ (»ÈÍѤ¹¤ë LUN ÎΰèÁ´ÂΤΥµ¥¤¥º
+   ¤òÀ©¸Â¤·¤¿¤¤¾ì¹ç¤Ë¤Ï¡¢--format=size_in_meg ¤ò»È¤Ã¤Æ¤¯¤À¤µ¤¤)¡£
+
+#   If pid already exists, it will be deleted and a new one will be created in
+#   its place. Be careful.
+   pid ¤¬´û¤Ë¸ºß¤¹¤ë¾ì¹ç¤Ë¤Ïºï½ü¤µ¤ì¡¢¿·¤·¤¤ pid ¤¬ºîÀ®¤µ¤ì¤Æ¾å½ñ¤­
+   ¤µ¤ì¤Þ¤¹¡£Ãí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£
+
+#   An exofs lives inside a single OSD partition. You can create multiple exofs
+#   filesystems on the same device using multiple pids.
+   exofs ¤Ïñ°ì¤Î OSD ¥Ñ¡¼¥Æ¥£¥·¥ç¥óÆâ¤ËÃÖ¤«¤ì¤Þ¤¹¡£Ê£¿ô¤Î pid ¤òÍÑ
+   ¤¤¤ì¤Ð¡¢Æ±¤¸¥Ç¥Ð¥¤¥¹¤ËÊ£¿ô¤Î exofs ¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤òºîÀ®²Äǽ¤Ç¤¹¡£
+
+#   (run mkfs.exofs without any parameters for usage help message)
+   (mkfs.exofs ¤ò¥Ñ¥é¥á¡¼¥¿¤Ê¤·¤Ç¼Â¹Ô¤·¤¿¾ì¹ç¡¢ÍøÍÑÊýË¡¤Î¥Ø¥ë¥×¥á¥Ã
+   ¥»¡¼¥¸¤¬É½¼¨¤µ¤ì¤Þ¤¹)¡£
+
+#6. Mount the file system.
+6. ¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤ò¥Þ¥¦¥ó¥È¤·¤Þ¤¹¡£
+
+#   For example, to mount /dev/osd0, partition ID 0x10000 on /mnt/exofs:
+   Î㤨¤Ð¡¢/dev/osd0 ¤Î¥Ñ¡¼¥Æ¥£¥·¥ç¥ó ID 0x10000 ¤ò /mnt/exofs ¤Ë¥Þ
+   ¥¦¥ó¥È¤¹¤ë¤Ë¤Ï¡¢°Ê²¼¤Î¤è¤¦¤Ë¤·¤Þ¤¹¡£
+
+       mount -t exofs -o pid=65536 /dev/osd0 /mnt/exofs/
+
+#7. For reference (See do-exofs example script):
+#      do-exofs start - an example of how to perform the above steps.
+#      do-exofs stop -  an example of how to unmount the file system.
+#      do-exofs format - an example of how to format and mkfs a new exofs.
+7. »²¹ÍÎã (do-exofs ¥¹¥¯¥ê¥×¥ÈÎã¤ò»²¾È¤¯¤À¤µ¤¤)
+       do-exofs start - ¾åµ­¤Î¼ê½ç¤ò¼Â¹Ô¤¹¤ëÊýË¡¤ÎÎã
+       do-exofs stop  - ¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Î¥¢¥ó¥Þ¥¦¥ó¥È¤ò¼Â¹Ô¤¹¤ëÊý
+                               Ë¡¤ÎÎã
+       do-exofs format - ¿·¤·¤¤ exofs ¤Î¥Õ¥©¡¼¥Þ¥Ã¥È¤È mkfs ¤ò¼Â¹Ô
+                               ¤¹¤ëÊýË¡¤ÎÎã
+
+#8. Extra compilation flags (uncomment in fs/exofs/Kbuild):
+#      CONFIG_EXOFS_DEBUG - for debug messages and extra checks.
+8. ÄɲäΥ³¥ó¥Ñ¥¤¥ì¡¼¥·¥ç¥ó¥Õ¥é¥° (fs/exofs/Kbuild Æâ¤Ç¥¢¥ó¥³¥á¥ó¥È)
+       CONFIG_EXOFS_DEBUG - ¥Ç¥Ð¥Ã¥°¥á¥Ã¥»¡¼¥¸¤ÈÆÃÊ̤ΥÁ¥§¥Ã¥¯¤ÎÄɲÃ
+
+===============================================================================
+#exofs mount options
+exofs ¥Þ¥¦¥ó¥È¥ª¥×¥·¥ç¥ó
+===============================================================================
+#Similar to any mount command:
+¾¤Î¥Þ¥¦¥ó¥È¥³¥Þ¥ó¥É¤ÈƱÍͤǤ¹¡§
+       mount -t exofs -o exofs_options /dev/osdX mount_exofs_directory
+
+#Where:
+¤³¤³¤Ç¤Î¥ª¥×¥·¥ç¥ó¤ÎÀâÌÀ¡§
+#    -t exofs: specifies the exofs file system
+    -t exofs: exofs ¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤ò»ØÄꤷ¤Þ¤¹¡£
+
+#    /dev/osdX: X is a decimal number. /dev/osdX was created after a successful
+#               login into an OSD target.
+    /dev/osdX: X ¤Ï½½¿Ê¿ô¤Ç¤¹¡£/dev/osdX ¤Ï OSD ¥¿¡¼¥²¥Ã¥È¤Ë¥í¥°¥¤¥ó
+    ¤¬À®¸ù¤·¤¿¸å¤ËºîÀ®¤µ¤ì¤Þ¤¹¡£
+
+#    mount_exofs_directory: The directory to mount the file system on
+    mount_exofs_directory: ¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤ò¥Þ¥¦¥ó¥È¤¹¤ë¥Ç¥£¥ì¥¯¥È¥ê
+
+#    exofs specific options: Options are separated by commas (,)
+    exofs ¸ÇÍ­¤Î¥ª¥×¥·¥ç¥ó: ¥ª¥×¥·¥ç¥ó¤Ï¥«¥ó¥Þ (,) ¤Ç¶èÀÚ¤é¤ì¤Þ¤¹¡£
+#              pid=<integer> - The partition number to mount/create as
+#                                container of the filesystem.
+#                                This option is mandatory. integer can be
+#                                Hex by pre-pending an 0x to the number.
+#              osdname=<id>  - Mount by a device's osdname.
+#                                osdname is usually a 36 character uuid of the
+#                                form "d2683732-c906-4ee1-9dbd-c10c27bb40df".
+#                                It is one of the device's uuid specified in the
+#                                mkfs.exofs format command.
+#                                If this option is specified then the /dev/osdX
+#                                above can be empty and is ignored.
+#                to=<integer>  - Timeout in ticks for a single command.
+#                                default is (60 * HZ) [for debugging only]
+               pid=<À°¿ô>    - ¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Î¥³¥ó¥Æ¥Ê¤ò¥Þ¥¦¥ó¥È/
+                               ºîÀ®¤¹¤ë¥Ñ¡¼¥Æ¥£¥·¥ç¥óÈֹ档
+                               ¤³¤Î¥ª¥×¥·¥ç¥ó¤Ïɬ¿Ü¤Ç¤¹¡£À°¿ôÃͤȤ·¤Æ¡¢ÀèƬ
+                               ¤Ë 0x ¤ò¤Ä¤±¤ë¤³¤È¤Ë¤è¤ê 16¿Ê¿ô¤ò»ØÄꤹ¤ë¤³
+                               ¤È¤¬²Äǽ¤Ç¤¹¡£
+               osdname=<id>  - ¥Ç¥Ð¥¤¥¹¤Î osdname.¤ò»È¤¤¥Þ¥¦¥ó¥È¤¹¤ë¡£
+                               osdname ¤Ï¡¢Ä̾ï
+                               "d2683732-c906-4ee1-9dbd-c10c27bb40df".
+                               ¤Î¤è¤¦¤Ê·Á¼°¤Î 36 Ê¸»ú¤Îʸ»úÎó¤Ç¤¹¡£
+                               ¤³¤ì¤Ï mkfs.exofs ¥Õ¥©¡¼¥Þ¥Ã¥È¥³¥Þ¥ó¥É¤Ç»ØÄê
+                               ¤·¤¿¥Ç¥Ð¥¤¥¹¤Î uuid ¤Î¤¦¤Á¤Î°ì¤Ä¤Ç¤¹¡£
+                               ¤³¤Î¥ª¥×¥·¥ç¥ó¤ò /dev/osdX ¤Ë»ØÄꤷ¤¿¾ì¹ç¡¢
+                               uuid ¤Ï¶õ¤Ç¤è¤¯¡¢»ØÄꤷ¤Æ¤â̵»ë¤µ¤ì¤Þ¤¹¡£
+               to=<À°¿ô>     - °ì¤Ä¤Î¥³¥Þ¥ó¥É¤¬¥¿¥¤¥à¥¢¥¦¥È¤¹¤ë¤Þ¤Ç
+                               ¤Î¥Æ¥£¥Ã¥¯¿ô¡£
+                               ´ûÄêÃͤϠ(60 * HZ) ¤Ç¤¹ [¥Ç¥Ð¥Ã¥¯ÀìÍÑ]
+
+===============================================================================
+#DESIGN
+Àß·×
+===============================================================================
+
+#* The file system control block (AKA on-disk superblock) resides in an object
+#  with a special ID (defined in common.h).
+#  Information included in the file system control block is used to fill the
+#  in-memory superblock structure at mount time. This object is created before
+#  the file system is used by mkexofs.c. It contains information such as:
+#      - The file system's magic number
+#      - The next inode number to be allocated
+* ¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥àÀ©¸æ¥Ö¥í¥Ã¥¯ (¥Ç¥£¥¹¥¯¾å¤Î¥¹¡¼¥Ñ¡¼¥Ö¥í¥Ã¥¯) ¤Ï¡¢ÆÃÊ̤Ê
+   ID (common.h ¤ËÄêµÁ¤¬¤¢¤ê¤Þ¤¹) ¤ò»ý¤Ä¥ª¥Ö¥¸¥§¥¯¥È¤Ë³ÊǼ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£
+   ¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥àÀ©¸æ¥Ö¥í¥Ã¥¯¤Ë³ÊǼ¤µ¤ì¤Æ¤¤¤ë¾ðÊó¤Ï¡¢¥Þ¥¦¥ó¥È»þ¤Ë¥á¥â¥ê
+   ¾å¤Î¥¹¡¼¥Ñ¡¼¥Ö¥í¥Ã¥¯¹½Â¤ÂΤ˽ñ¤­¹þ¤àºÝ¤ËÍѤ¤¤é¤ì¤Þ¤¹¡£¤³¤Î¥ª¥Ö¥¸
+   ¥§¥¯¥È¤Ï¡¢¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤¬ mkexofs.c ¤ÇÍѤ¤¤é¤ì¤ëÁ°¤ËºîÀ®¤µ¤ì¤Þ¤¹¡£
+   ¤³¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ë¤Ï°Ê²¼¤Î¾ðÊ󤬴ޤޤì¤Æ¤¤¤Þ¤¹¡£
+       - ¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Î¥Þ¥¸¥Ã¥¯ÈÖ¹æ
+       - ¼¡¤Ë³ä¤êÅö¤Æ¤ë inode ÈÖ¹æ
+
+#* Each file resides in its own object and contains the data (and it will be
+#  possible to extend the file over multiple objects, though this has not been
+#  implemented yet).
+* ³Æ¥Õ¥¡¥¤¥ë¤ÏÂбþ¤¹¤ë¥ª¥Ö¥¸¥§¥¯¥È¤Ë³ÊǼ¤µ¤ì¡¢¥Ç¡¼¥¿¤ò´Þ¤ß¤Þ¤¹ (¤½¤·¤Æ
+  ¾­Íè¤ÏÊ£¿ô¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ëʬ³ä¤·¤Æ¥Õ¥¡¥¤¥ë¤ò³ÊǼ¤Ç¤­¤ë¤è¤¦¤Ë¤Ê¤ëͽÄê
+  ¤Ç¤¹¤¬¡¢¸½ºß¤Ï̤¼ÂÁõ¤Ç¤¹)¡£
+
+#* A directory is treated as a file, and essentially contains a list of <file
+#  name, inode #> pairs for files that are found in that directory. The object
+#  IDs correspond to the files' inode numbers and will be allocated according to
+#  a bitmap (stored in a separate object). Now they are allocated using a
+#  counter.
+* ¥Ç¥£¥ì¥¯¥È¥ê¤Ï¥Õ¥¡¥¤¥ë¤È¤·¤Æ°·¤ï¤ì¡¢ËܼÁŪ¤Ë¤Ï¥Ç¥£¥ì¥¯¥È¥êÆâ¤Ë¤¢¤ë¥Õ
+  ¥¡¥¤¥ë¤Î <¥Õ¥¡¥¤¥ë̾, inode ÈÖ¹æ> ÁȤΥꥹ¥È¤ò³ÊǼ¤·¤Æ¤¤¤Þ¤¹¡£¥ª¥Ö¥¸
+  ¥§¥¯¥È ID ¤Ï¥Õ¥¡¥¤¥ë¤Î inode ÈÖ¹æ¤ËÂбþ¤·¡¢¾­Íè¤ÏÊ̤Υª¥Ö¥¸¥§¥¯¥È¤Ë
+  ³ÊǼ¤µ¤ì¤¿¥Ó¥Ã¥È¥Þ¥Ã¥×¤Ë½¾¤Ã¤Æ³ä¤êÅö¤Æ¤é¤ì¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£Ã¢¤·¸½ºß
+  ¤Ï¥«¥¦¥ó¥¿¤ò»È¤Ã¤Æ³ä¤êÅö¤Æ¤é¤ì¤Æ¤¤¤Þ¤¹¡£
+
+#* Each file's control block (AKA on-disk inode) is stored in its object's
+#  attributes. This applies to both regular files and other types (directories,
+#  device files, symlinks, etc.).
+* ³Æ¥Õ¥¡¥¤¥ë¤ÎÀ©¸æ¥Ö¥í¥Ã¥¯ (¥Ç¥£¥¹¥¯¾å¤Î inode) ¤Ï¥ª¥Ö¥¸¥§¥¯¥È¥¢¥È¥ê¥Ó
+  ¥å¡¼¥È¤Ë³ÊǼ¤µ¤ì¤Þ¤¹¡£¤³¤ì¤ÏÄ̾ï¥Õ¥¡¥¤¥ë¤È¤½¤Î¾¤Î¥¿¥¤¥× (¥Ç¥£¥ì¥¯¥È
+  ¥ê¡¢¥Ç¥Ð¥¤¥¹¥Õ¥¡¥¤¥ë¡¢¥·¥ó¥Ü¥ê¥Ã¥¯¥ê¥ó¥¯¤Ê¤É) ¤ÎξÊý¤ËŬÍѤµ¤ì¤Þ¤¹¡£
+
+#* Credentials are generated per object (inode and superblock) when they are
+#  created in memory (read from disk or created). The credential works for all
+#  operations and is used as long as the object remains in memory.
+* ¥¯¥ì¥Ç¥ó¥·¥ã¥ë¤Ï¥ª¥Ö¥¸¥§¥¯¥È (inode ¤È¥¹¡¼¥Ñ¡¼¥Ö¥í¥Ã¥¯) Ëè¤Ë¡¢¥á¥â
+  ¥êÆâ¤Ç¤ÎÀ¸À®»þ (¥Ç¥£¥¹¥¯¤«¤é¤ÎÆɤ߹þ¤ß¤Þ¤¿¤ÏºîÀ®»þ) ¤ËºîÀ®¤µ¤ì¤Þ¤¹¡£
+  ¥¯¥ì¥Ç¥ó¥·¥ã¥ë¤ÏÁ´¤Æ¤ÎÁàºî¤ÇƯ¤­¡¢¥ª¥Ö¥¸¥§¥¯¥È¤¬¥á¥â¥êÆâ¤Ë¤¢¤ë´Ö
+  ¤Ï¤º¤Ã¤È»È¤ï¤ì¤Þ¤¹¡£
+
+#* Async OSD operations are used whenever possible, but the target may execute
+#  them out of order. The operations that concern us are create, delete,
+#  readpage, writepage, update_inode, and truncate. The following pairs of
+#  operations should execute in the order written, and we need to prevent them
+#  from executing in reverse order:
+* ²Äǽ¤Ê¸Â¤êÈóƱ´ü OSD Áàºî¤¬»È¤ï¤ì¤Þ¤¹¤¬¡¢¥¿¡¼¥²¥Ã¥È¤Ç¤Ï¤³¤ì¤ò½ç½ø¤ò
+  ¼é¤é¤º¼Â¹Ô¤¹¤ë¤«¤â¤·¤ì¤Þ¤»¤ó¡£¤³¤³¤ÇÂоݤȤʤëÁàºî¤È¤Ï¡¢create¡¢
+  delete¡¢readpage¡¢writepage¡¢update_inode¡¢truncate ¤Ç¤¹¡£°Ê²¼¤ÎÁàºî
+  ¤ÎÁȤϽñ¤«¤ì¤¿½ç½ø¤Ë¼Â¹Ô¤¹¤ë¤Ù¤­¤Ç¤¹¤Î¤Ç¡¢½ç½ø¤¬µÕž¤¹¤ë¤³¤È¤òËɻߤ¹
+  ¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£
+#      - The following are handled with the OBJ_CREATED and OBJ_2BCREATED
+#        flags. OBJ_CREATED is set when we know the object exists on the OSD -
+#        in create's callback function, and when we successfully do a read_inode.
+#        OBJ_2BCREATED is set in the beginning of the create function, so we
+#        know that we should wait.
+       - °Ê²¼¤Î½èÍý¤Ï OBJ_CREATED ¤È OBJ_2BCREATED ¥Õ¥é¥°¤ÇÀ©¸æ¤µ¤ì
+         ¤Þ¤¹¡£
+         ÂоݤȤʤ륪¥Ö¥¸¥§¥¯¥È¤¬ OSD ¤Ë¸ºß¤¹¤ë¾ì¹ç¤Ë¤Ï¡¢create ¤Î
+         ¥³¡¼¥ë¥Ð¥Ã¥¯´Ø¿ô¤Ç OBJ_CREATED ¤ò¥»¥Ã¥È¤·¤Þ¤¹¡£¤Þ¤¿
+         read_inode ¤Î¼Â¹Ô¤¬À®¸ù¤·¤¿¾ì¹ç¤Ë¤Ï OBJ_2BCREATED ¤ò create
+          ´Ø¿ô¤ÎºÇ½é¤Ç¥»¥Ã¥È¤¹¤ë¤¿¤á¡¢ÂÔ¤ÄɬÍפ¬¤¢¤ë¤³¤È¤¬Ê¬¤«¤ê¤Þ¤¹¡£
+#              - create/delete: delete should wait until the object is created
+#                on the OSD.
+               - create/delete: delete ¤Ï¥ª¥Ö¥¸¥§¥¯¥È¤¬ OSD ¤ÇºîÀ®
+                 ¤µ¤ì¤ë¤Þ¤ÇÂԤĤ٤­¤Ç¤¹¡£
+#              - create/readpage: readpage should be able to return a page
+#                full of zeroes in this case. If there was a write already
+#                en-route (i.e. create, writepage, readpage) then the page
+#                would be locked, and so it would really be the same as
+#                create/writepage.
+               - create/readpage: readpage ¤Ï¡¢¤³¤Î¾ì¹ç 0 ¤ÇËä¤á¤é¤ì
+                 ¤¿¥Ú¡¼¥¸¤òÊÖ¤»¤ë¤è¤¦¼ÂÁõ¤¹¤Ù¤­¤Ç¤¹¡£´û¤Ë½ñ¤­¹þ¤ß¤¬»Å
+                 ³Ý¤«¤êÃæ¤Î¾ì¹ç (¤Ä¤Þ¤ê¡¢create¡¢writepage¡¢readpage
+                 ¤Î½ç¤Ç¼Â¹Ô¤·¤Æ¤¤¤ë¾ì¹ç)¡¢¥Ú¡¼¥¸¤Ï¥í¥Ã¥¯¤µ¤ì¤ë¤Ç¤·¤ç
+                 ¤¦¤«¤é¡¢¼ÂºÝ¤Î½èÍý¤Ï create/writepage ¤ÈƱ¤¸¤Ë¤Ê¤ê¤Þ
+                 ¤¹¡£
+#              - create/writepage: if writepage is called for a sync write, it
+#                should wait until the object is created on the OSD.
+#                Otherwise, it should just return.
+               - create/writepage: writepage ¤¬Æ±´ü½ñ¤­¹þ¤ß¤È¤·¤Æ¼Â¹Ô
+                 ¤µ¤ì¤¿¾ì¹ç¤Ï¡¢¥ª¥Ö¥¸¥§¥¯¥È¤¬ OSD ¤ÇºîÀ®¤µ¤ì¤ë¤Þ¤ÇÂԤĤ٤­¤Ç¤¹¡£
+                 ¤½¤ì°Ê³°¤Î¾ì¹ç¤Ï¡¢Ã±¤ËÌá¤ë¤Ù¤­¤Ç¤¹¡£
+#              - create/truncate: truncate should wait until the object is
+#                created on the OSD.
+               - create/truncate: truncate ¤Ï¥ª¥Ö¥¸¥§¥¯¥È¤¬ OSD ¤Çºî
+                 À®¤µ¤ì¤ë¤Þ¤Ç¤ÏÂԤĤ٤­¤Ç¤¹¡£
+#              - create/update_inode: update_inode should wait until the
+#                object is created on the OSD.
+               - create/update_inode: update_inode ¤Ï¥ª¥Ö¥¸¥§¥¯¥È¤¬
+                 OSD ¤ÇºîÀ®¤µ¤ì¤ë¤Þ¤Ç¤ÏÂԤĤ٤­¤Ç¤¹¡£
+#      - Handled by VFS locks:
+       - VFS ¥í¥Ã¥¯¤Ç°·¤ï¤ì¤Þ¤¹
+#              - readpage/delete: shouldn't happen because of page lock.
+#              - writepage/delete: shouldn't happen because of page lock.
+#              - readpage/writepage: shouldn't happen because of page lock.
+               - readpage/delete: ¥Ú¡¼¥¸¥í¥Ã¥¯¤Î¤¿¤á¡¢µ¯¤³¤é¤Ê¤¤¤Ï¤º
+                                  ¤Ç¤¹¡£
+               - writepage/delete: ¥Ú¡¼¥¸¥í¥Ã¥¯¤Î¤¿¤á¡¢µ¯¤³¤é¤Ê¤¤¤Ï¤º
+                                  ¤Ç¤¹¡£
+               - readpage/writepage: ¥Ú¡¼¥¸¥í¥Ã¥¯¤Î¤¿¤á¡¢µ¯¤³¤é¤Ê¤¤¤Ï
+                                  ¤º¤Ç¤¹¡£
+
+===============================================================================
+#LICENSE/COPYRIGHT
+¥é¥¤¥»¥ó¥¹/Ãøºî¸¢
+===============================================================================
+#The exofs file system is based on ext2 v0.5b (distributed with the Linux kernel
+#version 2.6.10).  All files include the original copyrights, and the license
+#is GPL version 2 (only version 2, as is true for the Linux kernel).  The
+#Linux kernel can be downloaded from www.kernel.org.
+exofs ¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Ï ext2 v0.5b (Linux ¥«¡¼¥Í¥ë¥Ð¡¼¥¸¥ç¥ó 2.6.10
+¤ÇÇÛÉÛ¤µ¤ì¤Æ¤¤¤¿¤â¤Î) ¤ò¥Ù¡¼¥¹¤Ë¤·¤Æ¤¤¤Þ¤¹¡£Á´¤Æ¤Î¥Õ¥¡¥¤¥ë¤Ï¸µ¡¹¤ÎÃø
+ºî¸¢É½µ­¤òÊݤäƤª¤ê¡¢¥é¥¤¥»¥ó¥¹¤Ï GPL ¥Ð¡¼¥¸¥ç¥ó 2 (Linux ¥«¡¼¥Í¥ë¤Ç
+¤Ï¡¢¥Ð¡¼¥¸¥ç¥ó 2 ¤Î¤ß¤Ç¤¹) ¤Ç¤¹¡£Linux ¥«¡¼¥Í¥ë¤Ï www.kernel.org ¤«¤é
+¥À¥¦¥ó¥í¡¼¥É²Äǽ¤Ç¤¹¡£
+
diff --git a/docs/kernel-docs-2.6/filesystems/exofs.txt.info b/docs/kernel-docs-2.6/filesystems/exofs.txt.info
new file mode 100644 (file)
index 0000000..9abe7f3
--- /dev/null
@@ -0,0 +1,7 @@
+TITL: exofs
+CONT: exofs ¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Î²òÀâ
+NAME: filesystems/exofs.txt
+JDAT: 2012/09/03
+BVER: 3.4.1
+AUTH: unknown
+TRNS: Seiji Kaneko < skaneko at a2 dot mbn dot or dot jp >
index 75c28cd..0479c2b 100644 (file)
@@ -558,11 +558,11 @@ NOTE: [JF:19689]
 # STAT: Release
 # NOTE: [JF:19787]
 
-NAME: filesystems/exofs.txt
-TRNS: skaneko@a2.mbn.or.jp
-PDAT: 2009/06/12
-STAT: Draft
-NOTE: [JF:19787]
+NAME: filesystems/exofs.txt
+TRNS: skaneko@a2.mbn.or.jp
+PDAT: 2009/06/12
+# STAT: Release
+NOTE: [JF:19787]
 
 # NAME: filesystems/fiemap.txt
 # TRNS: skaneko@a2.mbn.or.jp
index 7b003d9..41b8bfb 100644 (file)
@@ -45,6 +45,9 @@ m4_define(`_NEW_DOC',`
    </DT>')
 
  <DL>
+_NEW_DOC(kernel-docs-2.6/filesystems/exofs.txt.html,2012/09/06,
+       `kernel-3.4.1 ÉÕ° filesystems/exofs.txt ¤ÎÆüËܸìÌõ')
+
 _UPD_DOC(kernel-docs-2.6/filesystems/files.txt.html,2012/09/06,
        `kernel-3.5 ÉÕ° filesystems/files.txt ¤ÎÆüËܸìÌõ')