~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/Documentation/filesystems/coda.rst

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /Documentation/filesystems/coda.rst (Version linux-6.12-rc7) and /Documentation/filesystems/coda.rst (Version linux-4.4.302)


  1 .. SPDX-License-Identifier: GPL-2.0               
  2                                                   
  3 ===========================                       
  4 Coda Kernel-Venus Interface                       
  5 ===========================                       
  6                                                   
  7 .. Note::                                         
  8                                                   
  9    This is one of the technical documents desc    
 10    Coda -- this document describes the client     
 11                                                   
 12 For more information:                             
 13                                                   
 14   http://www.coda.cs.cmu.edu                      
 15                                                   
 16 For user level software needed to run Coda:       
 17                                                   
 18   ftp://ftp.coda.cs.cmu.edu                       
 19                                                   
 20 To run Coda you need to get a user level cache    
 21 named Venus, as well as tools to manipulate AC    
 22 client needs to have the Coda filesystem selec    
 23 configuration.                                    
 24                                                   
 25 The server needs a user level server and at pr    
 26 kernel support.                                   
 27                                                   
 28   The Venus kernel interface                      
 29                                                   
 30   Peter J. Braam                                  
 31                                                   
 32   v1.0, Nov 9, 1997                               
 33                                                   
 34   This document describes the communication be    
 35   level filesystem code needed for the operati    
 36   tem.  This document version is meant to desc    
 37   (version 1.0) as well as improvements we env    
 38                                                   
 39 .. Table of Contents                              
 40                                                   
 41   1. Introduction                                 
 42                                                   
 43   2. Servicing Coda filesystem calls              
 44                                                   
 45   3. The message layer                            
 46                                                   
 47      3.1 Implementation details                   
 48                                                   
 49   4. The interface at the call level              
 50                                                   
 51      4.1 Data structures shared by the kernel     
 52      4.2 The pioctl interface                     
 53      4.3 root                                     
 54      4.4 lookup                                   
 55      4.5 getattr                                  
 56      4.6 setattr                                  
 57      4.7 access                                   
 58      4.8 create                                   
 59      4.9 mkdir                                    
 60      4.10 link                                    
 61      4.11 symlink                                 
 62      4.12 remove                                  
 63      4.13 rmdir                                   
 64      4.14 readlink                                
 65      4.15 open                                    
 66      4.16 close                                   
 67      4.17 ioctl                                   
 68      4.18 rename                                  
 69      4.19 readdir                                 
 70      4.20 vget                                    
 71      4.21 fsync                                   
 72      4.22 inactive                                
 73      4.23 rdwr                                    
 74      4.24 odymount                                
 75      4.25 ody_lookup                              
 76      4.26 ody_expand                              
 77      4.27 prefetch                                
 78      4.28 signal                                  
 79                                                   
 80   5. The minicache and downcalls                  
 81                                                   
 82      5.1 INVALIDATE                               
 83      5.2 FLUSH                                    
 84      5.3 PURGEUSER                                
 85      5.4 ZAPFILE                                  
 86      5.5 ZAPDIR                                   
 87      5.6 ZAPVNODE                                 
 88      5.7 PURGEFID                                 
 89      5.8 REPLACE                                  
 90                                                   
 91   6. Initialization and cleanup                   
 92                                                   
 93      6.1 Requirements                             
 94                                                   
 95 1. Introduction                                   
 96 ===============                                   
 97                                                   
 98   A key component in the Coda Distributed File    
 99   manager, Venus.                                 
100                                                   
101   When processes on a Coda enabled system acce    
102   filesystem, requests are directed at the fil    
103   operating system. The operating system will     
104   service the request for the process.  Venus     
105   client cache and makes remote procedure call    
106   related servers (such as authentication serv    
107   requests it receives from the operating syst    
108   serviced a request it replies to the operati    
109   return codes, and other data related to the     
110   kernel support for Coda may maintain a minic    
111   requests to limit the number of interactions    
112   possesses the facility to inform the kernel     
113   minicache are no longer valid.                  
114                                                   
115   This document describes precisely this commu    
116   kernel and Venus.  The definitions of so cal    
117   will be given with the format of the data th    
118   describe the semantic invariants resulting f    
119                                                   
120   Historically Coda was implemented in a BSD f    
121   The interface between the kernel and Venus i    
122   VFS interface.  Similar functionality is pro    
123   the parameters and returned data is very sim    
124   leads to an almost natural environment for i    
125   filesystem driver for Coda in a BSD system.     
126   systems such as Linux and Windows 95 and NT     
127   with different interfaces.                      
128                                                   
129   To implement Coda on these systems some reve    
130   Venus/Kernel protocol is necessary.  Also it    
131   systems could profit significantly from cert    
132   and modifications to the protocol. To facili    
133   to make future ports easier, communication b    
134   kernel should be documented in great detail.    
135   document.                                       
136                                                   
137 2.  Servicing Coda filesystem calls               
138 ===================================               
139                                                   
140   The service of a request for a Coda file sys    
141   a process P which accessing a Coda file. It     
142   traps to the OS kernel. Examples of such cal    
143   are ``read``, ``write``, ``open``, ``close``    
144   ``rmdir``, ``chmod`` in a Unix ontext.  Simi    
145   environment, and are named ``CreateFile``.      
146                                                   
147   Generally the operating system handles the r    
148   filesystem (VFS) layer, which is named I/O M    
149   manager in Windows 95.  The VFS is responsib    
150   of the request and for locating the specific    
151   service parts of the request.  Usually the i    
152   assists in locating the correct FS drivers.     
153   pre-processing, the VFS starts invoking expo    
154   driver.  This is the point where the FS spec    
155   request starts, and here the Coda specific k    
156   play.                                           
157                                                   
158   The FS layer for Coda must expose and implem    
159   First and foremost the VFS must be able to m    
160   the Coda FS layer, so the Coda FS driver mus    
161   as applicable in the operating system. These    
162   among operating systems, but share features     
163   read/write and create and remove objects.  T    
164   such VFS requests by invoking one or more we    
165   offered by the cache manager Venus.  When th    
166   come back to the FS driver, servicing of the    
167   finishes with a reply to the kernel's VFS. F    
168   returns to the process.                         
169                                                   
170   As a result of this design a basic interface    
171   must allow Venus to manage message traffic.     
172   be able to retrieve and place messages and t    
173   arrival of a new message. The notification m    
174   which does not block Venus since Venus must     
175   when no messages are waiting or being proces    
176                                                   
177   **Interfaces of the Coda FS Driver**            
178                                                   
179   Furthermore the FS layer provides for a spec    
180   between a user process and Venus, called the    
181   pioctl interface is used for Coda specific s    
182   requesting detailed information about the pe    
183   Venus. Here the involvement of the kernel is    
184   the calling process and passes the informati    
185   Venus replies the response is passed back to    
186   form.                                           
187                                                   
188   Finally Venus allows the kernel FS driver to    
189   certain services.  This is done to avoid exc    
190   and results in an efficient system.  However    
191   information, for example from the network wh    
192   information must be flushed or replaced. Ven    
193   to the Coda FS layer to request flushes or u    
194   kernel FS driver handles such requests synch    
195                                                   
196   Among these interfaces the VFS interface and    
197   receive and be notified of messages are plat    
198   not go into the calls exported to the VFS la    
199   requirements of the message exchange mechani    
200                                                   
201                                                   
202 3.  The message layer                             
203 =====================                             
204                                                   
205   At the lowest level the communication betwee    
206   proceeds through messages.  The synchronizat    
207   requesting Coda file service and Venus relie    
208   up processes.  The Coda FS driver processes     
209   on behalf of a process P, creates messages f    
210   and finally returns to the caller.  The impl    
211   of messages is platform specific, but the se    
212   appeared to be generally applicable.  Data b    
213   FS Driver in kernel memory on behalf of P an    
214   Venus.                                          
215                                                   
216   The FS Driver while servicing P makes upcall    
217   upcall is dispatched to Venus by creating a     
218   structure contains the identification of P,     
219   number, the size of the request and a pointe    
220   memory for the request.  Since the data buff    
221   reply from Venus, there is a field for the s    
222   field is used in the message to precisely re    
223   message.  Additional platform dependent stru    
224   determine the position of the message on que    
225   synchronization objects.  In the upcall rout    
226   is filled in, flags are set to 0, and it is     
227   queue.  The routine calling upcall is respon    
228   data buffer; its structure will be described    
229                                                   
230   A facility must exist to notify Venus that t    
231   created, and implemented using available syn    
232   the OS. This notification is done in the upc    
233   P. When the message is on the pending queue,    
234   in upcall.  The (kernel mode) processing of     
235   request routine must be suspended until Venu    
236   the calling thread in P is blocked in upcall    
237   message structure will locate the synchroniz    
238   sleeping.                                       
239                                                   
240   Venus detects the notification that a messag    
241   driver allow Venus to retrieve the message w    
242   call. This action finishes in the kernel by     
243   queue of processing messages and setting fla    
244   passed the contents of the data buffer. The     
245   now returns and Venus processes the request.    
246                                                   
247   At some later point the FS driver receives a    
248   namely when Venus calls sendmsg_to_kernel.      
249   driver looks at the contents of the message     
250                                                   
251                                                   
252   *  the message is a reply for a suspended th    
253      the message from the processing queue and    
254      WRITTEN.  Finally, the FS driver unblocks    
255      mode context of Venus) and the sendmsg_to    
256      Venus.  The process P will be scheduled a    
257      processing its upcall with the data buffe    
258      from Venus.                                  
259                                                   
260   *  The message is a ``downcall``.  A downcal    
261      the FS Driver. The FS driver processes th    
262      (usually a cache eviction or replacement)    
263      sendmsg_to_kernel returns.                   
264                                                   
265   Now P awakes and continues processing upcall    
266   subtleties to take account of. First P will     
267   up in upcall by a signal from some other sou    
268   attempt to terminate P) or as is normally th    
269   sendmsg_to_kernel call.  In the normal case,    
270   deallocate the message structure and return.    
271   with its processing.                            
272                                                   
273                                                   
274   **Sleeping and IPC arrangements**               
275                                                   
276   In case P is woken up by a signal and not by    
277   at the flags field.  If the message is not y    
278   handle its signal without notifying Venus.      
279   the request should not be processed, P can s    
280   to indicate that it should disregard the pre    
281   signals are put in the queue at the head, an    
282   the message is already marked as WRITTEN it     
283   processing.  The VFS routine will now contin    
284   involves more than one upcall, this can lead    
285   extra field "handle_signals" could be added     
286   to indicate points of no return have been pa    
287                                                   
288                                                   
289                                                   
290 3.1.  Implementation details                      
291 ----------------------------                      
292                                                   
293   The Unix implementation of this mechanism ha    
294   implementation of a character device associa    
295   retrieves messages by doing a read on the de    
296   with a write and notification is through the    
297   file descriptor for the device.  The process    
298   interruptible wait queue object.                
299                                                   
300   In Windows NT and the DPMI Windows 95 implem    
301   call is used.  The DeviceIoControl call is d    
302   from user memory to kernel memory with OPCOD    
303   is issued as a synchronous call, while the g    
304   asynchronous.  Windows EventObjects are used    
305   message arrival.  The process P is kept wait    
306   object in NT and a semaphore in Windows 95.     
307                                                   
308                                                   
309 4.  The interface at the call level               
310 ===================================               
311                                                   
312                                                   
313   This section describes the upcalls a Coda FS    
314   Each of these upcalls make use of two struct    
315   outputArgs.   In pseudo BNF form the structu    
316   form::                                          
317                                                   
318                                                   
319         struct inputArgs {                        
320             u_long opcode;                        
321             u_long unique;     /* Keep multipl    
322             u_short pid;                 /* Co    
323             u_short pgid;                /* Co    
324             struct CodaCred cred;        /* Co    
325                                                   
326             <union "in" of call dependent part    
327         };                                        
328                                                   
329         struct outputArgs {                       
330             u_long opcode;                        
331             u_long unique;       /* Keep multi    
332             u_long result;                        
333                                                   
334             <union "out" of call dependent par    
335         };                                        
336                                                   
337                                                   
338                                                   
339   Before going on let us elucidate the role of    
340   inputArgs start with the opcode which define    
341   requested from Venus. There are approximatel    
342   which we will discuss.   The unique field la    
343   unique number which will identify the messag    
344   process group id are passed.  Finally the cr    
345   are included.                                   
346                                                   
347   Before delving into the specific calls we ne    
348   data structures shared by the kernel and Ven    
349                                                   
350                                                   
351                                                   
352                                                   
353 4.1.  Data structures shared by the kernel and    
354 ----------------------------------------------    
355                                                   
356                                                   
357   The CodaCred structure defines a variety of     
358   they are set for the calling process. The vu    
359   unsigned integers.  It also defines group me    
360   Unix the CodaCred has proven sufficient to i    
361   semantics for Coda but the structure may hav    
362   for the Windows environment when these matur    
363                                                   
364         struct CodaCred {                         
365             vuid_t cr_uid, cr_euid, cr_suid, c    
366             vgid_t cr_gid, cr_egid, cr_sgid, c    
367             vgid_t cr_groups[NGROUPS];            
368         };                                        
369                                                   
370                                                   
371   .. Note::                                       
372                                                   
373      It is questionable if we need CodaCreds i    
374      doesn't know about groups, although it do    
375      default uid/gid.  Perhaps the list of gro    
376                                                   
377                                                   
378   The next item is the fundamental identifier     
379   files, the ViceFid.  A fid of a file uniquel    
380   directory in the Coda filesystem within a ce    
381                                                   
382         typedef struct ViceFid {                  
383             VolumeId Volume;                      
384             VnodeId Vnode;                        
385             Unique_t Unique;                      
386         } ViceFid;                                
387                                                   
388   .. [1] A cell is agroup of Coda servers acti    
389          system control machine or SCM. See th    
390          for a detailed description of the rol    
391                                                   
392   Each of the constituent fields: VolumeId, Vn    
393   unsigned 32 bit integers.  We envisage that     
394   to be prefixed to identify the Coda cell; th    
395   form of a Ipv6 size IP address naming the Co    
396                                                   
397   The next important structure shared between     
398   the attributes of the file.  The following s    
399   exchange information.  It has room for futur    
400   support for device files (currently not pres    
401                                                   
402                                                   
403         struct coda_timespec {                    
404                 int64_t         tv_sec;           
405                 long            tv_nsec;          
406         };                                        
407                                                   
408         struct coda_vattr {                       
409                 enum coda_vtype va_type;          
410                 u_short         va_mode;          
411                 short           va_nlink;         
412                 vuid_t          va_uid;           
413                 vgid_t          va_gid;           
414                 long            va_fsid;          
415                 long            va_fileid;        
416                 u_quad_t        va_size;          
417                 long            va_blocksize;     
418                 struct coda_timespec va_atime;    
419                 struct coda_timespec va_mtime;    
420                 struct coda_timespec va_ctime;    
421                 u_long          va_gen;           
422                 u_long          va_flags;         
423                 dev_t           va_rdev;          
424                 u_quad_t        va_bytes;         
425                 u_quad_t        va_filerev;       
426                 u_int           va_vaflags;       
427                 long            va_spare;         
428         };                                        
429                                                   
430                                                   
431 4.2.  The pioctl interface                        
432 --------------------------                        
433                                                   
434                                                   
435   Coda specific requests can be made by applic    
436   interface. The pioctl is implemented as an o    
437   fictitious file /coda/.CONTROL.  The pioctl     
438   a file handle and makes the ioctl call. Fina    
439                                                   
440   The kernel involvement in this is limited to    
441   open and close and pass the ioctl message an    
442   the pioctl data buffers is a file in a Coda     
443                                                   
444   The kernel is handed a data packet of the fo    
445                                                   
446         struct {                                  
447             const char *path;                     
448             struct ViceIoctl vidata;              
449             int follow;                           
450         } data;                                   
451                                                   
452                                                   
453                                                   
454   where::                                         
455                                                   
456                                                   
457         struct ViceIoctl {                        
458                 caddr_t in, out;        /* Dat    
459                 short in_size;          /* Siz    
460                 short out_size;         /* Max    
461         };                                        
462                                                   
463                                                   
464                                                   
465   The path must be a Coda file, otherwise the     
466   made.                                           
467                                                   
468   .. Note:: The data structures and code are a    
469                                                   
470                                                   
471 **We now proceed to document the individual ca    
472                                                   
473                                                   
474 4.3.  root                                        
475 ----------                                        
476                                                   
477                                                   
478   Arguments                                       
479      in                                           
480                                                   
481         empty                                     
482                                                   
483      out::                                        
484                                                   
485                 struct cfs_root_out {             
486                     ViceFid VFid;                 
487                 } cfs_root;                       
488                                                   
489                                                   
490                                                   
491   Description                                     
492     This call is made to Venus during the init    
493     the Coda filesystem. If the result is zero    
494     contains the ViceFid of the root of the Co    
495     result is generated, its value is a platfo    
496     indicating the difficulty Venus encountere    
497     the Coda filesystem.                          
498                                                   
499 4.4.  lookup                                      
500 ------------                                      
501                                                   
502                                                   
503   Summary                                         
504     Find the ViceFid and type of an object in     
505                                                   
506   Arguments                                       
507      in::                                         
508                                                   
509                 struct  cfs_lookup_in {           
510                     ViceFid     VFid;             
511                     char        *name;            
512                 } cfs_lookup;                     
513                                                   
514                                                   
515                                                   
516      out::                                        
517                                                   
518                 struct cfs_lookup_out {           
519                     ViceFid VFid;                 
520                     int vtype;                    
521                 } cfs_lookup;                     
522                                                   
523                                                   
524                                                   
525   Description                                     
526     This call is made to determine the ViceFid    
527     a directory entry.  The directory entry re    
528     and Venus will search the directory identi    
529     The result may indicate that the name does    
530     difficulty was encountered in finding it (    
531     If the result is zero, the field cfs_looku    
532     targets ViceFid and cfs_lookup_out.vtype t    
533     type of object the name designates.           
534                                                   
535   The name of the object is an 8 bit character    
536   CFS_MAXNAMLEN, currently set to 256 (includi    
537                                                   
538   It is extremely important to realize that Ve    
539   cfs_lookup.vtype with CFS_NOCACHE to indicat    
540   not be put in the kernel name cache.            
541                                                   
542   .. Note::                                       
543                                                   
544      The type of the vtype is currently wrong.    
545      coda_vtype. Linux does not take note of C    
546                                                   
547                                                   
548 4.5.  getattr                                     
549 -------------                                     
550                                                   
551                                                   
552   Summary Get the attributes of a file.           
553                                                   
554   Arguments                                       
555      in::                                         
556                                                   
557                 struct cfs_getattr_in {           
558                     ViceFid VFid;                 
559                     struct coda_vattr attr; /*    
560                 } cfs_getattr;                    
561                                                   
562                                                   
563                                                   
564      out::                                        
565                                                   
566                 struct cfs_getattr_out {          
567                     struct coda_vattr attr;       
568                 } cfs_getattr;                    
569                                                   
570                                                   
571                                                   
572   Description                                     
573     This call returns the attributes of the fi    
574                                                   
575   Errors                                          
576     Errors can occur if the object with fid do    
577     unaccessible or if the caller does not hav    
578     attributes.                                   
579                                                   
580   .. Note::                                       
581                                                   
582      Many kernel FS drivers (Linux, NT and Win    
583      the attributes as well as the Fid for the    
584      "inode" or "FileHandle".  A significant i    
585      such systems could be made by combining t    
586      both at the Venus/kernel interaction leve    
587                                                   
588   The vattr structure included in the input ar    
589   should be removed.                              
590                                                   
591                                                   
592 4.6.  setattr                                     
593 -------------                                     
594                                                   
595                                                   
596   Summary                                         
597     Set the attributes of a file.                 
598                                                   
599   Arguments                                       
600      in::                                         
601                                                   
602                 struct cfs_setattr_in {           
603                     ViceFid VFid;                 
604                     struct coda_vattr attr;       
605                 } cfs_setattr;                    
606                                                   
607                                                   
608                                                   
609                                                   
610      out                                          
611                                                   
612         empty                                     
613                                                   
614   Description                                     
615     The structure attr is filled with attribut    
616     in BSD style.  Attributes not to be change    
617     vtype which is set to VNON. Other are set     
618     The only attributes which the FS driver ma    
619     mode, owner, groupid, atime, mtime and cti    
620     indicates success or failure.                 
621                                                   
622   Errors                                          
623     A variety of errors can occur.  The object    
624     be inaccessible, or permission may not be     
625                                                   
626                                                   
627 4.7.  access                                      
628 ------------                                      
629                                                   
630                                                   
631   Arguments                                       
632      in::                                         
633                                                   
634                 struct cfs_access_in {            
635                     ViceFid     VFid;             
636                     int flags;                    
637                 } cfs_access;                     
638                                                   
639                                                   
640                                                   
641      out                                          
642                                                   
643         empty                                     
644                                                   
645   Description                                     
646     Verify if access to the object identified     
647     operations described by flags is permitted    
648     access will be granted.  It is important t    
649     ACLs to enforce protection and that ultima    
650     clients enforce the security of the system    
651     will depend on whether a token is held by     
652                                                   
653   Errors                                          
654     The object may not exist, or the ACL descr    
655     may not be accessible.                        
656                                                   
657                                                   
658 4.8.  create                                      
659 ------------                                      
660                                                   
661                                                   
662   Summary                                         
663     Invoked to create a file                      
664                                                   
665   Arguments                                       
666      in::                                         
667                                                   
668                 struct cfs_create_in {            
669                     ViceFid VFid;                 
670                     struct coda_vattr attr;       
671                     int excl;                     
672                     int mode;                     
673                     char        *name;            
674                 } cfs_create;                     
675                                                   
676                                                   
677                                                   
678                                                   
679      out::                                        
680                                                   
681                 struct cfs_create_out {           
682                     ViceFid VFid;                 
683                     struct coda_vattr attr;       
684                 } cfs_create;                     
685                                                   
686                                                   
687                                                   
688   Description                                     
689     This upcall is invoked to request creation    
690     The file will be created in the directory     
691     will be name, and the mode will be mode.      
692     be returned if the file already exists.  I    
693     set to zero the file will be truncated.  T    
694     are set by converting the CodaCred to a ui    
695     (this macro is platform dependent).  Upon     
696     attributes of the file are returned.  The     
697     instantiate a vnode, inode or file handle     
698     object.                                       
699                                                   
700                                                   
701   Errors                                          
702     A variety of errors can occur. Permissions    
703     If the object exists and is not a file the    
704     under Unix.                                   
705                                                   
706   .. Note::                                       
707                                                   
708      The packing of parameters is very ineffic    
709      indicate confusion between the system cal    
710      create. The VFS operation create is only     
711      This create call differs from the Unix on    
712      to return a file descriptor. The truncate    
713      together with the mode, could simply be p    
714      under Unix.  There should be no flags arg    
715      (2) to return a file descriptor for READ     
716                                                   
717   The attributes of the directory should be re    
718   and mtime changed.                              
719                                                   
720                                                   
721 4.9.  mkdir                                       
722 -----------                                       
723                                                   
724                                                   
725   Summary                                         
726     Create a new directory.                       
727                                                   
728   Arguments                                       
729      in::                                         
730                                                   
731                 struct cfs_mkdir_in {             
732                     ViceFid     VFid;             
733                     struct coda_vattr attr;       
734                     char        *name;            
735                 } cfs_mkdir;                      
736                                                   
737                                                   
738                                                   
739      out::                                        
740                                                   
741                 struct cfs_mkdir_out {            
742                     ViceFid VFid;                 
743                     struct coda_vattr attr;       
744                 } cfs_mkdir;                      
745                                                   
746                                                   
747                                                   
748                                                   
749   Description                                     
750     This call is similar to create but creates    
751     Only the mode field in the input parameter    
752     Upon successful creation, the attr returne    
753     the new directory.                            
754                                                   
755   Errors                                          
756     As for create.                                
757                                                   
758   .. Note::                                       
759                                                   
760      The input parameter should be changed to     
761      attributes.                                  
762                                                   
763   The attributes of the parent should be retur    
764   mtime changes.                                  
765                                                   
766                                                   
767 4.10.  link                                       
768 -----------                                       
769                                                   
770                                                   
771   Summary                                         
772     Create a link to an existing file.            
773                                                   
774   Arguments                                       
775      in::                                         
776                                                   
777                 struct cfs_link_in {              
778                     ViceFid sourceFid;            
779                     ViceFid destFid;              
780                     char        *tname;           
781                 } cfs_link;                       
782                                                   
783                                                   
784                                                   
785      out                                          
786                                                   
787         empty                                     
788                                                   
789   Description                                     
790     This call creates a link to the sourceFid     
791     identified by destFid with name tname.  Th    
792     target's parent, i.e. the source must be h    
793     does not support cross directory hard link    
794     relevant.  It indicates success or the typ    
795                                                   
796   Errors                                          
797     The usual errors can occur.                   
798                                                   
799                                                   
800 4.11.  symlink                                    
801 --------------                                    
802                                                   
803                                                   
804   Summary                                         
805     create a symbolic link                        
806                                                   
807   Arguments                                       
808      in::                                         
809                                                   
810                 struct cfs_symlink_in {           
811                     ViceFid     VFid;             
812                     char        *srcname;         
813                     struct coda_vattr attr;       
814                     char        *tname;           
815                 } cfs_symlink;                    
816                                                   
817                                                   
818                                                   
819      out                                          
820                                                   
821         none                                      
822                                                   
823   Description                                     
824     Create a symbolic link. The link is to be     
825     directory identified by VFid and named tna    
826     pathname srcname.  The attributes of the n    
827     be set to attr.                               
828                                                   
829   .. Note::                                       
830                                                   
831      The attributes of the target directory sh    
832      its size changed.                            
833                                                   
834                                                   
835 4.12.  remove                                     
836 -------------                                     
837                                                   
838                                                   
839   Summary                                         
840     Remove a file                                 
841                                                   
842   Arguments                                       
843      in::                                         
844                                                   
845                 struct cfs_remove_in {            
846                     ViceFid     VFid;             
847                     char        *name;            
848                 } cfs_remove;                     
849                                                   
850                                                   
851                                                   
852      out                                          
853                                                   
854         none                                      
855                                                   
856   Description                                     
857     Remove file named cfs_remove_in.name in di    
858     identified by   VFid.                         
859                                                   
860                                                   
861   .. Note::                                       
862                                                   
863      The attributes of the directory should be    
864      mtime and size may change.                   
865                                                   
866                                                   
867 4.13.  rmdir                                      
868 ------------                                      
869                                                   
870                                                   
871   Summary                                         
872     Remove a directory                            
873                                                   
874   Arguments                                       
875      in::                                         
876                                                   
877                 struct cfs_rmdir_in {             
878                     ViceFid     VFid;             
879                     char        *name;            
880                 } cfs_rmdir;                      
881                                                   
882                                                   
883                                                   
884      out                                          
885                                                   
886         none                                      
887                                                   
888   Description                                     
889     Remove the directory with name 'name' from    
890     identified by VFid.                           
891                                                   
892   .. Note:: The attributes of the parent direc    
893             its mtime and size may change.        
894                                                   
895                                                   
896 4.14.  readlink                                   
897 ---------------                                   
898                                                   
899                                                   
900   Summary                                         
901     Read the value of a symbolic link.            
902                                                   
903   Arguments                                       
904      in::                                         
905                                                   
906                 struct cfs_readlink_in {          
907                     ViceFid VFid;                 
908                 } cfs_readlink;                   
909                                                   
910                                                   
911                                                   
912      out::                                        
913                                                   
914                 struct cfs_readlink_out {         
915                     int count;                    
916                     caddr_t     data;             
917                 } cfs_readlink;                   
918                                                   
919                                                   
920                                                   
921   Description                                     
922     This routine reads the contents of symboli    
923     identified by VFid into the buffer data.      
924     to hold any name up to CFS_MAXNAMLEN (PATH    
925                                                   
926   Errors                                          
927     No unusual errors.                            
928                                                   
929                                                   
930 4.15.  open                                       
931 -----------                                       
932                                                   
933                                                   
934   Summary                                         
935     Open a file.                                  
936                                                   
937   Arguments                                       
938      in::                                         
939                                                   
940                 struct cfs_open_in {              
941                     ViceFid     VFid;             
942                     int flags;                    
943                 } cfs_open;                       
944                                                   
945                                                   
946                                                   
947      out::                                        
948                                                   
949                 struct cfs_open_out {             
950                     dev_t       dev;              
951                     ino_t       inode;            
952                 } cfs_open;                       
953                                                   
954                                                   
955                                                   
956   Description                                     
957     This request asks Venus to place the file     
958     VFid in its cache and to note that the cal    
959     it with flags as in open(2).  The return v    
960     for Unix and Windows systems.  For Unix sy    
961     informed of the device and inode number of    
962     fields dev and inode.  For Windows the pat    
963     returned to the kernel.                       
964                                                   
965                                                   
966   .. Note::                                       
967                                                   
968      Currently the cfs_open_out structure is n    
969      deal with the Windows case.  It might be     
970      upcalls, one to open aiming at a containe    
971      container file inode.                        
972                                                   
973                                                   
974 4.16.  close                                      
975 ------------                                      
976                                                   
977                                                   
978   Summary                                         
979     Close a file, update it on the servers.       
980                                                   
981   Arguments                                       
982      in::                                         
983                                                   
984                 struct cfs_close_in {             
985                     ViceFid     VFid;             
986                     int flags;                    
987                 } cfs_close;                      
988                                                   
989                                                   
990                                                   
991      out                                          
992                                                   
993         none                                      
994                                                   
995   Description                                     
996     Close the file identified by VFid.            
997                                                   
998   .. Note::                                       
999                                                   
1000      The flags argument is bogus and not used    
1001      has room to deal with an execp input fie    
1002      be used to inform Venus that the file wa    
1003      mapped for execution.  There are comment    
1004      fetching the data in Venus vproc_vfscall    
1005      file is being closed, the data in the co    
1006      data.  Here again the execp flag might b    
1007      currently Venus might think a file can b    
1008      it is still memory mapped.  This needs t    
1009                                                  
1010                                                  
1011 4.17.  ioctl                                     
1012 ------------                                     
1013                                                  
1014                                                  
1015   Summary                                        
1016     Do an ioctl on a file. This includes the     
1017                                                  
1018   Arguments                                      
1019      in::                                        
1020                                                  
1021                 struct cfs_ioctl_in {            
1022                     ViceFid VFid;                
1023                     int cmd;                     
1024                     int len;                     
1025                     int rwflag;                  
1026                     char *data;                  
1027                 } cfs_ioctl;                     
1028                                                  
1029                                                  
1030                                                  
1031      out::                                       
1032                                                  
1033                                                  
1034                 struct cfs_ioctl_out {           
1035                     int len;                     
1036                     caddr_t     data;            
1037                 } cfs_ioctl;                     
1038                                                  
1039                                                  
1040                                                  
1041   Description                                    
1042     Do an ioctl operation on a file.  The com    
1043     data arguments are filled as usual.  flag    
1044                                                  
1045   .. Note::                                      
1046                                                  
1047      Another bogus parameter.  flags is not u    
1048      business about PREFETCHING in the Venus     
1049                                                  
1050                                                  
1051                                                  
1052 4.18.  rename                                    
1053 -------------                                    
1054                                                  
1055                                                  
1056   Summary                                        
1057     Rename a fid.                                
1058                                                  
1059   Arguments                                      
1060      in::                                        
1061                                                  
1062                 struct cfs_rename_in {           
1063                     ViceFid     sourceFid;       
1064                     char        *srcname;        
1065                     ViceFid destFid;             
1066                     char        *destname;       
1067                 } cfs_rename;                    
1068                                                  
1069                                                  
1070                                                  
1071      out                                         
1072                                                  
1073         none                                     
1074                                                  
1075   Description                                    
1076     Rename the object with name srcname in di    
1077     sourceFid to destname in destFid.   It is    
1078     srcname and destname are 0 terminated str    
1079     kernels are not always null terminated.      
1080                                                  
1081                                                  
1082 4.19.  readdir                                   
1083 --------------                                   
1084                                                  
1085                                                  
1086   Summary                                        
1087     Read directory entries.                      
1088                                                  
1089   Arguments                                      
1090      in::                                        
1091                                                  
1092                 struct cfs_readdir_in {          
1093                     ViceFid     VFid;            
1094                     int count;                   
1095                     int offset;                  
1096                 } cfs_readdir;                   
1097                                                  
1098                                                  
1099                                                  
1100                                                  
1101      out::                                       
1102                                                  
1103                 struct cfs_readdir_out {         
1104                     int size;                    
1105                     caddr_t     data;            
1106                 } cfs_readdir;                   
1107                                                  
1108                                                  
1109                                                  
1110   Description                                    
1111     Read directory entries from VFid starting    
1112     read at most count bytes.  Returns the da    
1113     the size in size.                            
1114                                                  
1115                                                  
1116   .. Note::                                      
1117                                                  
1118      This call is not used.  Readdir operatio    
1119      files.  We will re-evaluate this during     
1120      about to take place.                        
1121                                                  
1122                                                  
1123 4.20.  vget                                      
1124 -----------                                      
1125                                                  
1126                                                  
1127   Summary                                        
1128     instructs Venus to do an FSDB->Get.          
1129                                                  
1130   Arguments                                      
1131      in::                                        
1132                                                  
1133                 struct cfs_vget_in {             
1134                     ViceFid VFid;                
1135                 } cfs_vget;                      
1136                                                  
1137                                                  
1138                                                  
1139      out::                                       
1140                                                  
1141                 struct cfs_vget_out {            
1142                     ViceFid VFid;                
1143                     int vtype;                   
1144                 } cfs_vget;                      
1145                                                  
1146                                                  
1147                                                  
1148   Description                                    
1149     This upcall asks Venus to do a get operat    
1150     labelled by VFid.                            
1151                                                  
1152   .. Note::                                      
1153                                                  
1154      This operation is not used.  However, it    
1155      since it can be used to deal with read/w    
1156      These can be "pinned" in the Venus cache    
1157      inactive.                                   
1158                                                  
1159                                                  
1160 4.21.  fsync                                     
1161 ------------                                     
1162                                                  
1163                                                  
1164   Summary                                        
1165     Tell Venus to update the RVM attributes o    
1166                                                  
1167   Arguments                                      
1168      in::                                        
1169                                                  
1170                 struct cfs_fsync_in {            
1171                     ViceFid VFid;                
1172                 } cfs_fsync;                     
1173                                                  
1174                                                  
1175                                                  
1176      out                                         
1177                                                  
1178         none                                     
1179                                                  
1180   Description                                    
1181     Ask Venus to update RVM attributes of obj    
1182     should be called as part of kernel level     
1183     result indicates if the syncing was succe    
1184                                                  
1185   .. Note:: Linux does not implement this cal    
1186                                                  
1187                                                  
1188 4.22.  inactive                                  
1189 ---------------                                  
1190                                                  
1191                                                  
1192   Summary                                        
1193     Tell Venus a vnode is no longer in use.      
1194                                                  
1195   Arguments                                      
1196      in::                                        
1197                                                  
1198                 struct cfs_inactive_in {         
1199                     ViceFid VFid;                
1200                 } cfs_inactive;                  
1201                                                  
1202                                                  
1203                                                  
1204      out                                         
1205                                                  
1206         none                                     
1207                                                  
1208   Description                                    
1209     This operation returns EOPNOTSUPP.           
1210                                                  
1211   .. Note:: This should perhaps be removed.      
1212                                                  
1213                                                  
1214 4.23.  rdwr                                      
1215 -----------                                      
1216                                                  
1217                                                  
1218   Summary                                        
1219     Read or write from a file                    
1220                                                  
1221   Arguments                                      
1222      in::                                        
1223                                                  
1224                 struct cfs_rdwr_in {             
1225                     ViceFid     VFid;            
1226                     int rwflag;                  
1227                     int count;                   
1228                     int offset;                  
1229                     int ioflag;                  
1230                     caddr_t     data;            
1231                 } cfs_rdwr;                      
1232                                                  
1233                                                  
1234                                                  
1235                                                  
1236      out::                                       
1237                                                  
1238                 struct cfs_rdwr_out {            
1239                     int rwflag;                  
1240                     int count;                   
1241                     caddr_t     data;   /* Pl    
1242                 } cfs_rdwr;                      
1243                                                  
1244                                                  
1245                                                  
1246   Description                                    
1247     This upcall asks Venus to read or write f    
1248                                                  
1249                                                  
1250   .. Note::                                      
1251                                                  
1252     It should be removed since it is against     
1253     read/write operations never reach Venus.     
1254     operation does not work.  It is not curre    
1255                                                  
1256                                                  
1257                                                  
1258 4.24.  odymount                                  
1259 ---------------                                  
1260                                                  
1261                                                  
1262   Summary                                        
1263     Allows mounting multiple Coda "filesystem    
1264                                                  
1265   Arguments                                      
1266      in::                                        
1267                                                  
1268                 struct ody_mount_in {            
1269                     char        *name;           
1270                 } ody_mount;                     
1271                                                  
1272                                                  
1273                                                  
1274      out::                                       
1275                                                  
1276                 struct ody_mount_out {           
1277                     ViceFid VFid;                
1278                 } ody_mount;                     
1279                                                  
1280                                                  
1281                                                  
1282   Description                                    
1283     Asks Venus to return the rootfid of a Cod    
1284     name.  The fid is returned in VFid.          
1285                                                  
1286   .. Note::                                      
1287                                                  
1288      This call was used by David for dynamic     
1289      removed since it causes a jungle of poin    
1290      It is not used by Coda proper.  Call is     
1291                                                  
1292                                                  
1293 4.25.  ody_lookup                                
1294 -----------------                                
1295                                                  
1296                                                  
1297   Summary                                        
1298     Looks up something.                          
1299                                                  
1300   Arguments                                      
1301      in                                          
1302                                                  
1303         irrelevant                               
1304                                                  
1305                                                  
1306      out                                         
1307                                                  
1308         irrelevant                               
1309                                                  
1310                                                  
1311   .. Note:: Gut it. Call is not implemented b    
1312                                                  
1313                                                  
1314 4.26.  ody_expand                                
1315 -----------------                                
1316                                                  
1317                                                  
1318   Summary                                        
1319     expands something in a dynamic set.          
1320                                                  
1321   Arguments                                      
1322      in                                          
1323                                                  
1324         irrelevant                               
1325                                                  
1326      out                                         
1327                                                  
1328         irrelevant                               
1329                                                  
1330   .. Note:: Gut it. Call is not implemented b    
1331                                                  
1332                                                  
1333 4.27.  prefetch                                  
1334 ---------------                                  
1335                                                  
1336                                                  
1337   Summary                                        
1338     Prefetch a dynamic set.                      
1339                                                  
1340   Arguments                                      
1341                                                  
1342      in                                          
1343                                                  
1344         Not documented.                          
1345                                                  
1346      out                                         
1347                                                  
1348         Not documented.                          
1349                                                  
1350   Description                                    
1351     Venus worker.cc has support for this call    
1352     noted that it doesn't work.  Not surprisi    
1353     have support for it. (ODY_PREFETCH is not    
1354                                                  
1355                                                  
1356   .. Note:: Gut it. It isn't working and isn'    
1357                                                  
1358                                                  
1359                                                  
1360 4.28.  signal                                    
1361 -------------                                    
1362                                                  
1363                                                  
1364   Summary                                        
1365     Send Venus a signal about an upcall.         
1366                                                  
1367   Arguments                                      
1368      in                                          
1369                                                  
1370         none                                     
1371                                                  
1372      out                                         
1373                                                  
1374         not applicable.                          
1375                                                  
1376   Description                                    
1377     This is an out-of-band upcall to Venus to    
1378     that the calling process received a signa    
1379     message from the input queue.  Venus is s    
1380     operation.                                   
1381                                                  
1382   Errors                                         
1383     No reply is given.                           
1384                                                  
1385   .. Note::                                      
1386                                                  
1387      We need to better understand what Venus     
1388      it is doing this correctly.  Also we nee    
1389      per system call situations correctly.  I    
1390      what state changes in Venus take place a    
1391      kernel is responsible for notifying Venu    
1392      definitely is such a state change, but m    
1393                                                  
1394                                                  
1395 5.  The minicache and downcalls                  
1396 ===============================                  
1397                                                  
1398                                                  
1399   The Coda FS Driver can cache results of loo    
1400   limit the frequency of upcalls.  Upcalls ca    
1401   context switch needs to take place.  The co    
1402   information is that Venus will notify the F    
1403   entries must be flushed or renamed.            
1404                                                  
1405   The kernel code generally has to maintain a    
1406   internal file handles (called vnodes in BSD    
1407   FileHandles in Windows) with the ViceFid's     
1408   reason is that frequent translations back a    
1409   order to make upcalls and use the results o    
1410   objects are called cnodes.                     
1411                                                  
1412   The current minicache implementations have     
1413   the following:                                 
1414                                                  
1415   1. the name of the file                        
1416                                                  
1417   2. the cnode of the directory containing th    
1418                                                  
1419   3. a list of CodaCred's for which the looku    
1420                                                  
1421   4. the cnode of the object                     
1422                                                  
1423   The lookup call in the Coda FS Driver may r    
1424   desired object from the cache, by passing i    
1425   CodaCred's of the caller.  The cache will r    
1426   that it cannot be found.  The Coda FS Drive    
1427   invalidate cache entries when it modifies o    
1428                                                  
1429   When Venus obtains information that indicat    
1430   no longer valid, it will make a downcall to    
1431   intercepted by the Coda FS Driver and lead     
1432   the kind described below.  The Coda FS Driv    
1433   unless the downcall data could not be read     
1434                                                  
1435                                                  
1436 5.1.  INVALIDATE                                 
1437 ----------------                                 
1438                                                  
1439                                                  
1440   No information is available on this call.      
1441                                                  
1442                                                  
1443 5.2.  FLUSH                                      
1444 -----------                                      
1445                                                  
1446                                                  
1447                                                  
1448   Arguments                                      
1449     None                                         
1450                                                  
1451   Summary                                        
1452     Flush the name cache entirely.               
1453                                                  
1454   Description                                    
1455     Venus issues this call upon startup and w    
1456     is to prevent stale cache information bei    
1457     systems allow the kernel name cache to be    
1458     When this is done, this downcall is made.    
1459                                                  
1460                                                  
1461 5.3.  PURGEUSER                                  
1462 ---------------                                  
1463                                                  
1464                                                  
1465   Arguments                                      
1466     ::                                           
1467                                                  
1468           struct cfs_purgeuser_out {/* CFS_PU    
1469               struct CodaCred cred;              
1470           } cfs_purgeuser;                       
1471                                                  
1472                                                  
1473                                                  
1474   Description                                    
1475     Remove all entries in the cache carrying     
1476     call is issued when tokens for a user exp    
1477                                                  
1478                                                  
1479 5.4.  ZAPFILE                                    
1480 -------------                                    
1481                                                  
1482                                                  
1483   Arguments                                      
1484     ::                                           
1485                                                  
1486           struct cfs_zapfile_out {  /* CFS_ZA    
1487               ViceFid CodaFid;                   
1488           } cfs_zapfile;                         
1489                                                  
1490                                                  
1491                                                  
1492   Description                                    
1493     Remove all entries which have the (dir vn    
1494     This is issued as a result of an invalida    
1495     a vnode.                                     
1496                                                  
1497   .. Note::                                      
1498                                                  
1499      Call is not named correctly in NetBSD an    
1500      zapfile routine takes different argument    
1501      the invalidation of attributes correctly    
1502                                                  
1503                                                  
1504                                                  
1505 5.5.  ZAPDIR                                     
1506 ------------                                     
1507                                                  
1508                                                  
1509   Arguments                                      
1510     ::                                           
1511                                                  
1512           struct cfs_zapdir_out {   /* CFS_ZA    
1513               ViceFid CodaFid;                   
1514           } cfs_zapdir;                          
1515                                                  
1516                                                  
1517                                                  
1518   Description                                    
1519     Remove all entries in the cache lying in     
1520     CodaFid, and all children of this directo    
1521     Venus receives a callback on the director    
1522                                                  
1523                                                  
1524 5.6.  ZAPVNODE                                   
1525 --------------                                   
1526                                                  
1527                                                  
1528                                                  
1529   Arguments                                      
1530     ::                                           
1531                                                  
1532           struct cfs_zapvnode_out { /* CFS_ZA    
1533               struct CodaCred cred;              
1534               ViceFid VFid;                      
1535           } cfs_zapvnode;                        
1536                                                  
1537                                                  
1538                                                  
1539   Description                                    
1540     Remove all entries in the cache carrying     
1541     as in the arguments. This downcall is pro    
1542                                                  
1543                                                  
1544 5.7.  PURGEFID                                   
1545 --------------                                   
1546                                                  
1547                                                  
1548   Arguments                                      
1549     ::                                           
1550                                                  
1551           struct cfs_purgefid_out { /* CFS_PU    
1552               ViceFid CodaFid;                   
1553           } cfs_purgefid;                        
1554                                                  
1555                                                  
1556                                                  
1557   Description                                    
1558     Flush the attribute for the file. If it i    
1559     vnode), purge its children from the namec    
1560     namecache.                                   
1561                                                  
1562                                                  
1563                                                  
1564 5.8.  REPLACE                                    
1565 -------------                                    
1566                                                  
1567                                                  
1568   Summary                                        
1569     Replace the Fid's for a collection of nam    
1570                                                  
1571   Arguments                                      
1572     ::                                           
1573                                                  
1574           struct cfs_replace_out { /* cfs_rep    
1575               ViceFid NewFid;                    
1576               ViceFid OldFid;                    
1577           } cfs_replace;                         
1578                                                  
1579                                                  
1580                                                  
1581   Description                                    
1582     This routine replaces a ViceFid in the na    
1583     another.  It is added to allow Venus duri    
1584     locally allocated temp fids while disconn    
1585     when the reference counts on those fids a    
1586                                                  
1587                                                  
1588 6.  Initialization and cleanup                   
1589 ==============================                   
1590                                                  
1591                                                  
1592   This section gives brief hints as to desira    
1593   FS Driver at startup and upon shutdown or V    
1594   entering the discussion it is useful to rep    
1595   maintains the following data:                  
1596                                                  
1597                                                  
1598   1. message queues                              
1599                                                  
1600   2. cnodes                                      
1601                                                  
1602   3. name cache entries                          
1603                                                  
1604      The name cache entries are entirely priv    
1605      can easily be manipulated.   The message    
1606      clear points of initialization and destr    
1607      much more delicate.  User processes hold    
1608      filesystems and it can be difficult to c    
1609                                                  
1610   It can expect requests through:                
1611                                                  
1612   1. the message subsystem                       
1613                                                  
1614   2. the VFS layer                               
1615                                                  
1616   3. pioctl interface                            
1617                                                  
1618      Currently the pioctl passes through the     
1619      treat these similarly.                      
1620                                                  
1621                                                  
1622 6.1.  Requirements                               
1623 ------------------                               
1624                                                  
1625                                                  
1626   The following requirements should be accomm    
1627                                                  
1628   1. The message queues should have open and     
1629      the opening of the character devices are    
1630                                                  
1631     -  Before opening, no messages can be pla    
1632                                                  
1633     -  Opening will remove any old messages s    
1634                                                  
1635     -  Close will notify any sleeping process    
1636        be completed.                             
1637                                                  
1638     -  Close will free all memory allocated b    
1639                                                  
1640                                                  
1641   2. At open the namecache shall be initializ    
1642                                                  
1643   3. Before the message queues are open, all     
1644      Fortunately this can be achieved by maki    
1645      Coda filesystem cannot succeed before op    
1646                                                  
1647   4. After closing of the queues, no VFS oper    
1648      one needs to be careful, since a few ope    
1649      read/write, readdir) can proceed without    
1650      explicitly blocked.                         
1651                                                  
1652   5. Upon closing the namecache shall be flus    
1653                                                  
1654   6. All memory held by cnodes can be freed w    
1655                                                  
1656   7. Unmounting the file system can be done w    
1657                                                  
1658   8. Mounting the Coda filesystem should fail    
1659      get the rootfid or the attributes of the    
1660      best implemented by Venus fetching these    
1661      to mount.                                   
1662                                                  
1663   .. Note::                                      
1664                                                  
1665      NetBSD in particular but also Linux have    
1666      above requirements fully.  For smooth op    
1667      corrected.                                  
1668                                                  
1669                                                  
1670                                                  
                                                      

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php