summaryrefslogtreecommitdiff
path: root/store/source/stordata.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'store/source/stordata.cxx')
-rw-r--r--store/source/stordata.cxx102
1 files changed, 14 insertions, 88 deletions
diff --git a/store/source/stordata.cxx b/store/source/stordata.cxx
index 97bcc87fcb6c..901da15c8040 100644
--- a/store/source/stordata.cxx
+++ b/store/source/stordata.cxx
@@ -95,8 +95,7 @@ static storeError store_truncate_Impl (
if (nSingle == 0)
{
// Free single indirect page.
- OStorePageData aPageHead;
- eErrCode = rBIOS.free (aPageHead, nAddr);
+ eErrCode = rBIOS.free (nAddr);
if (eErrCode != store_E_None)
return eErrCode;
}
@@ -135,8 +134,7 @@ static storeError store_truncate_Impl (
if ((nDouble + nSingle) == 0)
{
// Free double indirect page.
- OStorePageData aPageHead;
- eErrCode = rBIOS.free (aPageHead, nAddr);
+ eErrCode = rBIOS.free (nAddr);
if (eErrCode != store_E_None)
return eErrCode;
}
@@ -171,8 +169,7 @@ static storeError store_truncate_Impl (
if ((nTriple + nDouble + nSingle) == 0)
{
// Free triple indirect page.
- OStorePageData aPageHead;
- eErrCode = rBIOS.free (aPageHead, nAddr);
+ eErrCode = rBIOS.free (nAddr);
if (eErrCode != store_E_None)
return eErrCode;
}
@@ -433,17 +430,8 @@ storeError OStoreIndirectionPageObject::truncate (
if (!(nSingle < nLimit))
return store_E_InvalidAccess;
- // Save PageDescriptor.
- OStorePageDescriptor aDescr (rPage.m_aDescr);
- aDescr.m_nAddr = store::ntohl(aDescr.m_nAddr);
- aDescr.m_nSize = store::ntohs(aDescr.m_nSize);
-
- // Acquire Lock.
- storeError eErrCode = rBIOS.acquireLock (aDescr.m_nAddr, aDescr.m_nSize);
- if (eErrCode != store_E_None)
- return eErrCode;
-
// Truncate.
+ storeError eErrCode = store_E_None;
for (sal_uInt16 i = nLimit; i > nSingle; i--)
{
// Obtain data page location.
@@ -451,13 +439,9 @@ storeError OStoreIndirectionPageObject::truncate (
if (nAddr != STORE_PAGE_NULL)
{
// Free data page.
- OStorePageData aPageHead;
- eErrCode = rBIOS.free (aPageHead, nAddr);
+ eErrCode = rBIOS.free (nAddr);
if (eErrCode != store_E_None)
- {
- rBIOS.releaseLock (aDescr.m_nAddr, aDescr.m_nSize);
return eErrCode;
- }
// Clear pointer to data page.
rPage.m_pData[i - 1] = STORE_PAGE_NULL;
@@ -470,19 +454,10 @@ storeError OStoreIndirectionPageObject::truncate (
{
// Save this page.
eErrCode = rBIOS.saveObjectAt (*this, location());
- if (eErrCode != store_E_None)
- {
- // Must not happen.
- OSL_TRACE("OStoreIndirectionPageObject::truncate(): save failed");
-
- // Release Lock and Leave.
- rBIOS.releaseLock (aDescr.m_nAddr, aDescr.m_nSize);
- return eErrCode;
- }
}
- // Release Lock and Leave.
- return rBIOS.releaseLock (aDescr.m_nAddr, aDescr.m_nSize);
+ // Done.
+ return eErrCode;
}
/*
@@ -501,26 +476,14 @@ storeError OStoreIndirectionPageObject::truncate (
if (!((nDouble < nLimit) && (nSingle < nLimit)))
return store_E_InvalidAccess;
- // Save PageDescriptor.
- OStorePageDescriptor aDescr (rPage.m_aDescr);
- aDescr.m_nAddr = store::ntohl(aDescr.m_nAddr);
- aDescr.m_nSize = store::ntohs(aDescr.m_nSize);
-
- // Acquire Lock.
- storeError eErrCode = rBIOS.acquireLock (aDescr.m_nAddr, aDescr.m_nSize);
- if (eErrCode != store_E_None)
- return eErrCode;
-
// Truncate.
+ storeError eErrCode = store_E_None;
for (sal_uInt16 i = nLimit; i > nDouble + 1; i--)
{
// Truncate single indirect page to zero direct pages.
eErrCode = store_truncate_Impl (store::ntohl(rPage.m_pData[i - 1]), 0, rBIOS);
if (eErrCode != store_E_None)
- {
- rBIOS.releaseLock (aDescr.m_nAddr, aDescr.m_nSize);
return eErrCode;
- }
// Clear pointer to single indirect page.
rPage.m_pData[i - 1] = STORE_PAGE_NULL;
@@ -530,10 +493,7 @@ storeError OStoreIndirectionPageObject::truncate (
// Truncate last single indirect page to 'nSingle' direct pages.
eErrCode = store_truncate_Impl (store::ntohl(rPage.m_pData[nDouble]), nSingle, rBIOS);
if (eErrCode != store_E_None)
- {
- rBIOS.releaseLock (aDescr.m_nAddr, aDescr.m_nSize);
return eErrCode;
- }
// Check for complete truncation.
if (nSingle == 0)
@@ -548,19 +508,10 @@ storeError OStoreIndirectionPageObject::truncate (
{
// Save this page.
eErrCode = rBIOS.saveObjectAt (*this, location());
- if (eErrCode != store_E_None)
- {
- // Must not happen.
- OSL_TRACE("OStoreIndirectionPageObject::truncate(): save failed");
-
- // Release Lock and Leave.
- rBIOS.releaseLock (aDescr.m_nAddr, aDescr.m_nSize);
- return eErrCode;
- }
}
- // Release Lock and Leave.
- return rBIOS.releaseLock (aDescr.m_nAddr, aDescr.m_nSize);
+ // Done.
+ return eErrCode;
}
/*
@@ -580,26 +531,14 @@ storeError OStoreIndirectionPageObject::truncate (
if (!((nTriple < nLimit) && (nDouble < nLimit) && (nSingle < nLimit)))
return store_E_InvalidAccess;
- // Save PageDescriptor.
- OStorePageDescriptor aDescr (rPage.m_aDescr);
- aDescr.m_nAddr = store::ntohl(aDescr.m_nAddr);
- aDescr.m_nSize = store::ntohs(aDescr.m_nSize);
-
- // Acquire Lock.
- storeError eErrCode = rBIOS.acquireLock (aDescr.m_nAddr, aDescr.m_nSize);
- if (eErrCode != store_E_None)
- return eErrCode;
-
// Truncate.
+ storeError eErrCode = store_E_None;
for (sal_uInt16 i = nLimit; i > nTriple + 1; i--)
{
// Truncate double indirect page to zero single indirect pages.
eErrCode = store_truncate_Impl (store::ntohl(rPage.m_pData[i - 1]), 0, 0, rBIOS);
if (eErrCode != store_E_None)
- {
- rBIOS.releaseLock (aDescr.m_nAddr, aDescr.m_nSize);
return eErrCode;
- }
// Clear pointer to double indirect page.
rPage.m_pData[i - 1] = STORE_PAGE_NULL;
@@ -609,10 +548,7 @@ storeError OStoreIndirectionPageObject::truncate (
// Truncate last double indirect page to 'nDouble', 'nSingle' pages.
eErrCode = store_truncate_Impl (store::ntohl(rPage.m_pData[nTriple]), nDouble, nSingle, rBIOS);
if (eErrCode != store_E_None)
- {
- rBIOS.releaseLock (aDescr.m_nAddr, aDescr.m_nSize);
return eErrCode;
- }
// Check for complete truncation.
if ((nDouble + nSingle) == 0)
@@ -627,19 +563,10 @@ storeError OStoreIndirectionPageObject::truncate (
{
// Save this page.
eErrCode = rBIOS.saveObjectAt (*this, location());
- if (eErrCode != store_E_None)
- {
- // Must not happen.
- OSL_TRACE("OStoreIndirectionPageObject::truncate(): save failed");
-
- // Release Lock and Leave.
- rBIOS.releaseLock (aDescr.m_nAddr, aDescr.m_nSize);
- return eErrCode;
- }
}
- // Release Lock and Leave.
- return rBIOS.releaseLock (aDescr.m_nAddr, aDescr.m_nSize);
+ // Done.
+ return eErrCode;
}
/*========================================================================
@@ -1129,8 +1056,7 @@ storeError OStoreDirectoryPageObject::truncate (
if (nAddr == STORE_PAGE_NULL) continue;
// Free data page.
- OStoreDataPageData aData;
- eErrCode = rBIOS.free (aData, nAddr);
+ eErrCode = rBIOS.free (nAddr);
if (eErrCode != store_E_None)
break;