diff --git a/squashfs_utils/Android.mk b/squashfs_utils/Android.mk
index 7808ec0..c3d2f2d 100644
--- a/squashfs_utils/Android.mk
+++ b/squashfs_utils/Android.mk
@@ -2,6 +2,13 @@
 
 LOCAL_PATH:= $(call my-dir)
 
+include $(CLEAR_VARS)
+LOCAL_SRC_FILES := squashfs_utils.c
+LOCAL_STATIC_LIBRARIES := libcutils
+LOCAL_C_INCLUDES := external/squashfs-tools/squashfs-tools
+LOCAL_MODULE := libsquashfs_utils
+include $(BUILD_STATIC_LIBRARY)
+
 ifeq ($(HOST_OS),linux)
 
 include $(CLEAR_VARS)
diff --git a/squashfs_utils/squashfs_utils.c b/squashfs_utils/squashfs_utils.c
new file mode 100644
index 0000000..128a3ef
--- /dev/null
+++ b/squashfs_utils/squashfs_utils.c
@@ -0,0 +1,63 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "squashfs_utils.h"
+
+#include <cutils/klog.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#include "squashfs_fs.h"
+
+#define ERROR(x...)   KLOG_ERROR("squashfs_utils", x)
+
+int squashfs_parse_sb(char *blk_device, struct squashfs_info *info) {
+    int ret = 0;
+    struct squashfs_super_block sb;
+    int data_device;
+
+    data_device = TEMP_FAILURE_RETRY(open(blk_device, O_RDONLY | O_CLOEXEC));
+    if (data_device == -1) {
+        ERROR("Error opening block device (%s)\n", strerror(errno));
+        return -1;
+    }
+
+    if (TEMP_FAILURE_RETRY(read(data_device, &sb, sizeof(sb)))
+            != sizeof(sb)) {
+        ERROR("Error reading superblock\n");
+        ret = -1;
+        goto cleanup;
+    }
+    if (sb.s_magic != SQUASHFS_MAGIC) {
+        ERROR("Not a valid squashfs filesystem\n");
+        ret = -1;
+        goto cleanup;
+    }
+
+    info->block_size = sb.block_size;
+    info->inodes = sb.inodes;
+    info->bytes_used = sb.bytes_used;
+    // by default mksquashfs pads the filesystem to 4K blocks
+    info->bytes_used_4K_padded =
+        sb.bytes_used + (4096 - (sb.bytes_used & (4096 - 1)));
+
+cleanup:
+    TEMP_FAILURE_RETRY(close(data_device));
+    return ret;
+}
diff --git a/squashfs_utils/squashfs_utils.h b/squashfs_utils/squashfs_utils.h
new file mode 100644
index 0000000..ccad32d
--- /dev/null
+++ b/squashfs_utils/squashfs_utils.h
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef _SQUASHFS_UTILS_H_
+#define _SQUASHFS_UTILS_H_
+
+#include <stdint.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct squashfs_info {
+    uint32_t block_size;
+    uint32_t inodes;
+    uint64_t bytes_used;
+    uint64_t bytes_used_4K_padded;
+};
+
+int squashfs_parse_sb(char *blk_device, struct squashfs_info *info);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
