From bdc323f28490c4fe6ec4ea5b5ea4d0624183cb8f Mon Sep 17 00:00:00 2001 From: Dmitry Litvintsev Date: Tue, 7 Feb 2023 15:29:33 -0600 Subject: [PATCH] namespace: mv workaround, allow mv between direcrories having none storageclass --- .../namespace/ChimeraNameSpaceProvider.java | 23 +++++++++++++------ 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/modules/dcache-chimera/src/main/java/org/dcache/chimera/namespace/ChimeraNameSpaceProvider.java b/modules/dcache-chimera/src/main/java/org/dcache/chimera/namespace/ChimeraNameSpaceProvider.java index b984eb9991e..d4ba6fb98d6 100644 --- a/modules/dcache-chimera/src/main/java/org/dcache/chimera/namespace/ChimeraNameSpaceProvider.java +++ b/modules/dcache-chimera/src/main/java/org/dcache/chimera/namespace/ChimeraNameSpaceProvider.java @@ -678,13 +678,22 @@ public void rename(Subject subject, @Nullable PnfsId pnfsId, sourceAttributes = getFileAttributes(new ExtendedInode(_fs, inode), attributes); } - if (!(nullToEmpty(destDirAttributes.getStorageClass()). - equals(nullToEmpty(sourceAttributes.getStorageClass())) && - nullToEmpty(destDirAttributes.getCacheClass()). - equals(nullToEmpty(sourceAttributes.getCacheClass())))) { - throw new PermissionDeniedCacheException("Mv denied: " + - dest.getParent() + - " has different storage tags; use cp."); + String destStorageClass = nullToEmpty(destDirAttributes.getStorageClass()); + String srcStorageClass = nullToEmpty(sourceAttributes.getStorageClass()); + + if (!srcStorageClass.equals("none.none") && + !destStorageClass.equals("none.none") && + !srcStorageClass.equals("") && + !destStorageClass.equals("")) { + + if (!(nullToEmpty(destDirAttributes.getStorageClass()). + equals(nullToEmpty(sourceAttributes.getStorageClass())) && + nullToEmpty(destDirAttributes.getCacheClass()). + equals(nullToEmpty(sourceAttributes.getCacheClass())))) { + throw new PermissionDeniedCacheException("Mv denied: " + + dest.getParent() + + " has different storage tags; use cp."); + } } } }