diff --git a/chrome/content/zotero/xpcom/storage.js b/chrome/content/zotero/xpcom/storage.js
index 91dc3b3b3c..b11e3599b8 100644
--- a/chrome/content/zotero/xpcom/storage.js
+++ b/chrome/content/zotero/xpcom/storage.js
@@ -933,10 +933,21 @@ Zotero.Sync.Storage = new function () {
 				if (e.name == "NS_ERROR_FILE_NOT_FOUND" && destFile.path.length > 255) {
 					windowsLength = true;
 				}
-				// ext3/ext4/HFS+ have a filename length limit of ~254 characters
-				else if (e.name == "NS_ERROR_FAILURE" && destFile.leafName.length >= 254) {
+				// ext3/ext4/HFS+ have a filename length limit of ~254 bytes
+				//
+				// These filenames will almost always be ASCII ad files,
+				// but allow an extra 10 bytes anyway
+				else if (e.name == "NS_ERROR_FAILURE" && destFile.leafName.length >= 244) {
 					nameLength = true;
 				}
+				// ecrypt (on Ubuntu, at least) can result in a lower limit --
+				// not much we can do about this, but log a warning
+				else if (e.name == "NS_ERROR_FAILURE" && Zotero.isLinux && destFile.leafName.length > 130) {
+					var msg = "Error creating file '" + destFile.leafName + "' "
+						+ "(Are you using filesystem encryption such as ecrypt "
+						+ "that results in a filename length limit below 255 bytes?)";
+					Components.utils.reportError(msg);
+				}
 				
 				if (windowsLength || nameLength) {
 					// Is this the main attachment file?