Re: [RFC 0/6] Add support of formats for the pattern input

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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



[Index of Archives]     [Linux Kernel]     [Linux SCSI]     [Linux IDE]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux SCSI]

  Powered by Linux