Jump to content

IFS - FSD File Image: Difference between revisions

From EDM2
Created page with "{{IFSRef}} {{IBM-Reprint}} An FSD loads from a file which is in the format of a standard OS/2 dynamic link library file. Exactly one FSD resides in each file. The FSD exports..."
 
Ak120 (talk | contribs)
mNo edit summary
Line 2: Line 2:
{{IBM-Reprint}}
{{IBM-Reprint}}


An FSD loads from a file which is in the format of a standard OS/2 dynamic link library file. Exactly one FSD resides in each file. The FSD exports information to OS/2 using a set of predefined public names.  
An FSD loads from a file which is in the format of a standard OS/2 dynamic link library file. Exactly one FSD resides in each file. The FSD exports information to OS/2 using a set of predefined public names.


The FSD is initialized by a call to the exported entry point FS_INIT.  
The FSD is initialized by a call to the exported entry point FS_INIT.


FS entry points for Mount, Read, Write, etc. are exported with known names as standard far entry points.  
FS entry points for Mount, Read, Write, etc. are exported with known names as standard far entry points.


The FSD exports its name as a public ASCIIZ character string under the name 'FS_NAME'. All comparisons with user-specified strings are done similar to file names; case is ignored and embedded blanks are significant. FS_NAMEs, however, may be input to applications by users. Embedded blanks should be avoided . The name exported as FS_NAME need NOT be the same as the 1-8 FSD name in the boot sector of formatted media, although it may be. The ONLY name the kernel pays any attention to, and the only name accessible to user programs through the API , is the name exported as FS_NAME.  
The FSD exports its name as a public ASCIIZ character string under the name 'FS_NAME'. All comparisons with user-specified strings are done similar to file names; case is ignored and embedded blanks are significant. FS_NAMEs, however, may be input to applications by users. Embedded blanks should be avoided. The name exported as FS_NAME need NOT be the same as the 1-8 FSD name in the boot sector of formatted media, although it may be. The ONLY name the kernel pays any attention to, and the only name accessible to user programs through the API, is the name exported as FS_NAME.


In addition to various entry points, the FSD must export a dword bit vector of attributes. Attributes are exported under the name 'FS_ATTRIBUTE' . FS_ATTRIBUTE specifies special properties of the FSD and is described in the next section.  
In addition to various entry points, the FSD must export a dword bit vector of attributes. Attributes are exported under the name 'FS_ATTRIBUTE'. FS_ATTRIBUTE specifies special properties of the FSD and is described in the next section.


==FSD Attribute==
==FSD Attribute==
The format of the OS/2 FS_ATTRIBUTE is defined in Figure 1-4 and the definition list that follows it.  
The format of the OS/2 FS_ATTRIBUTE is defined in Figure 1-4 and the definition list that follows it.
 
<PRE>
<PRE>
  31  30  29  28  27  26  25  24  23  22  21  20  19  18  17  16
  31  30  29  28  27  26  25  24  23  22  21  20  19  18  17  16
Line 30: Line 29:
  15  14  13  12  11  10  9  8  7  6  5  4  3  2  1  0
  15  14  13  12  11  10  9  8  7  6  5  4  3  2  1  0
</PRE>
</PRE>
Figure 1-4. OS/2 FSD Attribute  
Figure 1-4. OS/2 FSD Attribute


===Bits Description===
===Bits Description===
31 '''FSD Additional attributes'''. If 1, FSD has additional attributes. If 0, FS_ATTRIBUTE is the only FSD attribute information.


31 '''FSD Additional attributes'''. If 1, FSD has additional attributes. If 0, FS_ATTRIBUTE is the only FSD attribute information. 
30-28 '''VERSION NUMBER - FSD version number.'''


30-28 '''VERSION NUMBER - FSD version number.'''  
27-4 '''RESERVED'''


27-4 '''RESERVED'''  
3 '''LEVEL7 - QPathInfo Level 7 bit.''' Set if FSD is case-preserving. If this bit is set, the kernel will call the FS_PATHINFO entry point with a level equal to 7. The output buffer is to be filled with a case-preserved copy of the path that was passed in by the user.


3 '''LEVEL7 - QPathInfo Level 7 bit.''' Set if FSD is case-preserving. If this bit is set, the kernel will call the FS_PATHINFO entry point with a level equal to 7. The output buffer is to be filled with a case-preserved copy of the path that was passed in by the user.  
2 '''FILEIO - File I/O bit.''' Set if FSD wants to see file locking/unlocking operations and compacted file I/O operations. If not set, the file I/O calls will be broken up into individual lock/unlock/read/write/seek calls and the FSD will not see the lock/unlock calls. FSDs that do not support file locking can set this bit to enable compacted file I/O operations.


2 '''FILEIO - File I/O bit.''' Set if FSD wants to see file locking/unlocking operations and compacted file I/O operations. If not set, the file I/O calls will be broken up into individual lock/unlock/read/write/seek calls and the FSD will not see the lock/unlock calls. FSDs that do not support file locking can set this bit to enable compacted file I/O operations.  
1 '''UNC - Universal Naming Convention bit.''' Set if FSD supports the Universal Naming Convention. OS/2 Version 2.0 supports multiple loaded UNC redirectors.


1 '''UNC - Universal Naming Convention bit.''' Set if FSD supports the Universal Naming Convention. OS/2 Version 2.0 supports multiple loaded UNC redirectors.  
0 '''REMOTE - Remote File System (Redirector).''' This bit tells the system whether the FSD uses static or dynamic media attachment. Local FSDs always use dynamic media attachment. Remote FSDs always use static media attachment. This bit is clear if it is a dynamic media attachment and set, if a static attachment. No FSD supports both static and dynamic media attachment. To support proper file locking, a remote FSD should also set the FILEIO bit.


0 '''REMOTE - Remote File System (Redirector).''' This bit tells the system whether the FSD uses static or dynamic media attachment. Local FSDs always use dynamic media attachment. Remote FSDs always use static media attachment. This bit is clear if it is a dynamic media attachment and set, if a static attachment . No FSD supports both static and dynamic media attachment. To support proper file locking, a remote FSD should also set the FILEIO bit.
 
[[Category:IFS]]
[[Category:IFS]]

Revision as of 16:31, 11 February 2020

Installable File Systems for OS/2
  1. Installable File System Mechanism
    1. Installable File System Overview
    2. Extended Attributes
    3. FSD File Image
    4. FSD Initialization
    5. IFS Commands
    6. File System Function Calls
    7. FSD System Interfaces
    8. FSD Calling Conventions and Requirements
  2. FS Service Routines
  3. FS Helper Functions
  4. Remote IPL / Bootable IFS
  5. mini-FDS Entry Points
  6. mini-FDS Helper Routines

Reprint Courtesy of International Business Machines Corporation, © International Business Machines Corporation

An FSD loads from a file which is in the format of a standard OS/2 dynamic link library file. Exactly one FSD resides in each file. The FSD exports information to OS/2 using a set of predefined public names.

The FSD is initialized by a call to the exported entry point FS_INIT.

FS entry points for Mount, Read, Write, etc. are exported with known names as standard far entry points.

The FSD exports its name as a public ASCIIZ character string under the name 'FS_NAME'. All comparisons with user-specified strings are done similar to file names; case is ignored and embedded blanks are significant. FS_NAMEs, however, may be input to applications by users. Embedded blanks should be avoided. The name exported as FS_NAME need NOT be the same as the 1-8 FSD name in the boot sector of formatted media, although it may be. The ONLY name the kernel pays any attention to, and the only name accessible to user programs through the API, is the name exported as FS_NAME.

In addition to various entry points, the FSD must export a dword bit vector of attributes. Attributes are exported under the name 'FS_ATTRIBUTE'. FS_ATTRIBUTE specifies special properties of the FSD and is described in the next section.

FSD Attribute

The format of the OS/2 FS_ATTRIBUTE is defined in Figure 1-4 and the definition list that follows it.

 31  30  29  28  27  26  25  24  23  22  21  20  19  18  17  16
┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
│ E │ V │ V │ V │ R │ R │ R │ R │ R │ R │ R │ R │ R │ R │ R │ R │
│ x │ e │ e │ e │ e │ e │ e │ e │ e │ e │ e │ e │ e │ e │ e │ e │
│ A │ r │ r │ r │ s │ s │ s │ s │ s │ s │ s │ s │ s │ s │ s │ s │
│ t │ s │ s │ s │ v │ v │ v │ v │ v │ v │ v │ v │ v │ v │ v │ v │
├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
│ R │ R │ R │ R │ R │ R │ R │ R │ R │ R │ R │ R │ L │ F │ U │ R │
│ e │ e │ e │ e │ e │ e │ e │ e │ e │ e │ e │ e │ v │ I │ N │ e │
│ s │ s │ s │ s │ s │ s │ s │ s │ s │ s │ s │ s │ l │ / │ C │ m │
│ v │ v │ v │ v │ v │ v │ v │ v │ v │ v │ v │ v │ 7 │ O │   │ t │
└───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┘
 15  14  13  12  11  10   9   8   7   6   5   4   3   2   1   0

Figure 1-4. OS/2 FSD Attribute

Bits Description

31 FSD Additional attributes. If 1, FSD has additional attributes. If 0, FS_ATTRIBUTE is the only FSD attribute information.

30-28 VERSION NUMBER - FSD version number.

27-4 RESERVED

3 LEVEL7 - QPathInfo Level 7 bit. Set if FSD is case-preserving. If this bit is set, the kernel will call the FS_PATHINFO entry point with a level equal to 7. The output buffer is to be filled with a case-preserved copy of the path that was passed in by the user.

2 FILEIO - File I/O bit. Set if FSD wants to see file locking/unlocking operations and compacted file I/O operations. If not set, the file I/O calls will be broken up into individual lock/unlock/read/write/seek calls and the FSD will not see the lock/unlock calls. FSDs that do not support file locking can set this bit to enable compacted file I/O operations.

1 UNC - Universal Naming Convention bit. Set if FSD supports the Universal Naming Convention. OS/2 Version 2.0 supports multiple loaded UNC redirectors.

0 REMOTE - Remote File System (Redirector). This bit tells the system whether the FSD uses static or dynamic media attachment. Local FSDs always use dynamic media attachment. Remote FSDs always use static media attachment. This bit is clear if it is a dynamic media attachment and set, if a static attachment. No FSD supports both static and dynamic media attachment. To support proper file locking, a remote FSD should also set the FILEIO bit.