 CVF-FAT ե륷ƥĥμפʻǤ   1998ǯ1118


ܼ

1. CVF-FAT γǰ
2. 
3. ޥȥץ
4. CVF-FAT 󥿡եγ
5. CVF ⥸塼

---------------------------------------------------------------------

1. CVF-FAT γǰ
---------------------------------------------------------------------

CVF-FAT  FAT ե륷ƥγĥǡFAT ѡƥˤ
Compressed Volume Files Ūʥ󥿡ե󶡤ޤŪ
 CVF եȥϡ㤨СMicrosoft  Doublespace/Drivespace 
Stac  Stacker ǤCVF-FAT󥿡եλѤϡ̤Ÿ
ưŪ˹Ԥ٥ǥ򰷤⥸塼ɤ뤳Ȥ
ǤޤFAT ե륷ƥˤ CVF-FAT ʳΥեؤΥ
ϡޤǤɤ FAT, MSDOS, VFAT 뤤 UMSDOS ɥ饤ФԤޤ

CVF ϡFAT ɥ饤Фɲǽ CVF եޥåȸͭΥ
塼٥롼쥯Ȥ뤳ȤǹԤޤ
⥸塼 CVF Фư̤ŸΤ褦üʽΣ˹Ԥ
FAT ɥ饤Ф CVF ̾ FAT ե륷ƥǤ뤫Τ褦˸
ʤȤޤ


2. 
---------------------------------------------------------------------

- BMAP Զ

  CVF ե륷ƥ bmap 뤳ȤǤޤ󡣸ŪˤǤޤ
  󡣤äơbmap פ뤹٤ƤΥưޤ (swap
  񤭹߲ǽ mmap)ɤ߽ФѤ mmap ϡFAT ɥ饤Фξ
  θƺƤΤưޤ :) ޤ񤭹߲ǽ mmap
  ϡCVF-FAT  FAT ɥ饤Ф򤤤äΤǡreadpage Υ󥿡
  եǽѤСưޤ :)
  
- DOSEmu 桼ؤ

  DOSEmu ˤäƤ DOSEmu ¹Ԥ CVF ѡƥ
  ٤ umount ʤФʤʤ⤷ޤ󡣥ǥΤ⤷ϥѡ
  ƥ󥢥 (ϡ DOSEmu ˰̤줿ѡƥ
  Ǥ) Ѥ DOSEmu ˤʤ顢ɥ饤
  𤷡̤줿ѡƥ˲䥷ƥबå夹
  ޤ
  
  lredir ޤ emufs.sys Ȱ˰̤줿ѡƥ쥯
  Ȥ뤳ȤϾ˰Ǥ뤳ȤФƤƤܤ
  DOSEmu λ򻲾ȤƤ


3. ޥȥץ
---------------------------------------------------------------------

CVF-FAT ĥϡ FAT ɥ饤ФɸΥץ˲äΥץ
󤬤ޤ

  cvf_format=xxx
    ưΤ CVF ⥸塼 "xxx" Ѥ뤳Ȥɥ饤Ф
    ޤΥץ󤬤ʤ硢CVF-FAT 󥿡եϸ
    ߥɤƤ뤹٤Ƥ CVF ⥸塼 CVF ǧɤ
    ֤ͤޤäơCVF ⥸塼ΥХߴΤ CVF
    եޥåȤǧǤʤΤߡΥץɬפˤ
    ޤ (detect_cvf Ԥޤ)"xxx" ʸ "none" ("
    ) Ȥ硢ɤ줿 CVF ⥸塼ΤλѤػ
    ޤϡCVF ⥸塼뤬  FAT ե륷ƥ
    ޥȤƤޤȤɤޤޤ"xxx" ʸ
    "autoload" Ǥ褯⥸塼Ѥ̤ʰ̣ޤ
    ưΤϹԤޤ

    ͥ뤬 kmod 򥵥ݡȤ硢cvf_format=xxx ץ
    CVF ⥸塼ΥǥޥɤǤΥɤ椷ޤΥץ
    ʤ硢ǥޥɤǥɤΤϤޤ
    cvf_format=xxx ꤹ ("xxx"  "none" Ǥʤ)̤
    ե륷ƥޥȤ˼ưŪ˥⥸塼 "xxx" 
    ᤵޤCVF եޥå̾ȥ⥸塼̾Ȥۤʤơ
    ⥸塼̾Ƥʸʬ "xxx" 
    "autoload" ξ硢İʾ CVF ⥸塼ɤ뤿
    ʥ⥸塼 (alias  pre-install ̿) ȤळȤǡ
    ݤˤ¸ߤʤ⥸塼 "cvf_autoload" ׵ᤵơưŪ˥
    Ȥ CVF μΤŬڤʥ⥸塼Τߤ
    ޤϡdmsdos λ˺ܤäƤޤ (ftp  http 
    ɥ쥹Ǽޤ)

  cvf_options=yyy
    ץʸ CVF ⥸塼ϤޤĤޤꡢ"yyy" 
    Ϥޤ ("Ͻ)ϳ CVF ⥸塼ǤΤ߲ᤵ
    ΤʤΤǡϳ CVF ⥸塼ѤλǤƤϤǤ
    ʸϥ (",") ޤǤϤʤʤȤդƤ -
    FAT ɥ饤Фޤθʸ FAT ɥ饤ФΥץȤ
    ǧȤä򤷡𤹤뤫̯ʥ顼å
    Ǥ⤷ޤCVF ⥸塼Ѥʸ (ޤȤ) ۤʤä
    ʬΥ󼨤ƤϤǡ㤨Сɥå "." ץ饹 "+"
    ǡʸ "yyy" ͭǤ


4. CVF-FAT 󥿡եγ
---------------------------------------------------------------------

ʤʬ CVF ⥸塼񤳤Ȥ硢¿Υ󥿡ե
ǽ񤫤ʤФʤޤʬϥͥåȾõ륫ͥʸ
夵ƤΤǡˤĤƤϵҤޤ󡣤 "[...]"
ɽƤޤ :-) include/linux/fat_cvf.h 򸫤Ƥ

struct cvf_format
{ int cvf_version;
  char* cvf_version_text;
  unsigned long int flags;
  int (*detect_cvf) (struct super_block*sb);
  int (*mount_cvf) (struct super_block*sb,char*options);
  int (*unmount_cvf) (struct super_block*sb);
  [...]
  void (*zero_out_cluster) (struct inode*, int clusternr);
}

ι¤ΤϡCVF ⥸塼ǽϤޤCVF ⥸塼Ϥ٤
ʤФʤޤFAT/CVF-FAT ɥ饤Ф˥⥸塼Ƴ
˻ȤȤߤʤƤ

ΤΤޤޤޤ
  - cvf_version:
      С̻ҤǥˡǤʤФʤޤ󡣲Ǥ
      
  - cvf_version_text:
      ͤȽɲǽʥСʸǡ⥸塼뤬 CVF ե
      ޥåȤˤĤƵҤûñǤʸ cvf_format 
      ǻѤޤ̾ˡǤʤФʤޤ
  - flags:
      ӥåȤե饰˳ƤΤǡӥåȤ mmap  readpage ξ
      εǽ󶡤 readpage/mmap ιθΤ˸Ȥ
      ޤCVF_USE_READPAGE åȤ硢mmap 
      generic_file_mmap ꤵ졢readpage ª cvf_readpage
      ؿ˥쥯ȤޤåȤʤ硢readpage 
      generic_readpage ꤵ졢mmap ª cvf_mmap ˥
      Ȥޤ (񤭹߲ǽ mmap ˾ޤʤ硢readpage 
      եѤƤ)
  - detect_cvf:
      ե륷ƥब⥸塼˥ݡȤƤ CVF 
      ꤹ뤿˸ƤФؿǤdetect_cvf ؿϤμ
      CVF 򥵥ݡȤƤʤ (NO, I DON'T KNOW THIS GARBAGE) ʤ 0
      ֤ݡȤƤ (YES, THIS IS THE KIND OF CVF I
      SUPPORT) ʤ 1 ʾ֤ʤФʤޤ󡣤δؿϰΤ
      ˥⥸塼λѥ󥿤ʤФʤޤ󡣤Ĥޤꡢ
      Ϥޤ MOD_INC_USE_COUNT 򡢽 MOD_DEC_USE_COUNT Ԥ
      ޤؿϡǧ mount_cvf ؿƤӽФȤ
      ꤹɬפϤޤ
  - mount_cvf:
      CVF ޥȤĤͤ䤽λɲäǹԤ
      Фʤʤ򤹤ؿǤ fat_read_suser ν
      ǸƤФ졢ˤ 0 ֤ʤФʤޤɬδ
       MOD_INC_USE_COUNT ˤ⥸塼λѥ󥿤䤵
      Фʤޤ󡣤ˡ mount_cvf ؿ CVF ⥸塼
      ͭΥץʸ (FAT Υޥȥץ "cvf_options=yyy"
       "yyy") βԤޤʸϥޤޤळȤǤޤ
       (ʬΥȤ㤨Хɥå "." ȤäƤ)
  - unmount_cvf:
      ե륷ƥब umount ƤФؿǤ֤󡢤
      ĤΥ MOD_DEC_USE_COUNT ƤӽФޤ֤
      ϴطޤ (̵뤵ޤ)
  - [...]:
      ¾Τ٤ƤΥ󥿡եǽ FAT ɥ饤дؿª
      Ĥޤꡢꥸʥ FAT ɥ饤дؿ ** FAT ɥ
      Фˤ¹ԤޤNULL ϥꥸʥ FAT ɥ饤дؿ
      뤳Ȥ̣ޤ "⤷ʤ" ˾硢⤷ʤ
      ؿ񤤤ˤ֤Ƥ
  - zero_out_cluster:
      FAT ɥ饤Ф 0 ᤷ () 饹ߤ硢
      zero_out_cluster ؿƤФޤǥ쥯ȥ (mkdir) ˤȤä
      פǤΥݥ󥿤 NULL ξ硢Ϥ줿inode Υ饹
      Τ 0 Ǿ񤭤ޤ clusternr ͤǤꡢϤ
      줿 inode ФͤǤʤȤդƤ


  1. cvf_bmap ؿ̵뤵ϤǤºݤˡɤ褷ƸƤФ
     ƤʤϤǤ˥ХȽ褦ˡϤѥ˥å
     ̿Ūʥ顼å˥쥯Ȥ뤳Ȥޤ
  2. cvf_writepage ؿ̵뤵ޤFAT ɥ饤ФݡȤƤ
     ǤϺѤ뤫⤷ޤ󡣻Ϥ NULL 
     ꤹ뤳Ȥޤ (ĤޤꡢͤȤäƤ)

int register_cvf_format(struct cvf_format*cvf_format);
  嵭ι¤Τ˴ޤޤѿꤷʤ顢FAT/CVF-FAT ɥ饤Фˤ
   CVF եޥåȤƳ뤿ˤδؿƤǤ
  ϡ̾ init_module ǹԤޤɬ֤ͤǧƤ
  ̣¾ξϡ顼ξܺ٤ syslog ˥
  ͥåȤƽϤޤŵŪʥ顼ϡ
    - ƱС̻Ҥĥ⥸塼뤬ǤϿƤ롣
    - CVF եޥåȤ¿롣ɬפʤ fs/fat/cvf.c Ĵ롣
  Ǥ

int unregister_cvf_format(struct cvf_format*cvf_format);
  ̾ cleanup_module ǸƤФޤ֤ 0 ̣ޤ
  ϿƤʤ CVF եޥåȤ unregister 褦Ȥ
  顼ޤɤϥ⥸塼μ̤Τ˥С
  ̻ҤѤޤΤǡɬˡˤƤƤ


5. CVF ⥸塼
---------------------------------------------------------------------

Ȥ dmsdos ⥸塼 (dmsdos ե륷ƥθ) 򻲾
Ƥ߼ΤȤˤޤ

  ftp://fb9nt.uni-duisburg.de/pub/linux/dmsdos/dmsdos-x.y.z.tgz
  ftp://sunsite.unc.edu/pub/Linux/system/Filesystems/dosfs/dmsdos-x.y.z.tgz
  ftp://ftp.uni-stuttgart.de/pub/systems/linux/local/system/dmsdos-x.y.z.tgz

(x.y.z ϼºݤΥСֹȤޤ)dmsdos Τ٤Ƥλ
 dmsdos ѥå˴ޤޤƤޤ˼ΤȤˤ⤢ޤ

  http://fb9nt.uni-duisburg.de/mitarbeiter/gockel/software/dmsdos/index.html
  http://www.yk.rim.or.jp/~takafumi/dmsdos/index.html (in Japanese).
======================================================================
ܸܹ <hng@ps.ksky.ne.jp>
    Τ <cz@hykw.tv>
          濭 <takei@webmasters.gr.jp>
          Akihiro KODA <coda@post.kek.jp>
