diff --git a/dashboard/src/translation/en.json b/dashboard/src/translation/en.json
index 2d622eb82..c80444a86 100644
--- a/dashboard/src/translation/en.json
+++ b/dashboard/src/translation/en.json
@@ -1476,7 +1476,8 @@
"description": "If the server is running out of disk space, use this to move the app's data to a volume. Any data here is part of the app's backup.",
"dataDirPlaceholder": "Leave empty to use platform default",
"moveAction": "Move Data",
- "diskUsage": "The app is currently using {{ size }} of storage (as of {{ date }})."
+ "diskUsage": "The app is currently using {{ size }} of storage (as of {{ date }}).",
+ "mountTypeWarning": "The destination file system must support file permissions and ownership for the move to work"
},
"mounts": {
"title": "Mounts",
diff --git a/dashboard/src/views/app.html b/dashboard/src/views/app.html
index ecd51fba8..e96b28f8c 100644
--- a/dashboard/src/views/app.html
+++ b/dashboard/src/views/app.html
@@ -973,6 +973,7 @@
+
diff --git a/dashboard/src/views/app.js b/dashboard/src/views/app.js
index a42a46936..f8c3eceae 100644
--- a/dashboard/src/views/app.js
+++ b/dashboard/src/views/app.js
@@ -613,7 +613,7 @@ angular.module('Application').controller('AppController', ['$scope', '$location'
];
$scope.volumes.forEach(function (volume) {
- $scope.storage.locationOptions.push({ id: volume.id, type: 'volume', value: volume.id, displayName: 'Volume - ' + volume.name });
+ $scope.storage.locationOptions.push({ id: volume.id, type: 'volume', value: volume.id, displayName: 'Volume - ' + volume.name, mountType: volume.mountType });
});
$scope.storage.location = $scope.storage.locationOptions.find(function (l) { return l.id === (app.storageVolumeId || 'default'); });
diff --git a/src/apps.js b/src/apps.js
index 220dd749e..ff74f4405 100644
--- a/src/apps.js
+++ b/src/apps.js
@@ -515,6 +515,9 @@ async function checkStorage(app, volumeId, prefix) {
const volume = await volumes.get(volumeId);
if (volume === null) throw new BoxError(BoxError.BAD_FIELD, 'Storage volume not found');
+ // lack of file perms makes these unsupported
+ if (volume.mountType === 'cifs' || volume.mountType === 'sshfs') throw new BoxError(BoxError.BAD_FIELD, `${volume.mountType} volumes cannot be used as data directory`);
+
const status = await volumes.getStatus(volume);
if (status.state !== 'active') throw new BoxError(BoxError.BAD_FIELD, 'Volume is not active');