Skip to content

Commit 74cd74f

Browse files
Merge pull request #9248 from jackyalbo/jacky-nc-5.20-fixes
[5.20 backport] NC | 5.20 fixes
2 parents 2fd9d96 + f8ce045 commit 74cd74f

File tree

3 files changed

+14
-12
lines changed

3 files changed

+14
-12
lines changed

config.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1000,6 +1000,8 @@ config.NFSF_UPLOAD_STREAM_MEM_THRESHOLD = 8 * 1024 * 1024;
10001000

10011001
// we want to change our handling related to EACCESS error
10021002
config.NSFS_LIST_IGNORE_ENTRY_ON_EACCES = true;
1003+
// we will for now handle the same way also EINVAL error - for gpfs stat issues on list (.snapshots)
1004+
config.NSFS_LIST_IGNORE_ENTRY_ON_EINVAL = true;
10031005

10041006
////////////////////////////
10051007
// NSFS NON CONTAINERIZED //

src/sdk/namespace_fs.js

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -737,18 +737,16 @@ class NamespaceFS {
737737
if (!delimiter && r.common_prefix) {
738738
await process_dir(r.key);
739739
} else {
740-
if (!r.common_prefix) {
741-
const entry_path = path.join(this.bucket_path, r.key);
742-
// If entry is outside of bucket, returns stat of symbolic link
743-
const use_lstat = !(await this._is_path_in_bucket_boundaries(fs_context, entry_path));
744-
const stat = await native_fs_utils.stat_if_exists(fs_context, entry_path,
745-
use_lstat, config.NSFS_LIST_IGNORE_ENTRY_ON_EACCES);
746-
// TODO - GAP of .folder files - we return stat of the directory for the
747-
// xattr, but the creation time should be of the .folder files (and maybe more )
748-
if (stat) r.stat = stat;
749-
}
750-
// add the result only if we have the stat information or a directory
751-
if (r.stat || r.common_prefix) {
740+
const entry_path = path.join(this.bucket_path, r.key);
741+
// If entry is outside of bucket, returns stat of symbolic link
742+
const use_lstat = !(await this._is_path_in_bucket_boundaries(fs_context, entry_path));
743+
const stat = await native_fs_utils.stat_if_exists(fs_context, entry_path,
744+
use_lstat, config.NSFS_LIST_IGNORE_ENTRY_ON_EACCES);
745+
// TODO - GAP of .folder files - we return stat of the directory for the
746+
// xattr, but the creation time should be of the .folder files (and maybe more )
747+
if (stat) {
748+
r.stat = stat;
749+
// add the result only if we have the stat information
752750
if (pos < results.length) {
753751
results.splice(pos, 0, r);
754752
} else {

src/util/native_fs_utils.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -318,6 +318,8 @@ async function stat_if_exists(fs_context, entry_path, use_lstat, should_ignore_e
318318
// we might want to expand the error list due to permission/structure
319319
// change (for example: ELOOP, ENAMETOOLONG) or other reason (EPERM) - need to be decided
320320
if ((err.code === 'EACCES' && should_ignore_eacces) ||
321+
// A fix for GPFS stat issues on list (.snapshots) - ignore EINVAL as well
322+
(err.code === 'EINVAL' && config.NSFS_LIST_IGNORE_ENTRY_ON_EINVAL) ||
321323
err.code === 'ENOENT' || err.code === 'ENOTDIR') {
322324
dbg.log0('stat_if_exists: Could not access file entry_path',
323325
entry_path, 'error code', err.code, ', skipping...');

0 commit comments

Comments
 (0)