ClfsMgmtHandleLogFileFull function (wdm.h)

The ClfsMgmtHandleLogFileFull routine attempts to make more space available in a log. It might make more space available by adding containers to the log, or it might ask clients to move their log tails.

Syntax

CLFSUSER_API NTSTATUS ClfsMgmtHandleLogFileFull(
  [in] CLFS_MGMT_CLIENT Client
);

Parameters

[in] Client

The client that is requesting CLFS management to make space available in the log. The value of this parameter should be the CLFS_MGMT_CLIENT structure that is obtained through a call to the ClfsMgmtRegisterManagedClient routine.

Return value

The ClfsMgmtHandleLogFileFull routine returns one of the following NTSTATUS values:

Return code Description
STATUS_INVALID_PARAMETER The client is not managing a log.
STATUS_INVALID_PARAMETER_1 The value that was supplied for the Client parameter either was NULL or does not represent a valid client.
STATUS_LOG_FULL_HANDLER_IN_PROGRESS CLFS management is already attempting to resolve a log file full condition for this client.
STATUS_UNSUCCESSFUL CLFS management was not able to process the request.
STATUS_PENDING CLFS management is processing the request to create space in the log.
STATUS_SUCCESS The requested amount of space is available in the log.

Remarks

To make more space available in the log, the ClfsMgmtHandleLogFileFull routine first tries to add more containers to the log in accordance with the growth rate, new container size, and maximum size policies. If more containers cannot be added, then the ClfsMgmtHandleLogFileFull routine tries to free existing space by invoking one or more clients' ClfsAdvanceTailCallback functions.

If the ClfsMgmtHandleLogFileFull routine returns STATUS_PENDING, the client's ClfsLogGrowthCompleteCallback function will be called when the request to make space in the log has been completed.

If the ClfsMgmtHandleLogFileFull routine returns STATUS_LOG_FULL_HANDLER_IN_PROGRESS, the client has already requested CLFS management to handle a log file full condition. The client's ClfsLogGrowthCompleteCallback function will not be called a second time.

If the ClfsMgmtHandleLogFileFull routine returns STATUS_SUCCESS, the call completed synchronously, and the client's ClfsLogGrowthCompleteCallback function will not be invoked.

If the ClfsMgmtHandleLogFileFull routine returns STATUS_PENDING, then CLFS management is in the process of trying to free space in the log, and will call the client's ClfsLogGrowthCompleteCallback function when the log file full condition has been handled. If the log is pinned, CLFS management will call the client's ClfsLogGrowthCompleteCallback function with the LogIsPinned parameter set to TRUE before the ClfsMgmtHandleLogFileFull routine returns STATUS_PENDING.

It is possible that the client's ClfsLogGrowthCompleteCallback function could be called before the call to ClfsMgmtHandleLogFileFull returns.

If the ClfsMgmtHandleLogFileFull routine returns STATUS_PENDING, you should not call the ClfsMgmtHandleLogFileFull routine again for this client until the client's ClfsLogGrowthCompleteCallback function has been called.

Requirements

Requirement Value
Target Platform Desktop
Header wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
Library Clfs.lib
DLL Clfs.sys
IRQL IRQL <= APC_LEVEL

See also

ClfsAdvanceTailCallback

ClfsLogGrowthCompleteCallback

ClfsMgmtRegisterManagedClient