From 576900ebcc1ef67f587171a735c5bd02d900dfb8 Mon Sep 17 00:00:00 2001 From: KernelDeimos <7225168+KernelDeimos@users.noreply.github.com> Date: Wed, 17 Dec 2025 14:46:28 -0500 Subject: [PATCH] clean: readdir optimization --- .../filesystem/ll_operations/ll_readdir.js | 51 ++++++++++--------- 1 file changed, 26 insertions(+), 25 deletions(-) diff --git a/src/backend/src/filesystem/ll_operations/ll_readdir.js b/src/backend/src/filesystem/ll_operations/ll_readdir.js index ecae12fc8..a4ace1c69 100644 --- a/src/backend/src/filesystem/ll_operations/ll_readdir.js +++ b/src/backend/src/filesystem/ll_operations/ll_readdir.js @@ -16,7 +16,6 @@ * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ -const APIError = require('../../api/APIError'); const fsCapabilities = require('../definitions/capabilities'); const { ECMAP } = require('../ECMAP'); const { TYPE_SYMLINK } = require('../FSNodeContext'); @@ -36,10 +35,6 @@ class LLReadDir extends LLFilesystemOperation { const { subject: subject_let, actor, no_acl } = this.values; let subject = subject_let; - if ( ! await subject.exists() ) { - throw APIError.create('subject_does_not_exist'); - } - const svc_acl = context.get('services').get('acl'); if ( ! no_acl ) { if ( ! await svc_acl.check(actor, subject, 'list') ) { @@ -72,26 +67,10 @@ class LLReadDir extends LLFilesystemOperation { const capabilities = subject.provider.get_capabilities(); - // UUID Mode - optimization: { - const uuid_selector = subject.get_selector_of_type(NodeUIDSelector); - - // Skip this optimization if there is no UUID - if ( ! uuid_selector ) { - break optimization; - } - - // Skip this optimization if the filesystem doesn't implement - // the "readdirstat_uuid" macro operation. - if ( ! capabilities.has(fsCapabilities.READDIRSTAT_UUID) ) { - break optimization; - } - - const uuid = uuid_selector.value; - return await subject.provider.readdirstat_uuid({ - uuid, - options: { thumbnail: true }, - }); + // Optimization for filesystems that implement it + { + const child_nodes = await this.#try_readdirstatUUID(); + if ( child_nodes !== null ) return child_nodes; } if ( capabilities.has(fsCapabilities.READDIR_UUID_MODE) ) { @@ -118,6 +97,28 @@ class LLReadDir extends LLFilesystemOperation { return await svc_fs.node(new NodeChildSelector(subject, entry.name)); })); } + async #try_readdirstatUUID () { + const subject = this.values.subject; + const capabilities = subject.provider.get_capabilities(); + const uuid_selector = subject.get_selector_of_type(NodeUIDSelector); + + // Skip this optimization if there is no UUID + if ( ! uuid_selector ) { + return null; + } + + // Skip this optimization if the filesystem doesn't implement + // the "readdirstat_uuid" macro operation. + if ( ! capabilities.has(fsCapabilities.READDIRSTAT_UUID) ) { + return null; + } + + const uuid = uuid_selector.value; + return await subject.provider.readdirstat_uuid({ + uuid, + options: { thumbnail: true }, + }); + } } module.exports = {