summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mkfs.ubifs/compr.h8
-rw-r--r--mkfs.ubifs/mkfs.ubifs.c3
2 files changed, 10 insertions, 1 deletions
diff --git a/mkfs.ubifs/compr.h b/mkfs.ubifs/compr.h
index c76a5b9..e3dd95c 100644
--- a/mkfs.ubifs/compr.h
+++ b/mkfs.ubifs/compr.h
@@ -23,6 +23,14 @@
#ifndef __UBIFS_COMPRESS_H__
#define __UBIFS_COMPRESS_H__
+/*
+ * Compressors may end-up with more data in the output buffer than in the input
+ * buffer. This constant defined the worst case factor, i.e. we assume that the
+ * output buffer may be at max. WORST_COMPR_FACTOR times larger than input
+ * buffer.
+ */
+#define WORST_COMPR_FACTOR 4
+
enum compression_type
{
MKFS_UBIFS_COMPR_NONE,
diff --git a/mkfs.ubifs/mkfs.ubifs.c b/mkfs.ubifs/mkfs.ubifs.c
index 65ebc8c..18ede49 100644
--- a/mkfs.ubifs/mkfs.ubifs.c
+++ b/mkfs.ubifs/mkfs.ubifs.c
@@ -28,7 +28,8 @@
#define HASH_TABLE_SIZE 10099
/* The node buffer must allow for worst case compression */
-#define NODE_BUFFER_SIZE (UBIFS_DATA_NODE_SZ + UBIFS_BLOCK_SIZE * 4)
+#define NODE_BUFFER_SIZE (UBIFS_DATA_NODE_SZ + \
+ UBIFS_BLOCK_SIZE * WORST_COMPR_FACTOR)
/* Default time granularity in nanoseconds */
#define DEFAULT_TIME_GRAN 1000000000