Skip to content

Commit

Permalink
Pass size difference for mkdir/file_put_content operations to speed u…
Browse files Browse the repository at this point in the history
…p correcting the folder size

Signed-off-by: Julius Härtl <jus@bitgrid.net>
  • Loading branch information
juliushaertl committed Oct 14, 2022
1 parent b6290c2 commit dc4f59c
Showing 1 changed file with 10 additions and 4 deletions.
14 changes: 10 additions & 4 deletions lib/private/Files/View.php
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,6 @@
use OC\Files\Storage\Storage;
use OC\User\LazyUser;
use OC\Share\Share;
use OC\User\User;
use OCA\Files_Sharing\SharedMount;
use OCP\Constants;
use OCP\Files\Cache\ICacheEntry;
Expand Down Expand Up @@ -316,12 +315,12 @@ public function enableCacheUpdate() {
$this->updaterEnabled = true;
}

protected function writeUpdate(Storage $storage, $internalPath, $time = null) {
protected function writeUpdate(Storage $storage, $internalPath, $time = null, $size = null) {
if ($this->updaterEnabled) {
if (is_null($time)) {
$time = time();
}
$storage->getUpdater()->update($internalPath, $time);
$storage->getUpdater()->update($internalPath, $time, $size);
}
}

Expand Down Expand Up @@ -1175,6 +1174,7 @@ private function basicOperation($operation, $path, $hooks = [], $extraParam = nu
$this->unlockFile($path, ILockingProvider::LOCK_SHARED);
throw $e;
}
$previousSize = $storage->filesize($internalPath);
}
try {
if (!is_null($extraParam)) {
Expand All @@ -1195,7 +1195,13 @@ private function basicOperation($operation, $path, $hooks = [], $extraParam = nu
$this->removeUpdate($storage, $internalPath);
}
if ($result && in_array('write', $hooks, true) && $operation !== 'fopen' && $operation !== 'touch') {
$this->writeUpdate($storage, $internalPath);
$size = null;
if ($operation === 'mkdir') {
$size = 0;
} elseif ($operation === 'file_put_contents' && isset($previousSize)) {
$size = $result - $previousSize;
}
$this->writeUpdate($storage, $internalPath, null, $size);
}
if ($result && in_array('touch', $hooks)) {
$this->writeUpdate($storage, $internalPath, $extraParam);
Expand Down

0 comments on commit dc4f59c

Please sign in to comment.