Message ID | 1440623592-13999-3-git-send-email-jsnow@redhat.com |
---|---|
State | New |
Headers | show |
John Snow <jsnow@redhat.com> writes: > Share the pattern function for ide and ahci test. > > Signed-off-by: John Snow <jsnow@redhat.com> > --- > tests/ahci-test.c | 26 -------------------------- > tests/libqos/libqos.c | 26 ++++++++++++++++++++++++++ > tests/libqos/libqos.h | 1 + > 3 files changed, 27 insertions(+), 26 deletions(-) > > diff --git a/tests/ahci-test.c b/tests/ahci-test.c > index b1a785c..59d387c 100644 > --- a/tests/ahci-test.c > +++ b/tests/ahci-test.c > @@ -71,32 +71,6 @@ static void string_bswap16(uint16_t *s, size_t bytes) > } > } > > -static void generate_pattern(void *buffer, size_t len, size_t cycle_len) > -{ > - int i, j; > - unsigned char *tx = (unsigned char *)buffer; > - unsigned char p; > - size_t *sx; > - > - /* Write an indicative pattern that varies and is unique per-cycle */ > - p = rand() % 256; > - for (i = 0; i < len; i++) { > - tx[i] = p++ % 256; > - if (i % cycle_len == 0) { > - p = rand() % 256; > - } > - } > - > - /* force uniqueness by writing an id per-cycle */ > - for (i = 0; i < len / cycle_len; i++) { > - j = i * cycle_len; > - if (j + sizeof(*sx) <= len) { > - sx = (size_t *)&tx[j]; > - *sx = i; > - } > - } > -} > - > /** > * Verify that the transfer did not corrupt our state at all. > */ > diff --git a/tests/libqos/libqos.c b/tests/libqos/libqos.c > index fce625b..8d7c5a9 100644 > --- a/tests/libqos/libqos.c > +++ b/tests/libqos/libqos.c > @@ -212,3 +212,29 @@ void prepare_blkdebug_script(const char *debug_fn, const char *event) > ret = fclose(debug_file); > g_assert(ret == 0); > } > + > +void generate_pattern(void *buffer, size_t len, size_t cycle_len) > +{ > + int i, j; > + unsigned char *tx = (unsigned char *)buffer; > + unsigned char p; > + size_t *sx; > + > + /* Write an indicative pattern that varies and is unique per-cycle */ > + p = rand() % 256; > + for (i = 0; i < len; i++) { > + tx[i] = p++ % 256; > + if (i % cycle_len == 0) { > + p = rand() % 256; > + } > + } > + > + /* force uniqueness by writing an id per-cycle */ > + for (i = 0; i < len / cycle_len; i++) { > + j = i * cycle_len; > + if (j + sizeof(*sx) <= len) { > + sx = (size_t *)&tx[j]; Relies on cycle_len being a multiple of size_t's alignment. So far, it's always AHCI_SECTOR_SIZE, which should do. > + *sx = i; > + } > + } > +} Looks like overkill to me, but since it's working code... :) > diff --git a/tests/libqos/libqos.h b/tests/libqos/libqos.h > index e1f14ea..492a651 100644 > --- a/tests/libqos/libqos.h > +++ b/tests/libqos/libqos.h > @@ -24,6 +24,7 @@ void mkqcow2(const char *file, unsigned size_mb); > void set_context(QOSState *s); > void migrate(QOSState *from, QOSState *to, const char *uri); > void prepare_blkdebug_script(const char *debug_fn, const char *event); > +void generate_pattern(void *buffer, size_t len, size_t cycle_len); > > static inline uint64_t qmalloc(QOSState *q, size_t bytes) > {
On 09/10/2015 05:18 AM, Markus Armbruster wrote: > John Snow <jsnow@redhat.com> writes: > >> Share the pattern function for ide and ahci test. >> >> Signed-off-by: John Snow <jsnow@redhat.com> >> --- >> tests/ahci-test.c | 26 -------------------------- >> tests/libqos/libqos.c | 26 ++++++++++++++++++++++++++ >> tests/libqos/libqos.h | 1 + >> 3 files changed, 27 insertions(+), 26 deletions(-) >> >> diff --git a/tests/ahci-test.c b/tests/ahci-test.c >> index b1a785c..59d387c 100644 >> --- a/tests/ahci-test.c >> +++ b/tests/ahci-test.c >> @@ -71,32 +71,6 @@ static void string_bswap16(uint16_t *s, size_t bytes) >> } >> } >> >> -static void generate_pattern(void *buffer, size_t len, size_t cycle_len) >> -{ >> - int i, j; >> - unsigned char *tx = (unsigned char *)buffer; >> - unsigned char p; >> - size_t *sx; >> - >> - /* Write an indicative pattern that varies and is unique per-cycle */ >> - p = rand() % 256; >> - for (i = 0; i < len; i++) { >> - tx[i] = p++ % 256; >> - if (i % cycle_len == 0) { >> - p = rand() % 256; >> - } >> - } >> - >> - /* force uniqueness by writing an id per-cycle */ >> - for (i = 0; i < len / cycle_len; i++) { >> - j = i * cycle_len; >> - if (j + sizeof(*sx) <= len) { >> - sx = (size_t *)&tx[j]; >> - *sx = i; >> - } >> - } >> -} >> - >> /** >> * Verify that the transfer did not corrupt our state at all. >> */ >> diff --git a/tests/libqos/libqos.c b/tests/libqos/libqos.c >> index fce625b..8d7c5a9 100644 >> --- a/tests/libqos/libqos.c >> +++ b/tests/libqos/libqos.c >> @@ -212,3 +212,29 @@ void prepare_blkdebug_script(const char *debug_fn, const char *event) >> ret = fclose(debug_file); >> g_assert(ret == 0); >> } >> + >> +void generate_pattern(void *buffer, size_t len, size_t cycle_len) >> +{ >> + int i, j; >> + unsigned char *tx = (unsigned char *)buffer; >> + unsigned char p; >> + size_t *sx; >> + >> + /* Write an indicative pattern that varies and is unique per-cycle */ >> + p = rand() % 256; >> + for (i = 0; i < len; i++) { >> + tx[i] = p++ % 256; >> + if (i % cycle_len == 0) { >> + p = rand() % 256; >> + } >> + } >> + >> + /* force uniqueness by writing an id per-cycle */ >> + for (i = 0; i < len / cycle_len; i++) { >> + j = i * cycle_len; >> + if (j + sizeof(*sx) <= len) { >> + sx = (size_t *)&tx[j]; > > Relies on cycle_len being a multiple of size_t's alignment. So far, > it's always AHCI_SECTOR_SIZE, which should do. > >> + *sx = i; >> + } >> + } >> +} > > Looks like overkill to me, but since it's working code... :) > I'll spare you the details, but I found it to be genuinely helpful to have a pattern like this while debugging. Makes it very easy to see which pattern came from where and so on. The per-sector uniqueness was critical, too ... >> diff --git a/tests/libqos/libqos.h b/tests/libqos/libqos.h >> index e1f14ea..492a651 100644 >> --- a/tests/libqos/libqos.h >> +++ b/tests/libqos/libqos.h >> @@ -24,6 +24,7 @@ void mkqcow2(const char *file, unsigned size_mb); >> void set_context(QOSState *s); >> void migrate(QOSState *from, QOSState *to, const char *uri); >> void prepare_blkdebug_script(const char *debug_fn, const char *event); >> +void generate_pattern(void *buffer, size_t len, size_t cycle_len); >> >> static inline uint64_t qmalloc(QOSState *q, size_t bytes) >> {
diff --git a/tests/ahci-test.c b/tests/ahci-test.c index b1a785c..59d387c 100644 --- a/tests/ahci-test.c +++ b/tests/ahci-test.c @@ -71,32 +71,6 @@ static void string_bswap16(uint16_t *s, size_t bytes) } } -static void generate_pattern(void *buffer, size_t len, size_t cycle_len) -{ - int i, j; - unsigned char *tx = (unsigned char *)buffer; - unsigned char p; - size_t *sx; - - /* Write an indicative pattern that varies and is unique per-cycle */ - p = rand() % 256; - for (i = 0; i < len; i++) { - tx[i] = p++ % 256; - if (i % cycle_len == 0) { - p = rand() % 256; - } - } - - /* force uniqueness by writing an id per-cycle */ - for (i = 0; i < len / cycle_len; i++) { - j = i * cycle_len; - if (j + sizeof(*sx) <= len) { - sx = (size_t *)&tx[j]; - *sx = i; - } - } -} - /** * Verify that the transfer did not corrupt our state at all. */ diff --git a/tests/libqos/libqos.c b/tests/libqos/libqos.c index fce625b..8d7c5a9 100644 --- a/tests/libqos/libqos.c +++ b/tests/libqos/libqos.c @@ -212,3 +212,29 @@ void prepare_blkdebug_script(const char *debug_fn, const char *event) ret = fclose(debug_file); g_assert(ret == 0); } + +void generate_pattern(void *buffer, size_t len, size_t cycle_len) +{ + int i, j; + unsigned char *tx = (unsigned char *)buffer; + unsigned char p; + size_t *sx; + + /* Write an indicative pattern that varies and is unique per-cycle */ + p = rand() % 256; + for (i = 0; i < len; i++) { + tx[i] = p++ % 256; + if (i % cycle_len == 0) { + p = rand() % 256; + } + } + + /* force uniqueness by writing an id per-cycle */ + for (i = 0; i < len / cycle_len; i++) { + j = i * cycle_len; + if (j + sizeof(*sx) <= len) { + sx = (size_t *)&tx[j]; + *sx = i; + } + } +} diff --git a/tests/libqos/libqos.h b/tests/libqos/libqos.h index e1f14ea..492a651 100644 --- a/tests/libqos/libqos.h +++ b/tests/libqos/libqos.h @@ -24,6 +24,7 @@ void mkqcow2(const char *file, unsigned size_mb); void set_context(QOSState *s); void migrate(QOSState *from, QOSState *to, const char *uri); void prepare_blkdebug_script(const char *debug_fn, const char *event); +void generate_pattern(void *buffer, size_t len, size_t cycle_len); static inline uint64_t qmalloc(QOSState *q, size_t bytes) {
Share the pattern function for ide and ahci test. Signed-off-by: John Snow <jsnow@redhat.com> --- tests/ahci-test.c | 26 -------------------------- tests/libqos/libqos.c | 26 ++++++++++++++++++++++++++ tests/libqos/libqos.h | 1 + 3 files changed, 27 insertions(+), 26 deletions(-)