aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/private/Files/Cache/Scanner.php1
-rw-r--r--lib/private/Files/Cache/Updater.php4
-rw-r--r--lib/private/Files/View.php19
3 files changed, 16 insertions, 8 deletions
diff --git a/lib/private/Files/Cache/Scanner.php b/lib/private/Files/Cache/Scanner.php
index b067f70b8cb..7669440aca5 100644
--- a/lib/private/Files/Cache/Scanner.php
+++ b/lib/private/Files/Cache/Scanner.php
@@ -228,7 +228,6 @@ class Scanner extends BasicEmitter implements IScanner {
}
if ($cacheData !== false) {
- $data['oldSize'] = $cacheData['size'] ?? 0;
$data['encrypted'] = $cacheData['encrypted'] ?? false;
}
diff --git a/lib/private/Files/Cache/Updater.php b/lib/private/Files/Cache/Updater.php
index 03681036aa2..77e3ac95ed8 100644
--- a/lib/private/Files/Cache/Updater.php
+++ b/lib/private/Files/Cache/Updater.php
@@ -111,10 +111,6 @@ class Updater implements IUpdater {
$data = $this->scanner->scan($path, Scanner::SCAN_SHALLOW, -1, false);
- if (isset($data['oldSize']) && isset($data['size'])) {
- $sizeDifference = $data['size'] - $data['oldSize'];
- }
-
// encryption is a pita and touches the cache itself
if (isset($data['encrypted']) && (bool)$data['encrypted']) {
$sizeDifference = null;
diff --git a/lib/private/Files/View.php b/lib/private/Files/View.php
index 6832b4e1551..0fda81d0a25 100644
--- a/lib/private/Files/View.php
+++ b/lib/private/Files/View.php
@@ -1224,9 +1224,22 @@ class View {
$this->removeUpdate($storage, $internalPath);
}
if ($result !== false && in_array('write', $hooks, true) && $operation !== 'fopen' && $operation !== 'touch') {
- $isCreateOperation = $operation === 'mkdir' || ($operation === 'file_put_contents' && in_array('create', $hooks, true));
- $sizeDifference = $operation === 'mkdir' ? 0 : $result;
- $this->writeUpdate($storage, $internalPath, null, $isCreateOperation ? $sizeDifference : null);
+ if ($operation === 'mkdir') {
+ $sizeDifference = 0;
+ } elseif ($operation === 'file_put_contents') {
+ if (in_array('create', $hooks, true)) {
+ $sizeDifference = $result;
+ } elseif (in_array('update', $hooks, true)) {
+ $cacheData = $storage->getCache()->get($path);
+ $sizeDifference = $cacheData === false ? null : $result - $cacheData->getSize();
+ } else {
+ $sizeDifference = null;
+ }
+ } else {
+ $sizeDifference = null;
+ }
+
+ $this->writeUpdate($storage, $internalPath, null, $sizeDifference);
}
if ($result !== false && in_array('touch', $hooks)) {
$this->writeUpdate($storage, $internalPath, $extraParam, 0);