/// <summary>
        /// Processes the GetBlock from the committed area.
        /// </summary>
        /// <param name="pageLock"></param>
        /// <param name="position"></param>
        /// <param name="pointer">an output parameter that contains the pointer for the provided position</param>
        /// <remarks>The valid length is at least the size of the buffer pools page size.</remarks>
        private void GetBlockFromCommittedSpace(PageReplacementAlgorithm.PageLock pageLock, long position, out IntPtr pointer)
        {
            //If the page is in the buffer, we can return and don't have to read it.
            if (pageLock.TryGetSubPage(position, out pointer))
                return;

            //If the address doesn't exist in the current list. Read it from the disk.
            int poolPageIndex;
            IntPtr poolAddress;
            m_pool.AllocatePage(out poolPageIndex, out poolAddress);

            m_queue.Read(position, poolAddress);

            //Since a race condition exists, I need to check the buffer to make sure that 
            //the most recently read page already exists in the PageReplacementAlgorithm.
            bool wasPageAdded;
            pointer = pageLock.GetOrAddPage(position, poolAddress, poolPageIndex, out wasPageAdded);
            //If I lost on the race condition, I need to re-release this page.
            if (!wasPageAdded)
                m_pool.ReleasePage(poolPageIndex);
        }