
 Coda ιǤˤĤƽ񤫤ƤΤǡʸϡ饤
ȤΥͥ Venus ֤Υ󥿡եˤĤƵŪ
Ƥޤ

ܤϼΤȤ򻲾ȤƤ -
  http://www.coda.cs.cmu.edu
Coda ¹ԤΤɬפʥ桼٥ΥեȥϼΤȤˤ
ޤ -
  ftp://ftp.coda.cs.cmu.edu

Coda ¹Ԥ뤿ˡVenus Ȥ饤ȸ桼٥륭
ޥ͡㤪 ACL ʤɤΤΥġꤷʤ
Фʤޤ󡣥饤Ȥϥͥ륳ե졼 Coda ե
륷ƥ򤷤ʤФʤޤ

Фϥ桼٥ΥФɬפȤΤȤͥ륵ݡȤˤ
¸Ƥޤ







  The Venus kernel interface
  Peter J. Braam
  v1.2, Mar 18, 1998
    (hng@ps.ksky.or.jp)
  v1.2j, November 26, 2001

  ʸ Coda ե륷ƥɬפ Venus ȥͥ٥
  ե륷ƥΥɤȤδ֤Υߥ˥ˤĤƵҤޤ
  ʸǸԤΥ󥿡ե (С 1.0) ȡ䤿ͤ
  ƤˤĤƤ⵭ҤƤޤ
  ______________________________________________________________________

  ܼ

  1. Ϥ
  2. Coda ե륷ƥॵӥѤΥ
  3. å
     3.1 ξܺ

  4. ٥Υ󥿡ե
     4.1 ͥ Venus ˶ͭǡ¤
     4.2 pioctl 󥿡ե
     4.3 root
     4.4 lookup
     4.5 getattr
     4.6 setattr
     4.7 access
     4.8 create
     4.9 mkdir
     4.10 link
     4.11 symlink
     4.12 remove
     4.13 rmdir
     4.14 readlink
     4.15 open
     4.16 close
     4.17 ioctl
     4.18 rename
     4.19 readdir
     4.20 vget
     4.21 fsync
     4.22 inactive
     4.23 rdwr
     4.24 odymount
     4.25 ody_lookup
     4.26 ody_expand
     4.27 prefetch
     4.28 signal

  5. ߥ˥å downcall
     5.1 INVALIDATE
     5.2 FLUSH
     5.3 PURGEUSER
     5.4 ZAPFILE
     5.5 ZAPDIR
     5.6 ZAPVNODE
     5.7 PURGEFID
     5.8 REPLACE

  6. ȥ꡼󥢥å
     6.1 ɬܾ

  7. Inode ֹ
  8. ܸˤĤ

  ______________________________________________________________________

  1.  Ϥ

  Coda ʬե륷ƥθȤʤ빽Ǥϥåޥ͡
  Venus Ǥ

  ƥ Coda ͭʾ硢ץ Coda ե륷ƥΥե
  ˥ݤˡ׵ϥڥ졼ƥ󥰥ƥΥե륷
  ƥؤžޤץ׵򥵡ӥ뤿ˡڥ졼ƥ
  󥰥ƥ Venus ̿Ǥ礦Venus ϥڥ졼ƥ󥰥
  ƥफ׵򥵡ӥ뤿˱³Ūʥ饤
  åCoda ե륵Ф (ǧڥФΤ褦) 
  Ϣ륵Фإ⡼ȥץ㥳ԤޤVenus ׵Υ
  ӥλ硢Ŭڤʥ꥿󥳡ɤ׵˴Ϣǡ
  ڥ졼ƥ󥰥ƥرޤǤդǤCoda Υͥ
  ݡȤ Venus Ȥβä򸺤餹ˡǶ׵Υߥ˥
  ݻ褦ˤޤVenus ϤΥߥ˥åǤ̵
  ˤʤäݤˡΤȤ򥫡ͥΤ뵡äƤޤ

  ʸϥͥ Venus ֤Υߥ˥κˤĤƵҤ
  ޤupcall  downcall ȸƤФ뵡򡢤餬ǡ
  ΥեޥåȤȤȤޤη̤ΰ̣⵭Ҥ
  ޤ

  Ū Coda  Mach 2.6  BSD ե륷ƥǼޤ
  ͥ Venus ֤Υ󥿡ե BSD VFS 󥿡եˤȤƤ
  ƤޤƱͤεǽ󶡤֤ǡΥե
  ޥåȤ BSD VFS ˤȤƤƤޤ BSD ƥ Coda ѥ
  ͥ٥ե륷ƥɥ饤Ф뤿ΤȤƤ⼫ʴĶ
  餷ޤʤ顢Linux  Windows95, NT Τ褦¾Υڥ졼
  ƥ󥰥ƥϡۤʤ륤󥿡եСե륷
  ƥäƤޤ

  Υƥ Coda ˤϡVenus/ͥץȥΥ
  С󥸥˥󥰤ɬפǤˡץȥФ뤤Ĥ
  ʺŬ佤ˤꡢ¾ΥƥǤǽθ夬ޤ뤳
  餫ˤʤäƤޤκȤ¥ʤΰܿưפˤ뤿
  ˡVenus ȥ֤ͥΥߥ˥ϤäȾܤʸɬפʤ
  Ǥ 줬ʸɸǤ

  2.  Coda ե륷ƥॵӥѤΥ

  Coda ե륷ƥॵӥ׵ΥӥϡCoda ե˥
  ץ P ǵޤ OS Υͥإȥåפ륷
  ॳԤޤUnix ƥȤˤ륫ͥ˥ȥåפ
  ʥ read, write, open, close, create, mkdir, rmdir, chmod
  ʤɤǤWin32 ĶˤƱͤΥ¸ߤCreateFile ̾դ
  Ƥޤ

  ̤˥ڥ졼ƥ󥰥ƥ׵Сե륷ƥ (VFS)
  ؤǰޤؤ NT Ǥ I/O ޥ͡㡢Windows 95 Ǥ IFS 
  ͡ȸƤФޤVFS ϡ׵ʬŪ˽׵λ
  ΥӥԤΥե륷ƥ򸫤Ĥ뤳ȤǤ̾ϡ
  ξ FS ɥ饤Ф򸫤ĤΤΩޤȤ¿
  θǡ VFS  FS ɥ饤ФݡȤƤ롼θƤ
  Ф򳫻Ϥ⤢ޤ׵Υե륷ƥͭʽ
  Ϥǡ Coda ͭΥͥ륳ɤưϤޤ

  Coda  FS ؤϤĤΥ󥿡եʤФʤ
  󡣤ޤˡVFS  Coda FS ؤؤɬפʥ򤹤٤ƹԤʤ
  ФʤʤΤǡCoda FS ɥ饤Фϥڥ졼ƥ󥰥ƥǻȤ
  ǡ VFS 󥿡եʤФʤޤ󡣤ϥڥ졼
  ƥ󥰥ƥ֤ۤʤޤ֥Ȥɤࡿ񤯡
  롢롢εȤäǽʬޤCoda FS ؤϡƤ
  Фˤ VFS ׵䡢åޥ͡ Venus ꤵ¿
  ʤΤʥӥ򡢥ӥޤVenus α FS ɥ饤
  ֤줿硢 VFS Υӥ³ơͥ VFS ؤα
  ȼλޤǸ VFS ؤϥץ֤ޤ

  ߷פη̡FS ɥ饤Ф˸줿ܥ󥿡եϡå
  ȥեåδ Venus ˤ褦ˤʤФʤޤ
   Venus ϥåμꤪȯԡå
  Τ뤳ȤǤʤФʤޤ󡣥åԤäƤʤ
  åƤǤ⡢Venus ¾Υդʧʤ
  ФʤʤΤǡΤ Venus ֥åʤȤߤˤʤäƤʤ
  ʤޤ

  ˡFS ؤϡ桼ץ Venus ֤ pioctl 󥿡ե
  ƤФ̤ʥߥ˥ѥ󶡤ޤpioctl 󥿡ե
  ϡVenus ˴³Ūʥå˴ؤܺ٤ʾ׵᤹
  褦ʡCoda ͭΥӥΤ˻ȤޤϥͥδͿ
  Ǿ¤ˤޤƤӽФƤץ̤Venus ؾϤ
  Venus Ͻ줺˸ƤӽФ֤ޤ

  ǸˡVenus ϡͥ FS ɥ饤ФΥӥη̤򥭥
  夹뤳Ȥޤϲ٤Υƥȥå򤵤
  Ū˸ΨŪʥƥˤƤޤʤ顢Venus ϡ㤨
  å夵줿եå⤷֤ʤФʤʤȤ
  ͥåȥ뤫⤷ޤ󡣤Τ褦ʾˤ Venus 
  åեå夢뤤Ϲ׵ Coda FS ؤ downcall
  ޤͥ FS ɥ饤ФϤΤ褦׵Ʊưޤ

  Υ󥿡եǡVFS 󥿡եӥå
  ȯԡ롢Τ뵡ϥץåȥեͭǤVFS ؤ˥
  ݡȤ줿ϹԤޤ󤬡å򴹤λȤߤɬ
  פʤȤϽҤ٤ޤ

  3.  å

  ǲؤǤϡVenus  FS ɥ饤д֤Υߥ˥ϥå
  äƿʤߤޤCoda ե륵ӥ׵᤹ץ Venus ֤Ʊ
   block (ٻ߾֤ؤΰܹ)  wake (塼Ԥ֤ؤΰܹ)
  ˰ͤޤCoda FS ɥ饤Фϥץ P Τ VFS  pioctl 
  ׵Venus ΥåԤǸ˸Ƥӽ
  ֤ޤåθ򴹤μϥץåȥեͭǤ
  ȤߤϰŪŬѲǽǤ (ΤȤ) ͤƤޤץ P
  ѤΤΥǡХåեϥͥ FS ɥ饤Фˤäƺ
  졢Venus Υ桼˥ԡޤ

  P 򥵡ӥ FS ɥ饤Ф Venus ؤ upcall ԤޤΤ
   upcall ϥå¤Τ뤳ȤǡVenus ޤ
  ¤ΤϡP μ̻ҡåֹ桢׵Υ׵
  ΥͥΥǡؤΥݥ󥿤ޤߤޤǡХåե
  Venus ݻ뤿˺ѤΤǡΥѤΥե
  ɤޤե饰եɤϥåξ֤Τ˵Ͽ뤿
  ˥åǻѤޤ˥ץåȥե¸ι¤ΤΥ
   (塼Υåΰ֤ݥ󥿤Ʊ֥
  ȤؤΥݥ󥿤ʤ) ޤupcall 롼ǥå¤
  ν󤬵졢ե饰 0 ꤵ졢Ե塼֤ޤ
  ХåեγƤ upcall Ƥ֥롼ǤǤ - ǡХ
  եι¤ϼΥޤ

  å줿ȤΤ뵡¸ߤ OS Ѳǽ
  Ʊ֥ȤѤƼƤʤФʤޤ󡣤Τ
  ץ P  upcall ƥȤǹԤޤåԵ
  塼ˤץ P  upcall Ԥޤ󡣥ե륷ƥ
  ׵롼 P  (ͥ⡼ɤ) ϡVenus 
  ǡڥɤʤФʤޤ󡣤äơP 饹åɤƤ
  Ȥ upcall ǥ֥åޤå¤ΤΥݥ󥿤 P
  򥹥꡼פƤƱ֥Ȥ򼨤Ǥ礦

  Venus ϥå夷Τ򸡽ФVenus  FS ɥ饤Ф
  getmsg_from_kernel ǥåޤΥν
  ϥͥǡåΥ塼˥å֤ READ
  Υե饰ꤹ뤳ȤǽޤVenus ˤϥǡХåեƤ
  ޤgetmsg_from_kernel ϸƤӽФ֤ꡢVenus ׵
  ޤ

  Ƥ顢FS ɥ饤Ф Venus åޤ
  Ūˤ Venus  sendmsg_to_kernel 򥳡뤷ݤǤλ Coda FS
  ɥ饤ФϥåƤ򸫤ơʲʬԤ򤹤뤫ꤷޤ
  -

  o  åڥɤ줿å P αä硣ξ
     硢塼åå WRITTEN ȥޡ
     ޤǸ FS ɥ饤Ф (Venus Υͥ⡼ɤΥƥ
     椫) P 򥢥֥åsendmsg_to_kernel  Venus ֤
     ޤץ P Ϥθ她塼뤵졢Venus α֤
     줿ǡХåեѤ upcall ν³ޤ

  o  å downcall ξ硣downcall  Venus  FS ɥ饤Ф
     ׵ǤFS ɥ饤Ф׵ľ˽ (̾省åɤΩ
     ֤) äsendmsg_to_kernel ֤ޤ

  θ P ϵ upcall ν³ޤɬפ̯ʤȤ
  ޤϤ P ϡ¾Υ饷ʥˤ upcall ǵ
  줿 (㤨 P λ褦Ȥ) ⤷ sendmsg_to_kernel 
  뤫äȤ̤ Venus ˤ굯줿ꤹ뤳Ȥˤ
  ޤ̾ξǤϡupcall Ԥä롼ϥå¤Τ
  ֤ޤκݤ FS 롼 upcall ³뤳Ȥ
  ޤ

                      Sleeping and IPC arrangements

  P  Venus ǤϤʤʥˤäƵ硢Ϥ˥ե饰ե
  ɤ򸫤ޤåޤ READ Ǥʤ硢ץ P ϡVenus
  Τ뤳Ȥʤ򰷤ȤǤޤVenus Υå
  ǤɤǤ (ե饰 READ Ǥ)׵٤ǤϤʤ硢P
  Υå̵뤹٤Ȥ򼨤ʥåVenus 
  뤳ȤǤޤΤ褦ʥʥϥ塼Ƭ֤졢Venus ϻ
  ɤߤޤåǤ WRITTEN ȥޡƤ硢
  ߤˤ٤ޤVFS 롼Ϥλ³Ԥޤ (-- VFS
  ׵᤬İʾ upcall ޤ硢ʣʾ֤ˤʤǽ
  ޤξнΤᡢǤ̲ᤷ֤ʤ򼨤̤ʥե
   "handle_signals" å¤Τɲä뤳ȤǤ
  --)

  3.1.  ξܺ

  λȤߤ Unix ǤϡCoda ˴ϢŤ줿饯ǥХ
  ޤVenus ϥǥХɤ߼ԤȤǡå
  ꡢϽ񤭹ߤ졢ΤϥǥХѤΥե뵭һҤФ
   select ƥॳѤޤץ P ϳ߲ǽԵ
  Υ֥ȾԤޤ

  Windows NT  DPMI Windows 95 Ǥ DeviceIoControl 뤬
  ޤDeviceIoControl ϥ桼꤫饫ͥ
  OPCODES ǥХåե򥳥ԡ뤿ΤΤǤsendmsg_to_kernel Ʊ
  ȤȯԤޤgetmsg_from_kernel Ʊ
  Windows EventObjects åΤΤ˻Ȥޤ
  ץ P ϡNT Ǥ KernelEvent ֥ȡWindows 95 Ǥϥ
  եԤޤ

  4.  ٥Υ󥿡ե

  Υ Coda FS ɥ饤Ф Venus ˹Ԥ upcall ˤĤƵ
  ޤ餽줾 upcall ϻĤι¤ΤѤԤޤ - 
  ͥ뤫 Venus ؤ̿ inputArgsVenus 饫֤ͥ
  outputArgsǸ cfs_downcalls  Venus 饫ͥưݤ˻
  ޤ

  union inputArgs {
      struct cfs_in_hdr ih;       /* NB: every struct below begins with an ih */
      struct cfs_open_in cfs_open;
      struct cfs_close_in cfs_close;
      struct cfs_ioctl_in cfs_ioctl;
      struct cfs_getattr_in cfs_getattr;
      struct cfs_setattr_in cfs_setattr;
      struct cfs_access_in cfs_access;
      struct cfs_lookup_in cfs_lookup;
      struct cfs_create_in cfs_create;
      struct cfs_remove_in cfs_remove;
      struct cfs_link_in cfs_link;
      struct cfs_rename_in cfs_rename;
      struct cfs_mkdir_in cfs_mkdir;
      struct cfs_rmdir_in cfs_rmdir;
      struct cfs_readdir_in cfs_readdir;
      struct cfs_symlink_in cfs_symlink;
      struct cfs_readlink_in cfs_readlink;
      struct cfs_fsync_in cfs_fsync;
      struct cfs_inactive_in cfs_inactive;
      struct cfs_vget_in cfs_vget;
      struct cfs_rdwr_in cfs_rdwr;
      struct cfs_open_by_path_in cfs_open_by_path;
  };

  union outputArgs {
      struct cfs_out_hdr oh; /* NB: every struct below begins with an oh */
      struct cfs_root_out cfs_root;
      struct cfs_open_out cfs_open;
      struct cfs_ioctl_out cfs_ioctl;
      struct cfs_getattr_out cfs_getattr;
      struct cfs_lookup_out cfs_lookup;
      struct cfs_create_out cfs_create;
      struct cfs_mkdir_out cfs_mkdir;
      struct cfs_readdir_out cfs_readdir;
      struct cfs_readlink_out cfs_readlink;
      struct cfs_vget_out cfs_vget;
      struct cfs_purgeuser_out cfs_purgeuser;
      struct cfs_zapfile_out cfs_zapfile;
      struct cfs_zapdir_out cfs_zapdir;
      struct cfs_zapvnode_out cfs_zapvnode;
      struct cfs_purgefid_out cfs_purgefid;
      struct cfs_rdwr_out cfs_rdwr;
      struct cfs_replace_out cfs_replace;
      struct cfs_open_by_path_out cfs_open_by_path;
  };

  union cfs_downcalls {
      /* CFS_FLUSH  is also a down call */
      struct cfs_purgeuser_out purgeuser;
      struct cfs_zapfile_out zapfile;
      struct cfs_zapdir_out zapdir;
      struct cfs_zapvnode_out zapvnode;
      struct cfs_purgefid_out purgefid;
      struct cfs_replace_out replace;
  };

  إåϤ٤ƤΥ˶̤ǡץǧڡopcode ξޤ
  ޤ -

  struct cfs_in_hdr {
      unsigned long opcode;
      unsigned long unique;    /* Keep multiple outstanding msgs distinct */
      u_short pid;                  /* Common to all */
      u_short pgid;                 /* Common to all */
      u_short sid;                  /* to become the PAG */
      struct coda_cred cred;        /* to become a PAG */
  };

  /* Really important that opcode and unique are 1st two fields! */
  struct cfs_out_hdr {
      unsigned long opcode;
      unsigned long unique;
      unsigned long result;
  };

  ˿ʤˡ͡ʥեɤޤinputArgs ϡVenus
  ׵ᤵ륵ӥμ opcode ǻϤޤޤ30 ۤɤ
  upcall ꡢޤunique եɤϥåդ˼
  ̤ˡʿ inputArg ̤ޤץӥץ
  פ id ϤޤǸˡƤӽФο٤ξ󤬴ޤޤޤ

  ΥĴ٤ˡͥ Venus ˶ͭ͡ʥǡ
  ¤ΤΤɬפޤ

  4.1.  ͥ Venus ˶ͭǡ¤

  CodaCred ¤Τ user  group id ˴ؤ͡ʤΤ
  ӽФΥץˤäꤵޤvuid_t  guid_t  32
  ӥåʤǤ group Хåפޤ Unix
  Ǥ CodaCred  Coda ѤΤ褤ƥλȤߤμ˽ʬǤ
  ʬäƤޤWindows ĶǤΥƥĶϤˤ碌
  ¤Τν򤷤ʤФʤʤ⤷ޤ

  struct CodaCred {
      vuid_t cr_uid, cr_euid, cr_suid, cr_fsuid; /* Real, efftve, set, fs uid*/
      vgid_t cr_gid, cr_egid, cr_sgid, cr_fsgid; /* same for groups */
      vgid_t cr_groups[NGROUPS];        /* Group membership for caller */
  };

   Venus  CodaCreds ɬפɤϡǤǽŪˡ Venus
   ǥեȤ uid/gid äեȤϤVenus 
  group ˤĤΤޤ󡣤֤ group ХåפΥꥹȤ;ʬ
  

  Υƥ Coda ե̤뤿˻ȤŪʼ̻
  ViceFid Ǥե fid  cell  Coda ե륷ƥΥե
  ⤷ϥǥ쥯ȥŪޤ (-- cell ñ
  system control machine (SCM) ݸǲư Coda ФΥ롼
  Ǥ--)

  typedef struct ViceFid {
      VolumeId Volume;
      VnodeId Vnode;
      Unique_t Unique;
  } ViceFid;

  γƥե - VolumeId,VnodeId, Unique_t ʤ 32 ӥå
  ǤCoda cell ̤뤿ˤ⤦ĥեɤդɬ
  ȹͤƤޤ - Ϥ֤DNS ˤä Coda cell 
  ꤹ Ipv6  IP ɥ쥹ηˤʤǤ礦

  Venus ȥ֤ͥǶͭ줿˽פʹ¤Τϥե°Ǥ³
  ¤ΤϾ򴹤˻ѤޤϥǥХեΥݡ
  ( Coda ˤϤޤ) Τ褦ʾγĥѤξ꤬ޤ

  struct coda_vattr {
          enum coda_vtype va_type;        /* vnode type (for create) */
          u_short         va_mode;        /* files access mode and type */
          short           va_nlink;       /* number of references to file */
          vuid_t          va_uid;         /* owner user id */
          vgid_t          va_gid;         /* owner group id */
          long            va_fsid;        /* file system id (dev for now) */
          long            va_fileid;      /* file id */
          u_quad_t        va_size;        /* file size in bytes */
          long            va_blocksize;   /* blocksize preferred for i/o */
          struct timespec va_atime;       /* time of last access */
          struct timespec va_mtime;       /* time of last modification */
          struct timespec va_ctime;       /* time file changed */
          u_long          va_gen;         /* generation number of file */
          u_long          va_flags;       /* flags defined for file */
          dev_t           va_rdev;        /* device special file represents */
          u_quad_t        va_bytes;       /* bytes of disk space held by file */
          u_quad_t        va_filerev;     /* file modification number */
          u_int           va_vaflags;     /* operations flags, see below */
          long            va_spare;       /* remain quad aligned */
  };

  4.2.  pioctl 󥿡ե

  Coda ե륷ƥ˸ͭ׵pioctl 󥿡ե𤷤ơ
  ץꥱ󤫤ԤȤǤޤpioctl ϲۥե
  /coda/.CONTROL Ф̤ ioctl ȤƼޤpioctl 
  ϤΥե򳫤եϥɥ ioctl Ԥޤ
  ǸˤΥեĤޤ

  ǤΥͥδͿ open, close, ioctl ؤΥåϤpioctl
  ǡХåեΥѥ Coda ե륷ƥΥեǤ뤳
  γǧλȤߤ󶡤¤ޤ

  ͥϼηΥǡѥåȤϤޤ -

      struct {
          const char *path;
          struct ViceIoctl vidata;
          int follow;
      } data;

  

  struct ViceIoctl {
          caddr_t in, out;        /* Data to be transferred in, or out */
          short in_size;          /* Size of input buffer <= 2K */
          short out_size;         /* Maximum size of output buffer, <= 2K */
  };

  path Coda եǤʤФʤ餺Ǥʤ ioctl upcall Ϲ
  ʤǤ礦

    ǡ¤ΤӥɤϤ㤯Ǥɬפ
  ޤ

  ġΥޤ -

  4.3.  root

  

     
        

     

                struct cfs_root_out {
                    ViceFid VFid;
                } cfs_root;

  ܺ Υ Coda ե륷ƥν Venus عԤ
  ̤ 0 ʤ顢cfs_root ¤Τˤ Coda ե륷ƥΥ롼Ȥ
  ViceFid äƤޤ0 Ǥʤ̤硢ͤ Coda
  ե륷ƥΥ롼Ȥ򸫤Ĥݤ Venus ˽йäȤ
  ץåȥե˰¸顼ɤǤ

  4.4.  lookup

   ǥ쥯ȥˤ ViceFid ӥ֥Ȥμ̤¸ߤ뤫õ
  ޤ

  

     

                struct  cfs_lookup_in {
                    ViceFid     VFid;
                    char        *name;          /* Place holder for data. */
                } cfs_lookup;

     

                struct cfs_lookup_out {
                    ViceFid VFid;
                    int vtype;
                } cfs_lookup;

  ܺ Υϥǥ쥯ȥꥨȥ ViceFid  filetype 
  뤿˹Ԥޤ׵ᤵ줿ǥ쥯ȥꥨȥ name Ȥ̾
  Venus  cfs_lookup_in.VFid ǻꤵ줿ǥ쥯ȥ򸡺
  礦̤ϡ̾¸ߤʤ򸫤Ĥݤ˽йä
  (㤨Хͥڤ줿) Ȥ򼨤⤷ޤ󡣷̤ 0 ʤ顢
  ե cfs_lookup_out.VFid оݤ ViceFid 
  ꡢcfs_lookup_out.vtype ˤϥ֥Ȥμ̤򼨤̾ coda_vtype
  ޤ

  ֥Ȥ̾ϺĹ CFS_MAXNAMLEN  8 ӥåʸǡ
  CFS_MAXNAMLEN  256 ꤵƤޤ (ʸ 0 ߥ͡ʸ
  ޤߤޤ)

  ֥ȤͥΥ͡७å֤ƤϤʤʤȤ򼨤
  CFS_NOCACHE ǡVenus ե cfs_lookup.vtype ӥå¤Ƥ
  Ȥ򤹤뤳Ȥ˽פǤƥۥȤǶ礹ե Coda
  Υե륷ƥμºݤΥեϥͥ˷褷ƥå
  ƤϤʤ餺lookup  Venus ˹ԤʤФʤޤ

   vtype μ̤ϸǤcoda_vtype ˤʤ٤Ǥ Linux 
  CFS_NOCACHE °θޤ󤬡θ٤Ǥ

  4.5.  getattr

   ե°ޤ

  

     

                struct cfs_getattr_in {
                    ViceFid VFid;
                    struct coda_vattr attr; /* XXXXX */
                } cfs_getattr;

     

                struct cfs_getattr_out {
                    struct coda_vattr attr;
                } cfs_getattr;

  ܺ٤Υ fid ǻꤵ줿ե°֤ޤ

  顼 fid ä֥Ȥ¸ߤʤǤʤ
  ӽФ°򸫤ѡߥå󤬤ʤ硢顼ǽ
  ޤ

   ͥ FS ɥ饤 (LinuxNT, Windows 95) ¿ϡ
  "inode"  "FileHandle" Υ󥹥󥹤뤿ˡFid Ǥʤ
  °ɬפޤΤ褦ʥƥǤ Venus/ͥߺ
  ѥ٥ RPC ٥ξǡlookup  getattr ȹ碌뤳
  Ȥˤäƥѥեޥ󥹤Ǥ뤫⤷ޤ

  Ϥΰ vattr ¤Τ;ʬǺ٤Ǥ

  4.6.  setattr

   ե°ꤷޤ

  

     

                struct cfs_setattr_in {
                    ViceFid VFid;
                    struct coda_vattr attr;
                } cfs_setattr;

     
        

  ܺ ¤ attr  BSD ѹ줿°ǵޤ VNON
  ꤵ vtype ʳѹʤ° -1 ꤵޤ¾ϻ
  ꤵ줿ͤꤵޤFS ɥ饤Фѹ׵ԤäƤ褤
  °ϡmode, ownner, groupid, atime, mtime, ctime Ǥ֤ͤ
  Ԥ򼨤ޤ

  顼 ͡ʥ顼ǽޤ֥Ȥ¸ߤ
  Ǥʤѡߥå Venus Ϳʤʤɡ

  4.7.  access

  

  

     

                struct cfs_access_in {
                    ViceFid     VFid;
                    int flags;
                } cfs_access;

     
        

  ܺ flags ˵ܤ줿ԤˡVFid ǻꤵ륪֥
  Υ뤫ɤǧ򤷤ޤ̤ϥ̵ͭ
  ޤCoda ݸ򶯲뤿 ACL ȤäƤꡢɤΤȤ
  ȤǤϤʤФƥΥƥݾڤƤȤ
  ΤäƤȤϽפǤΥη̤ϡ桼ȡݻ
  Ƥ뤫ɤ˰¸Ǥ礦

  顼 ֥Ȥ¸ߤʤ⤷ޤ󡢤⤷ݸ򵭺
   ACL ϥǽǤϤʤ⤷ޤ

  4.8.  create

   ե뤿˸ƤӽФޤ

  

     

                struct cfs_create_in {
                    ViceFid VFid;
                    struct coda_vattr attr;
                    int excl;
                    int mode;
                    char        *name;          /* Place holder for data. */
                } cfs_create;

     

                struct cfs_create_out {
                    ViceFid VFid;
                    struct coda_vattr attr;
                } cfs_create;

  ܺ   upcall ϥեκ׵᤹뤿˸ƤӽФޤե
   VFid ǻꤵ줿ǥ쥯ȥ˺졢̾ name
  ⡼ɤ mode ˤʤǤ礦excl ꤵ줿硢ե뤬¸
  ߤХ顼֤Ǥ礦attr  size եɤ 0 ꤵ줿
  硢եڤĤޤե uid  gid 
  CodaCred Ѵꤵ졢uid ϥޥ CRTOUID Ѥޤ (Υ
  ϥץåȥե˰¸ޤ)硢ե VFid 
  °֤ޤCoda FS ɥ饤Ф̾參ͥ٥ǿ
  ȤΤ vnode, inode ⤷ϥեϥɥΥ󥹥󥹤
  Ǥ礦

  顼 ͡ʥ顼ǽޤѡߥåԽʬ
  ⤷ޤ󡣥֥Ȥ¸ߤ줬եǤʤ硢Unix 
  顼 EISDIR ֤ޤ

   ѥ᡼ȤߤϤȤƤΨŪǡƥॳ creat  VFS
   create ȤκƱ򼨤ΤȻפޤVFS  create Ͽ
  ֥Ȥκκݤˤ뤵ޤ create 
  Unix ΥȤϰۤʤꡢեǥץ֤˸ƤӽФ
  뤳ȤϤޤ󡣥ȥ󥱡Ȥȥ륷֤Υץ󡢤ӥ
  ɤϡñ Unix ǤΥ⡼ɤΰˤǤϤǤե饰ΰ
  ٤ǤϤޤ - ߤϡREAD ⤷ WRITE ⡼Ѥ
  եǥץ꥿֤ open (2) ǻȤƤޤ

  ǥ쥯ȥ°⡢size  mtime ѹΤǡ֤Ϥ
  Ǥ

  4.9.  mkdir

   ǥ쥯ȥޤ

  

     

                struct cfs_mkdir_in {
                    ViceFid     VFid;
                    struct coda_vattr attr;
                    char        *name;          /* Place holder for data. */
                } cfs_mkdir;

     

                struct cfs_mkdir_out {
                    ViceFid VFid;
                    struct coda_vattr attr;
                } cfs_mkdir;

  ܺ Υ create ˻Ƥޤǥ쥯ȥޤ
  ϥѥ᡼ mode եɤΤ˻Ȥޤ
  硢֤ attr Ͽǥ쥯ȥ°ޤ

  顼 create ƱͤǤ

   ϥѥ᡼°Ѥ mode ѹϤǤ

  Ƥ°ϡsize  mtime ѤΤǡ֤ϤǤ

  4.10.  link

   ¸եؤΥ󥯤ޤ

  

     

                struct cfs_link_in {
                    ViceFid sourceFid;          /* cnode to link *to* */
                    ViceFid destFid;            /* Directory in which to place link */
                    char        *tname;         /* Place holder for data. */
                } cfs_link;

     
        

  ܺ Υϡ̾ tname ä destFid ǻꤵǥ쥯
   sourceFid ؤΥ󥯤ޤϥåȤοƥǥ
  쥯ȥ¸ߤʤФʤޤ󡣤Ĥޤꡢοƥǥ쥯ȥ
  destFid ǤʤФʤޤ󡣤Ĥޤ Coda ϥǥ쥯ȥޤϡ
  ɥ󥯤򥵥ݡȤƤޤ֤ͤϴϢΤǤ
  ⤷ϼԤμ̤򼨤ޤ

  顼 ̾Υ顼ǽޤ

  4.11.  symlink

   ܥå󥯤ޤ

  

     

                struct cfs_symlink_in {
                    ViceFid     VFid;          /* Directory to put symlink in */
                    char        *srcname;
                    struct coda_vattr attr;
                    char        *tname;
                } cfs_symlink;

     
        ʤ

  ܺ ܥå󥯤ޤ󥯤 VFid ǻꤵǥ
  ȥ֤졢tname ̾ˤʤޤϥѥ̾ srcname ؤ
  Ǥ줿֥Ȥ° attr ꤵޤ

  顼

   åȥǥ쥯ȥ°ϡsize ѹΤǡ֤
  Ǥ

  4.12.  remove

   եޤ

  

     

                struct cfs_remove_in {
                    ViceFid     VFid;
                    char        *name;          /* Place holder for data. */
                } cfs_remove;

     
        ʤ

  ܺ  VFid ǻꤵǥ쥯ȥ cfs_remove_in.name ǻꤵ
  줿եޤ

  顼

   ǥ쥯ȥ°ϡsize  mtime Ѥ뤫⤷ʤ
  ǡ֤ϤǤ

  4.13.  rmdir

   ǥ쥯ȥޤ

  

     

                struct cfs_rmdir_in {
                    ViceFid     VFid;
                    char        *name;          /* Place holder for data. */
                } cfs_rmdir;

     
        ʤ

  ܺ VFid ǻꤵǥ쥯ȥ꤫ name ǻꤵ줿ǥ쥯ȥ
  ޤ

  顼

   ƥǥ쥯ȥ°ϡsize  mtime Ѥ뤫⤷ʤ
  ǡ֤ϤǤ

  4.14.  readlink

   ܥå󥯤ͤɤ߽Фޤ

  

     

                struct cfs_readlink_in {
                    ViceFid VFid;
                } cfs_readlink;

     

                struct cfs_readlink_out {
                    int count;
                    caddr_t     data;           /* Place holder for data. */
                } cfs_readlink;

  ܺ Υ롼 VFid ǻꤵ륷ܥå󥯤ƤХ
  ե data ɤ߽ФޤХåե data Ϥɤ̾ǤݻǤ
  褦 CFS_MAXNAMLEN 礭ɬפǤ (PATH ⤷ NAME??)

  顼 ̾Υ顼Ǥ

  4.15.  open

   ե򳫤ޤ

  

     

                struct cfs_open_in {
                    ViceFid     VFid;
                    int flags;
                } cfs_open;

     

                struct cfs_open_out {
                    dev_t       dev;
                    ino_t       inode;
                } cfs_open;

  ܺ   VFid ǻꤵե Venus Υå֤褦
  Venus ˰ꤷ˸ƤӽФΥץ open(2)  flags ͤǤ
  åΥե򳫤褦ꤹϢ׵Ǥͥؤ
  ͤ Unix  Windows ƥǤϰۤʤޤUnix ƥǤ Coda
  FS ɥ饤Ф dev  inode ΥեɤΥƥʥեΥ
  Х inode ֹΤޤ Windows Ǥϡƥʥե
  Υѥ֤ͥޤ

  顼

   cfs_open_out ¤Τ Windows ĶǤȸ̩ˤ
  ȤƤޤ󡣰Ĥϥƥʥե̾ǳ⤦Ĥϥ
  ʥե inode ǳȤĤ upcall 뤳Ȥɤ
  ⤷ޤ

  4.16.  close

   եĤоǤ򹹿ޤ

  

     

                struct cfs_close_in {
                    ViceFid     VFid;
                    int flags;
                } cfs_close;

     
        ʤ

  ܺ  VFid ǻꤵեĤޤ

  顼

   flags ̵̣ǡѤޤ󡣤ʤ顢 Venus Υ
  ɤ execp ϥեɤ򰷤;Ϥꡢ֤󡢤Υե
  ϡեĤ줿¹ԤΤ˥˥ޥåפ줿ޤޤǤ뤳
  ȤVenus Τ뤿˻Ȥ뤳ȤˤʤϤǤVenus
  vproc_vfscalls ǥǡäƤ뤳ȤӼäƤʤȤˤĤ
  ᤬ޤѤǤե뤬ĤƤ硢ƥ
  եΥǡϿǡˤʤäƤȤ٤Ǥ
  Ǥ execp ե饰ϺθˤʤäƤ뤫⤷ޤ - ߤ Venus
  Ǥϥե뤬Ūʥ˥ޥåפƤΤˤ⤫餺ե
  򥭥å夫եåǤȹͤ뤫⤷ޤ󡣤ΤȤ
  ɬפޤ

  4.17.  ioctl

   եФ ioctl Ԥޤ pioctl 󥿡ե
  ޤߤޤ

  

     

                struct cfs_ioctl_in {
                    ViceFid VFid;
                    int cmd;
                    int len;
                    int rwflag;
                    char *data;                 /* Place holder for data. */
                } cfs_ioctl;

     

                struct cfs_ioctl_out {
                    int len;
                    caddr_t     data;           /* Place holder for data. */
                } cfs_ioctl;

  ܺ եФ ioctl Ԥޤ command, len, data 
  ̾ﵭܤޤflags  Venus ϻѤޤ

  顼

   Ǥ̵Ѥʥѥ᡼Ǥflags ϻȤޤVenus Υ
   PREFETCHING 򲿤˻ȤȸĤʤǤ礦 ?

  4.18.  rename

   fid ̾ѹޤ

  

     

                struct cfs_rename_in {
                    ViceFid     sourceFid;
                    char        *srcname;
                    ViceFid destFid;
                    char        *destname;
                } cfs_rename;

     
        ʤ

  ܺ  ǥ쥯ȥ sourceFid  srcname Ȥ̾Υ֥Ȥ
  destFid  destname ѹޤ̾ srcname  destname 
  ʸ 0 ǥߥ͡ȤƤUnix ͥˤʸϤ
  Ĥ null ߥ͡ȤƤȤϸ¤ޤ

  顼

  4.19.  readdir

   ǥ쥯ȥꥨȥɤ߽Фޤ

  

     

                struct cfs_readdir_in {
                    ViceFid     VFid;
                    int count;
                    int offset;
                } cfs_readdir;

     

                struct cfs_readdir_out {
                    int size;
                    caddr_t     data;           /* Place holder for data. */
                } cfs_readdir;

  ܺ ǥ쥯ȥꥨȥ VFid  offset  count Хɤ߽
  ޤǡ data ֤졢Υ򼨤 size ֤ޤ

  顼

   ΥϻѤޤReaddir ϥƥʥե
  뤿Ǥ줫Ԥǥ쥯ȥβɤδ֤ˡηƹͤ
  

  4.20.  vget

   FSDB->Get Ԥ褦 Venus ˻ؼޤ

  

     

                struct cfs_vget_in {
                    ViceFid VFid;
                } cfs_vget;

     

                struct cfs_vget_out {
                    ViceFid VFid;
                    int vtype;
                } cfs_vget;

  ܺ  upcall  VFid ǥ٥դ줿 fsobj Фơget 
  Ԥ褦 Venus ˰ꤷޤ

  顼

   ϻѤޤ󡣤ʤ顢˥ޥåפ줿ե
  ɤ߽Ф񤭹ߤб뤿˻ȤȤǤΤǡͭ
  ѤǤΥե vget Ѥ Venus Υå
  ָפǤinactive ǲǤޤ

  4.21.  fsync

   ե RVM °򹹿褦 Venus ̿ޤ

  

     

                struct cfs_fsync_in {
                    ViceFid VFid;
                } cfs_fsync;

     
        ʤ

  ܺ  ֥ VFid  RVM °򹹿褦 Venus ˰ꤷޤ
  ϥͥ٥ fsync तΥΰȤƸƤФϤ
  ̤Ʊɤ򼨤ޤ

  顼

  NOTE Linux ϤΥƤޤ󡣼٤Ǥ

  4.22.  inactive

   vnode ⤦Ѥʤ Venus ̿ޤ

  

     

                struct cfs_inactive_in {
                    ViceFid VFid;
                } cfs_inactive;

     
        ʤ

  ܺ  EOPNOTSUPP ֤ޤ

  顼

   Ϥ֤ϤǤ

  4.23.  rdwr

   եФɤ߽Ф񤭹ߤ򤷤ޤ

  

     

                struct cfs_rdwr_in {
                    ViceFid     VFid;
                    int rwflag;
                    int count;
                    int offset;
                    int ioflag;
                    caddr_t     data;           /* Place holder for data. */
                } cfs_rdwr;

     

                struct cfs_rdwr_out {
                    int rwflag;
                    int count;
                    caddr_t     data;   /* Place holder for data. */
                } cfs_rdwr;

  ܺ  upcall ϥեФɤ߽Ф񤭹ߤԤ褦 Venus 
  ꤷޤ

  顼

   ɤ߽Ф񤭹ߤ Venus ϹԤʤȤ Coda μ˵
  餦ȤʤΤǡϺϤǤưʤʹ
  ޤ߻ѤƤޤ

  4.24.  odymount

   Ĥ Unix ΥޥȥݥȤʣ Coda ե륷ƥ
  Ȥ뤳ȤǽȤޤ

  

     

                struct ody_mount_in {
                    char        *name;          /* Place holder for data. */
                } ody_mount;

     

                struct ody_mount_out {
                    ViceFid VFid;
                } ody_mount;

  ܺ  name ǻꤵ줿 Coda ƥ rootfid ֤褦 Venus ˰
  ꤷޤfid  VFid ֤ޤ

  顼

   Υ dynamic set  David ȤäƤޤ
  VFS ޥƥΰΥݥ󥿤ʣˤƤޤΤǡϤ
  Ǥ̤ Coda ϻѤޤ󡣤Υ Venus ǤϼƤ
  ޤ

  4.25.  ody_lookup

   Ĵ٤ޤ

  

     
        ̵ط

     
        ̵ط

  ܺ

  顼

   ȤϤޤ󡣤Υ Venus ǤϼƤޤ

  4.26.  ody_expand

   dynamic set ˤ벿ĥޤ

  

     
        ̵ط

     
        ̵ط

  ܺ

  顼

   ȤϤޤ󡣤Υ Venus ǤϼƤޤ

  4.27.  prefetch

   dynamic set ɤߤޤ

  

     
        ɥȲƤޤ

     
        ɥȲƤޤ

  ܺ  Venus  worker.cc ˤϤΥΥݡȤޤư
  ʤȵƤޤͥϥݡȤƤޤΤǡ϶ä
  ȤǤϤޤ (ODY_PREFETCH ưƤޤ)

  顼

   ȤϤޤ󡣥ưCoda ǻѤޤ

  4.28.  signal

   upcall ˴ؤ signal  Venus ޤ

  

     
        ʤ

     
        Ŭ

  ܺ   Venus ؤ upcall ̾ϰϳΤΤǡVenus 
  塼åɤ塢ƤӽФΥץ signal 
  äȤ Venus ΤޤVenus λ뤳ȤˤʤäƤ
  ޤ

  顼 Ϥޤ

   Venus δλԤ Venus λɬפ
  Τɤ򤷤Ƥɬפޤˡƥॳξ
  ʣ upcall Τ˰ɬפޤޤVenus  upcall θ塢
  ͥ뤫 (ǤϰϤȤ) λΤԤɬפΤɤΤ褦ʾ
   Venus ǵΤΤ뤳ȤפǤ (㤨 open ϴְ㤤ʤ
  Τ褦ʾѲǤ¾¿ΤΤϤǤϤʤ⤷ޤ)

  5.  ߥ˥å downcall

  Coda FS ɥ饤Фϡupcall β뤿ˡlookup 
  access η̤򥭥åǤޤupcall ϡץƥȥ
  åԤɬפΤǡȤޤ򥭥å夹뤳
  ȤбơVenus  FS ɥ饤Ф˥å夵줿ȥΥե
  ̾ѹԤʤФʤʤȤΤԤޤ

  Ū˥ͥ륳ɤϡVenus  ViceFid ȶΥե
  ϥɥ (BSD  vnode, Linux  inode, Windows  FileHandle ȸƤ
  ޤ) ˥󥯤¤ΤʤФʤޤ󡣤ͳϡ
  Ѵupcall Ԥäꡢ upcall η̤Ѥɬ
  פȤʤ뤫Ǥä󥯤줿֥Ȥ cnode ȸƤФ
  ޤ

  ԤΥߥ˥åμϰʲϿå奨ȥˤʤäƤ
  ޤ -

  1. ե̾

  2. ֥ȤޤǤǥ쥯ȥ cnode

  3. lookup  CodaCred ΰ

  4. ֥Ȥ cnode

  Coda FS ɥ饤Фˤ lookup ϡƤӽФ̾ǥ쥯
  ꡢCodaCred Ϥå夫˾륪֥Ȥ cnode ׵
  뤫⤷ޤ󡣥å cnode ֤Ĥʤä
  򼨤Ǥ礦Coda FS ɥ饤Фϡ֥Ȥν⤷Ϻ
  硢å奨ȥ̵꤬ˤʤ褦ˡդʤФʤޤ
  

  å奨ȥ꤬⤦ͭǤϤʤȤ򼨤硢Venus 
  ͥ downcall ȯԤǤ礦downcall  Coda FS ɥ饤Ф
  ͤ졢åʲ˽Ҥ٤̵ˤޤdowncall Υǡ
  ͥɤ߽ФʤCoda FS ɥ饤Фϥ顼
  ֤ޤ

  5.1.  INVALIDATE

  ΥξϤޤ

  5.2.  FLUSH

   ʤ

   ͡७åΤեå夷ޤ

  ܺ Venus ϵưӽλˤΥȯԤޤ̵ʥ
  ݻɤޤͥΥ͡७åưŪڤ륪
  졼ƥ󥰥ƥ⤢ޤ줬λ downcall Ͻλ
  

  5.3.  PURGEUSER

  

          struct cfs_purgeuser_out {/* CFS_PURGEUSER is a venus->kernel call */
              struct CodaCred cred;
          } cfs_purgeuser;

  ܺ Cred ĥåΤ٤ƤΥȥޤΥ
  ϡ桼ѤΥȡδ¤ڤ뤫եå夵ȯԤ
  

  5.4.  ZAPFILE

  

          struct cfs_zapfile_out {  /* CFS_ZAPFILE is a venus->kernel call */
              ViceFid CodaFid;
          } cfs_zapfile;

  ܺ ǥ쥯ȥ vnode ̾ȤߤĤ٤ƤΥȥ
  å夵줿 vnode °Ȥʤä̡ȯԤޤ

    NetBSD  Mach ̾ǤϤޤ󡣥ߥ
  å zapfile 롼ΰϰۤʤäƤޤLinuxϡ°
  Ƥޤ

  5.5.  ZAPDIR

  

          struct cfs_zapdir_out {   /* CFS_ZAPDIR is a venus->kernel call */
              ViceFid CodaFid;
          } cfs_zapdir;

  ܺ ǥ쥯ȥ CodaFid ӤΥǥ쥯ȥΤ٤ƤλҤΥȥ
  򡢥å椫顢٤ƺޤVenus ǥ쥯ȥ
  callback äȯԤޤ

  5.6.  ZAPVNODE

  

          struct cfs_zapvnode_out { /* CFS_ZAPVNODE is a venus->kernel call */
              struct CodaCred cred;
              ViceFid VFid;
          } cfs_zapvnode;

  ܺ Ϥ cred  VFid ĥåΥȥ
  򤹤٤ƺޤΥϤ֤ȯԤ뤳ȤϤޤ
  5.7.  PURGEFID

  

  

          struct cfs_purgefid_out { /* CFS_PURGEFID is a venus->kernel call */
              ViceFid CodaFid;
          } cfs_purgefid;

  ܺ եΤ°եå夷ޤ줬ǥ쥯ȥ (
   vnode) ʤ顢͡७å夫ΤλҤ͡७å
  եޤ

  5.8.  REPLACE

   ̾Υ쥯Τ Fid ֤ޤ

  

          struct cfs_replace_out { /* cfs_replace is a venus->kernel call */
              ViceFid NewFid;
              ViceFid OldFid;
          } cfs_replace;

  ܺ Υ롼ϥ͡७å ViceFid ̤ΤΤ֤
  ޤǤƤ֥˳Ƥ줿ƥݥ fid 򥰥
   fid ֤뤿κδ֡ fid λȥȤ 0
  ǤʤȤǤVenus ˵Ĥɲäޤ

  6.  ȥ꡼󥢥å

  ư߻뤤 Venus θξ Coda FS ɥ饤Ѥ˾ޤ
  뵡ǽ򡢴ʷˤΥǽҤ٤ޤϤˡCoda FS 
  饤ФΥǡƤ뤳ȤƳǧƤޤ礦

  1. å塼

  2. cnode

  3. ͡७å奨ȥ

     ͡७å奨ȥϴ˥ɥ饤ФͭΤǡϴ
     ñǤޤ̤˥å塼ˤΤ˽Ӹ
     Υ롼󤬤Ǥ礦cnode ϤϤ뤫˰Ť餤Τ
     Coda ե륷ƥ˥桼ץ黲ȤƤ
     ݻƤΤǡcnode 򥯥꡼󥢥åפΤϺ񤫤⤷ޤ
     

  ΤΤ׵᤬ǽޤ -

  1. å֥ƥ

  2. VFS 

  3. pioctl 󥿡ե

     ߡ pioctl  VFS 𤷤 Coda ϤΤǡƱͤ˰
     ȤǤޤ

  6.1.  ɬܾ

  ɬܾб٤Ǥ -

  1. å塼 open  close 롼äƤϤ
     Unix Υ饯ǥХΥץϤä롼Ǥ

     o  ץˡå֤ȤϤǤޤ

     o  ץαΤޤޤθŤå򤹤٤ƺޤ

     o   upcall λǤʤ꡼Υץ٤Ƥ
        ԤǤ礦

     o  ϥå塼˳Ƥ줿٤ƤΥ
        Ǥ礦

  2. ץǥ͡७å϶ξ֤˽٤Ǥ

  3. å塼򥪡ץ󤹤ϡVFS Ϥ٤ƼԤǤ
     ˤ⡢ץ󤹤 Coda ե륷ƥΥޥȤ
     ʤΤǡˤǧ뤳ȤǤޤ

  4. 塼ΥθϡVFS ޤ󡣤ǵդʤ
     ФʤʤȤϡ (lookup, read/write, readdir) 
     upcall ʤƤޤȤǤŪ˻ߤʤ
     ʤޤ

  5. ˺ݤƥ͡७åϥեå夵̵ˤʤΤȤ
     ޤ

  6. cnode ݻ줿٤ƤΥ upcall ˰¸ˤ٤Ƥ
     뤳ȤǤޤ

  7. ե륷ƥΥޥȤ upcall ˰¸˹ԤȤǤ
     ޤ

  8. Venus  rootfid ⤷ rootfid °ʤ硢
     ե륷ƥΥޥȤͥ˼Ԥ٤ǤޥȤ
     ˡΥ֥Ȥɤߤ뤿ˡVenus  lattr 
     ԤɤǤ礦

    ä NetBSD ǡ Linux 嵭ɬܾ˼Ƥ
  ޤ󡣱߳ΤˡƤɬפޤ

  7.  Inode ֹ

  Unix  stat ƥॳϥեѤ inode ֤ޤgetwd 
  tar Τ褦ʥ饤֥ꥳ뤬ǽ褦ˡCoda եѤ
  ɬפޤ

  ܥ塼ΥޥȥݥȤϡVenus  statbuf ¤Τ˳Ƥ
  inode ֹͤʣˤޤ§ϼΤȤǤ -

  1. fid  (vol<<20) + (vnode<<10) + (uniq) Ѵޤ

  2. fid ܥ塼Υ롼ȤǤ硢ΥޥȥݥȤǤ륷
     ܥå󥯤 inode ֹ椬Ƥޤ

  ͥϥޥȥݥȤΥܥå󥯤򥭥å夷ƤϤʤ
  󤬡򥫥С뤳ȤǤʤ縫뤳ȤϤޤޤ󡣤
  ˥å夫饷ܥå fid  downcall 
  ͥ뤬ޥȥݥȤ fid ˸ƤʤȤ¤ˤ
  Ԥޤ

  Coda ѤΥͥ륳ɤ Fid ˴Ť vnode (BSD), inode (Linux),
  FileHandle (Win) õ lookup λȤߤ뤿ɬפǡܥ
  Υ롼Ȥ褦ĤɬפǤ礦

  8.  ܸˤĤ

  ܸ Linux Japanese FAQ Project Ԥޤ˴ؤ뤴ո
   JF ץ <JF@linux.or.jp> ϢƤ

     v1.2
        : ܹ <hng@ps.ksky.ne.jp>

        :
        ë 鳨 <jeanne@mbox.kyoto-inet.or.jp>
        Seiji Kaneko <skaneko@a2.mbn.or.jp>
