diff --git a/HISTORY b/HISTORY index 79be26fe..1e8b5e75 100644 --- a/HISTORY +++ b/HISTORY @@ -1,7 +1,7 @@ SnapRAID HISTORY ================ -3.2 2013/6 +4.0 2013/6 ========== * Better selection of the RAID6 implementation for different CPUs. * Added the new Spooky hash. It's faster in 64 bit architectures. diff --git a/Makefile.am b/Makefile.am index 331358f9..425c72fd 100644 --- a/Makefile.am +++ b/Makefile.am @@ -37,12 +37,14 @@ noinst_HEADERS = \ spooky2.c \ spooky2test.c \ tommyarray.h \ + tommyarrayof.h \ tommychain.h \ tommyhash.h \ tommyhashdyn.h \ tommylist.h \ tommytypes.h \ tommyarray.c \ + tommyarrayof.c \ tommyhash.c \ tommyhashdyn.c \ tommylist.c \ diff --git a/TODO b/TODO index f6da7540..4e166b48 100644 --- a/TODO +++ b/TODO @@ -3,27 +3,27 @@ SnapRAID TODO This is the list of TODO items for SnapRAID. -- v3.2 +- v4.0 -* Allow to specify the shared path to use to access remote symlink. +* In the content file, for each position in the parity store the last time +the hash/parity was checked for all the blocks with sync. +We can share the same time info for all the blocks at a given position. +It will allow to define a new "scrub" command, checking only aged blocks +and skipping recently synched ones. +The "scrub" command won't change data in the disks, but it will update the content +file. +The check command should be maintaned independent, and not saving the content file. +The format could be: +tim BLOCK TIME +tir FROM_BLOCK TO_BLOCK TIME +For missing block, we can use 0 as initialization value. TIME is the UNIX time. + +- v4.x * In the import list, uses also all the blocks in the array. But we must cover the case of bad blocks. Likely we can just check the hash after reading, and in case, skip it, and retry with another copy. -* Add a new "commit" command to move changes from the pool to the array. -It should: -- Move files copied into the pool (that are no links) to the array. -The files should be moved to the disk that contains most of the files -in the directory. If no space, try with the disk with less files -in the directory, and eventually the disk in the array with more free space. -- Detect renames, and apply them in the array. -The file will be renamed and moved to the new directory, if changed, -but kept in the same disk of the array. -- Detect deletes, and move file in the array to a "/trash/" directory -of the same disk. For safety no real deletion is done. -File with the same name will get an extra extension like ".1", ".2". - * If a content file is missing, sync should rewrite it, even if no change was done at the content. * A new 'init' command to differentiate the first 'sync' operation. @@ -48,21 +48,6 @@ Different partitions have duplicate inode. The only way to support this is to add also a kind of device_id, increasing the memory required. But it should be only few bits for each file. So, it should be manageable. -- v4.x - -* In the content file, for each position in the parity store the last time -the hash/parity was checked for all the blocks with sync. -We can share the same time info for all the blocks at a given position. -It will allow to define a new "scrub" command, checking only aged blocks -and skipping recently synched ones. -The "scrub" command won't change data in the disks, but it will update the content -file. -The check command should be maintaned independent, and not saving the content file. -The format could be: -tim BLOCK TIME -tir FROM_BLOCK TO_BLOCK TIME -For missing block, we can use 0 as initialization value. TIME is the UNIX time. - * Save the content file in compressed .gz format to save space. * Rename sync->backup and fix->restore. It seems to me a naming expressing @@ -87,6 +72,23 @@ We can always open files in read-only mode, if a write is required, we close it, rename it to with a .bak extension, and rewrite it up to the required size. The same for symlink if a file with the same name exist or viceversa. +- v4.x pooling + +* Allow to specify the shared path to use to access remote symlink. + +* Add a new "commit" command to move changes from the pool to the array. +It should: +- Move files copied into the pool (that are no links) to the array. +The files should be moved to the disk that contains most of the files +in the directory. If no space, try with the disk with less files +in the directory, and eventually the disk in the array with more free space. +- Detect renames, and apply them in the array. +The file will be renamed and moved to the new directory, if changed, +but kept in the same disk of the array. +- Detect deletes, and move file in the array to a "/trash/" directory +of the same disk. For safety no real deletion is done. +File with the same name will get an extra extension like ".1", ".2". + - v5.x * Triple parity also called RAID-TP. We can implement it in a compatible way diff --git a/configure.ac b/configure.ac index 26b1f47a..7e4ba7be 100644 --- a/configure.ac +++ b/configure.ac @@ -1,6 +1,6 @@ dnl Process this file with autoconf to produce a configure script. AC_PREREQ([2.65]) -AC_INIT([snapraid], [3.2], [], [], [http://snapraid.sourceforge.net]) +AC_INIT([snapraid], [4.0], [], [], [http://snapraid.sourceforge.net]) AM_INIT_AUTOMAKE([foreign no-dependencies -Wall]) AC_CONFIG_SRCDIR([snapraid.c]) AC_CONFIG_HEADER([config.h])