Index: bin/bbackupd/BackupDaemon.cpp
===================================================================
--- bin/bbackupd/BackupDaemon.cpp	(revision 1233)
+++ bin/bbackupd/BackupDaemon.cpp	(working copy)
@@ -2365,7 +2365,7 @@
 
 static const int STOREOBJECTINFO_MAGIC_ID_VALUE = 0x7777525F;
 static const std::string STOREOBJECTINFO_MAGIC_ID_STRING = "BBACKUPD-STATE";
-static const int STOREOBJECTINFO_VERSION = 1;
+static const int STOREOBJECTINFO_VERSION = 2;
 
 bool BackupDaemon::SerializeStoreObjectInfo(int64_t aClientStoreMarker, box_time_t theLastSyncTime, box_time_t theNextSyncTime) const
 {
@@ -2424,9 +2424,24 @@
 		//
 		//
 		//
+		iCount = mUnusedRootDirEntries.size();
+		anArchive.Write(iCount);
+
+		for(int v = 0; v < iCount; v++)
+		{
+			anArchive.Write(mUnusedRootDirEntries[v].first);
+			anArchive.Write(mUnusedRootDirEntries[v].second);
+		}
+
+		if (iCount > 0)
+			anArchive.Write(mDeleteUnusedRootDirEntriesAfter);
+
+		//
+		//
+		//
 		aFile.Close();
-		::syslog(LOG_INFO, "Saved store object info file '%s'", 
-			StoreObjectInfoFile.c_str());
+		::syslog(LOG_INFO, "Saved store object info file '%s', version [%d]", 
+			StoreObjectInfoFile.c_str(), STOREOBJECTINFO_VERSION);
 	}
 	catch(std::exception &e)
 	{
@@ -2585,6 +2600,26 @@
 		//
 		//
 		//
+		iCount = 0;
+		anArchive.Read(iCount);
+
+		for(int v = 0; v < iCount; v++)
+		{
+			int64_t anId;
+			anArchive.Read(anId);
+
+			std::string aName;
+			anArchive.Read(aName);
+
+			mUnusedRootDirEntries.push_back(std::pair<int64_t, std::string>(anId, aName));
+		}
+
+		if (iCount > 0)
+			anArchive.Read(mDeleteUnusedRootDirEntriesAfter);
+
+		//
+		//
+		//
 		aFile.Close();
 		::syslog(LOG_INFO, "Loaded store object info file '%s', "
 			"version [%d]", StoreObjectInfoFile.c_str(), 

