On Fri, Sep 4, 2015 at 9:34 PM, Jens Axboe <axboe@xxxxxxxxx> wrote: > On 08/19/2015 04:33 AM, Roman Pen wrote: >> >> Hello, all. >> >> The intention of this patchset is to support dynamic formats for pattern >> input which is used for writing and verifying data, e.g. in the latest >> patch >> I added '%o' format, which means that current block offset will be written >> to >> the buffer and then verified back, i.e. this option can be used as the >> following: >> >> verify_pattern=%o >> >> and the hexdump of generated file in my case is (few last lines): >> >> ... >> 000f5c00 00 5c 0f 00 00 00 00 00 00 5c 0f 00 00 00 00 00 >> |.\.......\......| >> * >> 000fdc00 00 dc 0f 00 00 00 00 00 00 dc 0f 00 00 00 00 00 >> |................| >> * >> 000ffc00 00 fc 0f 00 00 00 00 00 00 fc 0f 00 00 00 00 00 >> |................| >> * >> 00100000 >> >> So, each block is filled in with block offset in little endian order and 8 >> bytes >> long. >> >> Unfortunately, 'buffer_pattern' option does not support formats, because >> it >> turned out to be a lot of changes which should be made to pass correct >> io_u->offset through the whole stack of calls. I left this task for >> future. >> >> Additionally, I moved all 'pattern' parsing/substituting logic to separate >> library file 'lib/pattern.[ch]'. Also, now 'verify_pattern' and >> 'buffer_pattern' >> support combined input which can consist of strings, numbers and formats >> (as was said formats are supported only by 'verify_pattern' option), e.g. >> let's >> consider the following example, where 'in' is a 'verify_pattern' or >> 'buffer_pattern' and 'out' is an output buffer filled in with bytes >> regarding >> specified pattern: >> >> #1 #2 #3 #4 >> in="abcd" in=-1024 in=66 in=0xFF0X1 >> out=61 62 63 64 out=00 fc ff ff out=42 out=ff 01 >> >> #5 #6 >> in=%o in="123"0xFFeeCC >> out=00 00 00 00 00 00 00 00 out=31 32 33 ff ec cc >> >> #7 >> in=-100xab"1"%o"2" >> out=f6 ff ff ff ab 31 00 00 00 00 00 00 00 00 32 >> >> #8 >> in=%o0xdeadbeef%o >> out=00 00 00 00 00 00 00 00 de ad be ef 00 00 00 00 00 00 00 00 >> >> #9 >> in=0xfefefefefefefefefefefefefefefefefefefefefe >> out=fe fe fe fe fe fe fe fe fe fe fe fe fe fe fe fe fe fe fe fe fe >> >> For %o format 8 bytes reserved in pattern, and when buffer is ready >> substitution occurs. >> >> The old behaviour is preserved: strings are in quotes, decimals are in the >> range [INT_MIN, INT_MAX], hexidecimals start from 0[Xx] and can be of any >> size (the limit is the maximum size of the pattern, which is 512). >> >> New behaviour: now you can combine everything together and additionally >> use formats (now %o is supported). > > > Sorry for the late response. This looks good, I have applied it. Care to > send updates for the HOWTO/man page as well? For sure. Frankly, I missed the man, I did update only HOWTO. Jens, did you forget to review my patch related to moving meta header to generic verify_header? I also will resend it with man updates and rebased on latest changes. -- Roman > > -- > Jens Axboe > -- 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