--- a/upmpd/upmpd.cxx
+++ b/upmpd/upmpd.cxx
@@ -339,17 +339,20 @@
 		cachedir = path_cat(path_tildexpand("~") , "/.cache/upmpdcli");
 	}
 
-	string mcfn = path_cat(cachedir, "/metacache");
-	if (!path_makepath(cachedir, 0755)) {
-		LOGERR("makepath("<< cachedir << ") : errno : " << errno << endl);
-	} else {
-		int fd;
-		if ((fd = open(mcfn.c_str(), O_CREAT|O_RDWR, 0644)) < 0) {
-			LOGERR("creat("<< mcfn << ") : errno : " << errno << endl);
+	string mcfn;
+	if (ohmetapersist) {
+		mcfn = path_cat(cachedir, "/metacache");
+		if (!path_makepath(cachedir, 0755)) {
+			LOGERR("makepath("<< cachedir << ") : errno : " << errno << endl);
 		} else {
-			close(fd);
-			if (geteuid() == 0 && chown(mcfn.c_str(), runas, -1) != 0) {
-				LOGERR("chown("<< mcfn << ") : errno : " << errno << endl);
+			int fd;
+			if ((fd = open(mcfn.c_str(), O_CREAT|O_RDWR, 0644)) < 0) {
+				LOGERR("creat("<< mcfn << ") : errno : " << errno << endl);
+			} else {
+				close(fd);
+				if (geteuid() == 0 && chown(mcfn.c_str(), runas, -1) != 0) {
+					LOGERR("chown("<< mcfn << ") : errno : " << errno << endl);
+				}
 			}
 		}
 	}