/// <summary>Asynchronously lazy persist the block from the RamDisk to Disk.</summary>
        /// <exception cref="System.IO.IOException"/>
        internal virtual void SubmitLazyPersistTask(string bpId, long blockId, long genStamp
                                                    , long creationTime, FilePath metaFile, FilePath blockFile, FsVolumeReference target
                                                    )
        {
            if (Log.IsDebugEnabled())
            {
                Log.Debug("LazyWriter schedule async task to persist RamDisk block pool id: " + bpId
                          + " block id: " + blockId);
            }
            FsVolumeImpl volume         = (FsVolumeImpl)target.GetVolume();
            FilePath     lazyPersistDir = volume.GetLazyPersistDir(bpId);

            if (!lazyPersistDir.Exists() && !lazyPersistDir.Mkdirs())
            {
                FsDatasetImpl.Log.Warn("LazyWriter failed to create " + lazyPersistDir);
                throw new IOException("LazyWriter fail to find or create lazy persist dir: " + lazyPersistDir
                                      .ToString());
            }
            RamDiskAsyncLazyPersistService.ReplicaLazyPersistTask lazyPersistTask = new RamDiskAsyncLazyPersistService.ReplicaLazyPersistTask
                                                                                        (this, bpId, blockId, genStamp, creationTime, blockFile, metaFile, target, lazyPersistDir
                                                                                        );
            Execute(volume.GetCurrentDir(), lazyPersistTask);
        }