1 Disktest Version v1.4.x CHANGELOG 2 3 CHANGES SINCE v1.3.x 4 5 Major Changes: 6 7 Added an option to specify the amount of time that IO can be stalled, 8 before it is considered an error. The default is 120 sec and can be 9 changed using the -t. An IO timeout is a warning message, unless -At is 10 specified. 11 12 Added additional option to -t to support random IO delays per thread. This 13 function use to only support static delays. Review the -t option in the 14 man page to understand the new operation. 15 16 Added signal handling. So that SIGINT, SIGKILL, SIGHUP, SIGTERM, and 17 SIGUSR1 are now handled. Sending SIGUSR1, will display heartbeat 18 statistics since the last time SIGUSR1 was issued or the last heartbeat 19 interval if -h is specified. Sending SIGUSR1, reset heartbeat counter 20 statistics. 21 22 More changes to the -m option. With the release of the last level of 23 disktest, it was found the the extra mark options which were add, caused 24 some undesired results, as in not being able to read back from a different 25 host, due to the host name being automatically set. The -m option is now 26 been cahnged to work just like the -P option. So that all mark options 27 can be included, or only the desired subset. 28 29 Added sync interval to -Is. The number of IOs can now be specified, 30 before a sync is sent. If -Is is specified, then sync will occur on every 31 write IO. If -Is100, then every 100th write IO, and sync will occur. 32 33 Added -R option, which specifies a number of retries that should occur 34 after a seek, or read/write failure. Also specifies how much delay should 35 be added before a retry occurs. sync and data miscompares errors are not 36 retrable. 37 38 Added option to -A, -At, this will cause an IO timeout, specified by -t, to 39 be an error and fail and IO test. By default, IO timeouts are warnings. 40 41 Minor Changes: 42 43 Fixed that use of -s or -S, where the LBA/Block specified is greater then 44 the calculated volume size. This was an issue when initializing sparse 45 file targets where a single write was issued at the end of the file. 46 47 Fixed a bug for Windows were the volume size was returned in bytes when it 48 should have been returned in blocks. 49 50 Fixed a bug where during linear testing using cycles, the read time for the 51 cycle duration was always being printed as one second. 52 53 Disktest now uses stat(2) to check the filespec type, removed depricated 54 way of checking file type, which did not always work as expected. 55 56 Updated the sync on test end, to always sync when open for write. This is 57 to make sure that even on block devices, that the kernel cache is sync'd to 58 disk before moving to the next test. Previously this was only done when 59 the filespec was a filesystem file only. 60 61 Added patch from Mike Anderson for checking status on sync/close. 62 63 Fixed cycle performance stat printing. Cycle performance was printing at 64 the end if each cycle, even if -PC was not specified. 65 66 Updated docs, to document the -PC option. 67 68 Added check for early exit in IO threads when global run flag cleared. 69 70 When the -Ac flag is specified, error messages, that would normally fail 71 the test will be printed as warning messages, and the test will continue. 72 At the end of the test, if it was able to complete, the test will be 73 described as passed with warning. if the -Ac is not used, the the same 74 test will be failed with errors. 75 76 Fixed up some issues with the timer code, specifically so that timed runs 77 are based on the number of seconds elapsed, not actual time, this was an 78 issue during timed runs, and the system time was changed. 79 80 Fixed an issue with the block range calcualation, when specified with the 81 -S option. The last LBA calculation was wrong, of by transfer size - 1. 82 83 Fixed an issue that was intruduced in 1.3, where percentage read/write 84 always assumed error checking enabled. 85 86 Fixed the -s and -S options so that they now allow for hex and oct input 87 from the command line. 88 89 Modified the fsync to not be called on character raw devices, this was 90 causing a false failure on IO thread exit. 91 92 Ross S. W. Walker found a significant performance drop in IO throughput. 93 This was caused by calling sleep(0) by default on every IO. Modified 94 the code so that if delay is zero, the sleep is not called. 95 96 CHANGES SINCE v1.2.x 97 98 Major Changes: 99 100 Added synchronization at the block level between threads as the default. 101 Also added an option to serialize IO and the IO operation level but it is 102 not the default. Added to new options to -A, s and S, to manipulate these 103 new synchronization and serialization features. 104 105 Added the target, cycle start time, seed, and hostname info to the mark 106 option. When the mark option is specified, the LBA number, the pass 107 count, the start time in UTC, the seed value, the hostname, and the 108 target is added to the front of each LBA data set, the remainder of the 109 data set is then filed with the requested data pattern. 110 111 On a data miscompare, disktest will now reread the lba that caused the data 112 miscompare and present that data in the dump file and stdout. 113 114 Add options to -A. If -Ag is specified, all threads to all tagets are 115 killed, vs. threads to only the target that had the error. -Am, will write 116 a marker, DISKTEST ERROR OCCURRED, to LBA 0 of the failing target device. 117 To turn off the reread on data miscompare us the option -Ar. The orginal 118 use of -A, continue on error, is now the option -Ac. -Aw will allow for 119 WORM tesign when using -pR. -As and -AS are new IO sycronization options. 120 121 A new option -M has been added. This will override the use of the cycle 122 start time on the mark data and set it to the specified value up to 8 bytes. 123 124 Added new seek pattern, -pr, random interleaved. The way this seek pattern 125 functions is that a random LBA is selected, and then it is written to, if 126 write is specified, then read from, if read is specified, before selecting 127 a new random LBA. To get the original random, which supports the Duty 128 cycle function and writes and read to random LBAs for each seek, use -pR. 129 130 Added a delay time option, -t <delay>. This will allow a user to specify, 131 in miliseconds, the amount of time for each thread to delay before 132 performing each IO operation. The default is to not delay. 133 134 Added a LBA alignement offset option, -o <offset>. This option allows a 135 user to specify the LBA which IO will start from and be aligned to. For 136 example if -o3 is specified for 1024 byte IOs, then the LBA alignment for 137 IO will start at LBA 3 and be aligned at LBA 5, 7, 9, etc. Instend of 138 aligned at LBA 0, 2, 4, 6, 8 etc. This is used to match the IO alignment 139 to the storage device striping, or volume managment alignement in an OS. 140 141 Minor Changes: 142 143 The -d option use to reset the count at every 512 interval regardless of the 144 requested dump size. This made it difficult to dump current data content 145 from the filespec and compare it with misscompare data. The count is now 146 consistent with the requested dump size. 147 148 Modified the dump file to include the start arguments and the target. 149 150 The timed test, -T, now works correctly with specifing cycles, -C. 151 152 During cycle testing, the random data, -z, is now different for each cycle. 153 154 Added the -F option to the -? usage. 155 156 When a data miscompare occures, the data printed to stdout now shows the 157 byte offset of the first byte that caused the miscompare, and 16 bytes of 158 data at that offset. 159 160 Added a compile directive for debug information, so that debug type code is 161 now #ifdef'd. To us the -V option, the debug directive _DEBUG must be 162 speicifed at compile time. 163 164 Added the usecs an IO takes to complete in the debug information when using 165 verbose level 5. 166 167 The option -ma has been change to only having to specify -m 168 169 When using the -F option to specify more then one target, there was a bug 170 were the mutex was held for all targets during data compares, this has now 171 been fixed so that each target holds its own set of mutexes. 172 173 Changed stdout to not buffer its output. 174 175 Modified the volume sizing function for aix, so that it could use the 176 extended functions for getting the volumes size when DF_LGDSK is set 177 as a flag in the devinfo struct. 178 179 Modified the Makefile.aix to support compiling of a 64bit binary by 180 default. 181 182 Added additional checking when attempting to generate a random LBA target 183 to lower the need to regenerate an LBA after alignment and transfer size 184 are taken into account. 185 186 The heartbeat option now shows statistics for the hearbeat interval, and 187 not the aggregate of the cycle. Also added more discription to the 188 statistical output to discribe the heartbeat, cycle, and total stats. 189 190 Modified the block alignment macro so that non power of 2 transfer sizers 191 will align correctly. Previously, when transfering non 2^n trnasfer sizes 192 the nearest 2^n would be used. 193 194 Add a patch to the code, provided to me by Oliver Paukstadt, were on s390, 195 need to specify that length of the value used for "longest time" in the 196 timer code. 197 198 When an error occurs in io, the errno has been added to the output line. 199 200 CHANGES SINCE v1.1.x 201 202 Major Changes: 203 204 A new option -F has been added. This allows the use of a file to discribe 205 the targets that disktest will run against. This should work as if an 206 individual command line was started for each of the targets specified in the 207 file. 208 209 Add an option, C, to the performance option -P. This allows the user to 210 specify at the end of each cycle or test, to display the performance 211 information for the cycle. In the case were there is only one cycle, then 212 the total and cycle performance data will be identical. 213 214 Minor Changes: 215 216 Added day calculation to runtime statistics. 217 218 When setting a finite pass count, the passes would continue one more cycle 219 then specified. 220 221 Added fsync on close for unix systems when doing file IO. The fsync will 222 occur in between cycles and at the conclusion of a test. Also added a 223 modification to -If, -Ifs, this will force an fsync on every write. The 224 default is to only fsync at the end of a cycle or test. 225 226 When using the the mark option, -m, disktest would some times report a 227 false data miss compare. Also the only -m available now is -ma. There 228 are cases that could cause false miss-compares when using variable block 229 transfer size and the -mf or -ml options. For now these modifiers have 230 been disabled. 231 232 Disktest now detects the size of a file when doing filesystem IO tests. It 233 previously defaulted to the internal default of 2000 LBAs. 234 235 Updated the man page and usage text to describe option -z and option -Q. 236 They have always been there, but never in the documentation. 237 238 I had made use of lots of globals to share data between threads. Most of 239 these have now been cleaned up. 240 241 when using the -PPA option, the values were being rounded and not showing 242 the calculated tenths. 243 244 When running -C0, dsktest was showing 'Starting pass x of 0', removed the 245 'of 0' part. 246 247 Statistics are never being shown when using -C0 option. Now, stats will 248 be shown for each cycle and the total for all cycles. 249 250 The process ID that is shown as part of the running test is unique to the 251 test running, not to each thread. This change was made to make it easier 252 to track a single test out of a log file by searching for the id. It is 253 also that same id used for the random seed and the dump file identifier. 254 255 The -f option did not take into consideration the endian-ness of the arch. 256 this would cause issues in the line value of the data pattern when using 257 the option. This has been fixed. 258 259 Added IFDEF for Power when using ioctl BLKGETSIZE where the size must be a 260 unsigned long for the value to return correctly 261 262 CHANGES SINCE v1.0.x 263 264 Major Changes: 265 266 Updated performance output based on command line. Gave one decimal in 267 MB/s output. 268 269 Rewrote -pL IO routine to show correct stats. Now shows pass count when 270 using -C. 271 272 Added dump function from command line. Created formatted dump output for 273 Data miscomare and command line. 274 275 Modified performance statistic printing to be more accurate with respect 276 to throughput and IO/s. Added one decimal place of precision in MB/s 277 calculation. 278 279 Minor Changes: 280 281 Code cleanup to remove the plethora if #ifdef for windows/unix functional 282 differences. 283 284 Updates to parsing routines for user input. Added multipliers for -S and 285 -s command line arguments. Forced default seeks to default if performing 286 a diskcache test. 287 288 Can now leave off filespec the full path header as it will be added based 289 on -I. 290