[Toc][Index]

FS_SHUTDOWN - Shutdown file system

  
Purpose   
Used to shutdown an FSD in preparation for power-off or IPL. 
Calling Sequence   

int far pascal FS_SHUTDOWN(type, reserved)

unsigned short type;
unsigned long reserved;


Where   
type indicates what type of a shutdown operation to perform. 
type == 0 indicates that the shutdown sequence is beginning. The kernel 
will not allow any new I/O calls to reach the FSD. The only exception will 
be I/ O to the swap file by the swap thread through the FS_READ and 
FS_WRITE entry points. The kernel will still allow any thread to call 
FS_COMMIT, FS_FLUSHBUF and FS_SHUTDOWN. The FSD should complete all 
pending calls that might generate disk corruption. 
type == 1 indicates that the shutdown sequence is ending. An FS_COMMIT has 
been called on every SFT open on the FSD and following that an FS_FLUSHBUF 
on all volumes has been called. All final clean up activity must be 
completed before this call returns. 
reserved reserved for future expansion. 
  
Remarks   
From the perspective of an FSD, the shutdown sequence looks like this: 
First, the system will call the FSD's FS_SHUTDOWN entry with type == 0 . 
This notifies the FSD that the system will begin committing SFTs in 
preparation for system power off. The kernel will not allow any new IO 
calls to the FSD once it receives this first call, except from the swapper 
thread. The swapper thread will continue to call the FS_READ and FS_WRITE 
entry points to read and write the swap file. The swapper thread will not 
attempt to grow or shrink the swap file nor should the FSD reallocate it. 
The kernel will continue to allow FS_ COMMIT and FS_FLUSHBUF calls from 
any thread. This call should not return from the FSD until disk data 
modifying calls have completed to insure that a thread already inside the 
FSD does not wake and change disk data. 
After the first FS_SHUTDOWN call returns, the kernel will start committing 
SFTs. The FSD will see a commit for every SFT associated with it. During 
these FS_COMMIT calls, the FSD must flush any data associated with these 
SFTs to disk . The FSD must not allow any FS_COMMIT or FS_FLUSHBUF call to 
block permanently . 
Once all of the SFTs associated with the FSD have been committed, 
FS_SHUTDOWN will be called with type == 1. This will tell the FSD to flush 
all buffers to disk. From this point, the FSD must not buffer any data 
destined for disk. Reads and writes to the swap file will continue, but 
the allocation of the swap file will not change. Once this call has 
completed, no file system corruption should occur if power is shut off. 

Created using Inf-PHP v.2 (c) 2003 Yuri Prokushev
Created using Inf-HTML v.0.9b (c) 1995 Peter Childs