From af49935bcb76e55dcde3e976f1390121f8729065 Mon Sep 17 00:00:00 2001 From: ahodgkinson Date: Thu, 27 Jul 2006 21:13:17 +0000 Subject: [PATCH] FTK changes. Optimized Solaris file extend operation. git-svn-id: https://svn.code.sf.net/p/flaim/code/trunk@723 0109f412-320b-0410-ab79-c3e0c5ffbbe6 --- ftk/src/ftkunix.cpp | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/ftk/src/ftkunix.cpp b/ftk/src/ftkunix.cpp index acf131d..3ec25e5 100644 --- a/ftk/src/ftkunix.cpp +++ b/ftk/src/ftkunix.cpp @@ -718,12 +718,22 @@ RCODE F_FileHdl::lowLevelWrite( FLMUINT uiCurrBytesToExtend; FLMUINT uiExtendBufferSize; - uiExtendBufferSize = f_min( uiTotalBytesToExtend, 64 * 1024); + uiExtendBufferSize = f_min( uiTotalBytesToExtend, 1024 * 1024); - if( RC_BAD( rc = f_allocAlignedBuffer( - uiExtendBufferSize, &pucExtendBuffer))) + for( ;;) { - goto Exit; + if( RC_OK( rc = f_allocAlignedBuffer( + uiExtendBufferSize, &pucExtendBuffer))) + { + break; + } + + if( uiExtendBufferSize <= (32 * 1024)) + { + goto Exit; + } + + uiExtendBufferSize >>= 1; } if( ftruncate( m_fd, ui64CurrFileSize + uiTotalBytesToExtend) == -1)