On Fri, Aug 30, 2013 at 9:13 AM, Jens Axboe <axboe@xxxxxxxxx> wrote: > On 08/29/2013 06:09 PM, Juan Casse wrote: >> Jens, >> >> fio behaves in a way I was not expecting: >> >> Whenever the workload includes writes, fio will do the io and then >> verify only the blocks that were written; this is good. However, when >> the workload does only reads, the verify phase will verify the reads. >> >> So, the way the code is today, my changes to check numberio will work >> only for workloads that do writes or read/writes, but not for >> workloads that do only reads. >> >> I track the numberio in the pupulate_verify_io_u() function: >> io_u->numberio = td->io_issues[io_u->ddir]; >> This function does not get called when doing reads. >> >> What are your thoughts? > > Just populate it always when verify is enabled? > I think fio should not do a verify for read-only workloads because it cannot be certain of what data to expect if the workload does not write anything. For workloads that write (i.e., write, rw, randwrite, randrw), fio only verifies the blocks that it wrote, which is the right thing to do. I think that verifying the reads is a bug of fio when doing read-only workloads. I propose the following easy fix. When verify is enabled for a read-only workload, exit fio with a message indicating that there is nothing to verify when nothing is written. This will alert the user of the conflicting nature of their job file. The above is for the addition of the check of numberio during the verify phase. Data retention testing (a different option) is done on a separate change. Here, when the data_retention_check option is given, fio will do 2 things differently: 1. fio will do io but not actually write to storage so as not to overwrite the data already on storage that we want to check. 2. fio will do the verify only once after all the iterations have completed so that fio knows to check against the last numberio computed, which is what is expected to be in each block on storage. Of course, for this to work, the user must give the same workload (that does writes) that was given in a previous run of fio that wrote the data to storage. -- To unsubscribe from this list: send the line "unsubscribe fio" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html