z/OS UNIX System Services File System Interface Reference
Previous topic | Next topic | Contents | Contact z/OS | Library | PDF


PC#RecyclePFS X'8000000C'

z/OS UNIX System Services File System Interface Reference
SA23-2285-00

PC#RecyclePFS X'8000000C' initiates a PFS recycle by posting the PFS's termination ECB.

  • If no argument is passed, or if the argument value is not 1, the LFS returns to the caller immediately after calls to the PFS have quiesced and the PFS has been posted to terminate. The caller and the PFS must coordinate any dependencies that they have on each other after this point, because the PFS may not have terminated when the caller regained control.
  • If a fullword argument value of 1 is passed, the LFS waits for the PFS to terminate before returning to the caller.

The Return_value is 0 if the PFS is found.

Before this call the caller or PFS must ensure that:

  • All current osi_waiters have been osi_posted.

    If the v_reg service has been used to register that the PFS is dependent on the caller's process for osi_post, the LFS osi_posts the osi_waiters, just as it would if the caller's process had terminated.

  • All outstanding asyncio has been osi_scheduled.
  • All internal waiters have been posted.
  • No new vnode ops will be accepted by the PFS, or that no new ops will be allowed to wait or for asyncio to cue.

Before posting the PFS termination ECB, the LFS ensures that there are no more threads executing code in the PFS layer and it will permit no more VFS or vnode ops to branch into the PFS. The LFS waits for any threads that are still in the PFS layer at the time of the pfsctl call. These could include, for example, threads that were just osi_posted, but whose address space had not been swapped in yet, or that were otherwise not dispatched, so they have not had a chance to return back up to the LFS layer.

A race condition exists between this call and user threads that are branching into the PFS layer at about the same time. The PFS begins to reject these calls and the LFS waits for those rejected threads to exit from the PFS layer.

When the termination ECB is posted, the PFS cleans up and exits the PFS_Init module. This decrements the load module's use count; when that count goes to zero the load module is deleted. This assumes a PFS that was not packaged to reside in LPA.

If the second pfsctl, PC#Restart PFS, is going to be used, the PFS must have left the Restart Option Byte (pfsi_restart) at its default value or reset it to RESTART_WTOR before exiting. In this case, the normal WTOR message is not issued when the PFS terminates, and the second pfsctl takes the place of the operator reply to restart the PFS. Alternatively, the second pfsctl does not have to be used if the PFS sets the Restart Option Byte to RESTART_AUTO.

The second pfsctl can also be used without the first if the PFS exits with the Restart Option Byte set to RESTART_PFSCTL(7). This suppresses the WTOR message and causes the LFS to wait for the second pfsctl before restarting the PFS.

Go to the previous page Go to the next page




Copyright IBM Corporation 1990, 2014