Dropped support for protocol versions less than 20 (2.3.0
[rsync/rsync.git] / rsync.h
diff --git a/rsync.h b/rsync.h
index 1506625..633189d 100644 (file)
--- a/rsync.h
+++ b/rsync.h
@@ -80,8 +80,8 @@
  * unlikely to begin by sending a byte between MIN_PROTOCL_VERSION and
  * MAX_PROTOCOL_VERSION. */
 
-#define MIN_PROTOCOL_VERSION 19
-#define OLD_PROTOCOL_VERSION 20
+#define MIN_PROTOCOL_VERSION 20
+#define OLD_PROTOCOL_VERSION 25
 #define MAX_PROTOCOL_VERSION 40
 
 #define RSYNC_PORT 873
 #define FULL_FLUSH     1
 #define NORMAL_FLUSH   0
 
-#define CLEAR_STRUCT   0
-#define FREE_STRUCT    1
 
 /* Log-message categories.  FLOG is only used on the daemon side to
  * output messages to the log file. */
@@ -254,6 +252,7 @@ enum msgcode {
 
 #include <assert.h>
 
+#include "lib/pool_alloc.h"
 
 #define BOOL int
 
@@ -434,19 +433,28 @@ struct file_struct {
  */
 #define FLIST_START    (32 * 1024)
 #define FLIST_LINEAR   (FLIST_START * 512)
+/*
+ * Extent size for allocation pools A minimum size of 128KB
+ * is needed to mmap them so that freeing will release the
+ * space to the OS.
+ *
+ * Larger sizes reduce leftover fragments and speed free calls
+ * (when they happen) Smaller sizes increase the chance of
+ * freed allocations freeing whole extents.
+ */
 
-struct string_area {
-       char *base;
-       char *end;
-       char *current;
-       struct string_area *next;
-};
+#define FILE_EXTENT    (256 * 1024)
+#define HLINK_EXTENT   (128 * 1024)
+
+#define WITH_HLINK     1
+#define WITHOUT_HLINK  0
 
 struct file_list {
        int count;
        int malloced;
+       alloc_pool_t file_pool;
+       alloc_pool_t hlink_pool;
        struct file_struct **files;
-       struct string_area *string_area;
 };
 
 struct sum_buf {