support DATADATA
diff --git a/Android.mk b/Android.mk
index 2c5da9c..0fb6fd0 100644
--- a/Android.mk
+++ b/Android.mk
@@ -26,7 +26,7 @@
 
 LOCAL_FORCE_STATIC_EXECUTABLE := true
 
-RECOVERY_VERSION := ClockworkMod Recovery v1.8.2.8
+RECOVERY_VERSION := ClockworkMod Recovery v2.0.0.0
 LOCAL_CFLAGS := -DRECOVERY_VERSION="$(RECOVERY_VERSION)"
 RECOVERY_API_VERSION := 2
 LOCAL_CFLAGS += -DRECOVERY_API_VERSION=$(RECOVERY_API_VERSION)
@@ -67,6 +67,10 @@
   LOCAL_CFLAGS += -DCACHE_FILESYSTEM=\"$(BOARD_CACHE_FILESYSTEM)\"
 endif
 
+ifdef BOARD_HAS_DATADATA
+  LOCAL_CFLAGS += -DHAS_DATADATA
+endif
+
 # This binary is in the recovery ramdisk, which is otherwise a copy of root.
 # It gets copied there in config/Makefile.  LOCAL_MODULE_TAGS suppresses
 # a (redundant) copy of the binary in /system/bin for user builds.
diff --git a/nandroid.c b/nandroid.c
index ab20a60..e9234da 100644
--- a/nandroid.c
+++ b/nandroid.c
@@ -145,6 +145,11 @@
     if (0 != (ret = nandroid_backup_partition(backup_path, "DATA:")))
         return ret;
 
+#ifdef HAS_DATADATA
+    if (0 != (ret = nandroid_backup_partition(backup_path, "DATADATA:")))
+        return ret;
+#endif
+
     if (0 != (ret = nandroid_backup_partition(backup_path, "CACHE:")))
         return ret;
 
@@ -156,7 +161,7 @@
     else
     {
         if (0 != ensure_root_path_mounted("SDEXT:"))
-            ui_print("Could not mount sd-ext. sd-ext backup may not be supported on this device. Skipping backup of sd-ext.");
+            ui_print("Could not mount sd-ext. sd-ext backup may not be supported on this device. Skipping backup of sd-ext.\n");
         else if (0 != (ret = nandroid_backup_partition(backup_path, "SDEXT:")))
             return ret;
     }
@@ -252,6 +257,11 @@
 
     if (restore_data && 0 != (ret = nandroid_restore_partition(backup_path, "DATA:")))
         return ret;
+        
+#ifdef HAS_DATADATA
+    if (restore_data && 0 != (ret = nandroid_restore_partition(backup_path, "DATADATA:")))
+        return ret;
+#endif
 
     if (restore_cache && 0 != (ret = nandroid_restore_partition(backup_path, "CACHE:")))
         return ret;
diff --git a/roots.c b/roots.c
index 22988eb..b2df224 100644
--- a/roots.c
+++ b/roots.c
@@ -60,6 +60,14 @@
 #define DATA_FILESYSTEM "yaffs2"
 #endif
 
+#ifndef DATADATA_DEVICE
+#define DATADATA_DEVICE g_mtd_device
+#endif
+
+#ifndef DATADATA_FILESYSTEM
+#define DATADATA_FILESYSTEM "yaffs2"
+#endif
+
 #ifndef CACHE_DEVICE
 #define CACHE_DEVICE g_mtd_device
 #endif
@@ -72,6 +80,9 @@
     { "BOOT:", g_mtd_device, NULL, "boot", NULL, g_raw },
     { "CACHE:", CACHE_DEVICE, NULL, "cache", "/cache", CACHE_FILESYSTEM },
     { "DATA:", DATA_DEVICE, NULL, "userdata", "/data", DATA_FILESYSTEM },
+#ifdef HAS_DATADATA
+    { "DATADATA:", DATADATA_DEVICE, NULL, "datadata", "/datadata", DATADATA_FILESYSTEM },
+#endif
     { "MISC:", g_mtd_device, NULL, "misc", NULL, g_raw },
     { "PACKAGE:", NULL, NULL, NULL, NULL, g_package_file },
     { "RECOVERY:", g_mtd_device, NULL, "recovery", "/", g_raw },