On 06/29, Dan Williams wrote:
On Fri, Jun 23, 2017 at 7:17 PM, Vishal Verma
<vishal.l.verma(a)intel.com> wrote:
> With the BTT 2.0 update, a couple of minor updates to the unit tests are
> needed:
> test/libndctl: Update expected BTT sizes
> test/libndctl: in btt_autodetect, when wiping an old BTT, wipe the first
> two 4K pages instead of one.
>
> Cc: Dan Williams <dan.j.williams(a)intel.com>
> Signed-off-by: Vishal Verma <vishal.l.verma(a)intel.com>
> ---
> test/libndctl.c | 19 +++++++++++++------
> 1 file changed, 13 insertions(+), 6 deletions(-)
>
> diff --git a/test/libndctl.c b/test/libndctl.c
> index 24aff36..89c4c02 100644
> --- a/test/libndctl.c
> +++ b/test/libndctl.c
> @@ -994,16 +994,16 @@ static int check_btt_size(struct ndctl_btt *btt)
> int size_select, sect_select;
> unsigned long long expect_table[][2] = {
> [0] = {
> - [0] = 0x11b4400,
> - [1] = 0x8da2000,
> + [0] = 0x11b5400,
> + [1] = 0x8daa000,
> },
> [1] = {
> - [0] = 0x13b0400,
> - [1] = 0x9d82000,
> + [0] = 0x13b1400,
> + [1] = 0x9d8a000,
> },
> [2] = {
> - [0] = 0x1aa2600,
> - [1] = 0xd513000,
> + [0] = 0x1aa3600,
> + [1] = 0xd51b000,
I think we need to have different expectations for different BTT
versions. We should be able to check for v1.2 labels before picking
the expectation, or just have a new ndctl_test_attempt() gate on the
4.13 kernel for the new sizes.
I'll make the call under a ndctl_test_atttempt. All of nfit_test will
switch to 1.2 labels with the next release, so keeping support for 1.1
sizes seems pointless..
> },
> };
>
> @@ -1517,12 +1517,19 @@ static int check_btt_autodetect(struct ndctl_bus *bus,
> }
>
> memset(buf, 0, 4096);
> + /* Delete both the first and second 4K pages */
> rc = pwrite(fd, buf, 4096, 4096);
> if (rc < 4096) {
> rc = -ENXIO;
> fprintf(stderr, "%s: failed to overwrite btt on %s\n",
> devname, bdev);
> }
> + rc = pwrite(fd, buf, 4096, 0);
> + if (rc < 4096) {
> + rc = -ENXIO;
> + fprintf(stderr, "%s: failed to overwrite btt on %s\n",
> + devname, bdev);
> + }
How about just change the first one to: "rc = pwrite(fd, buf, 8192, 0);"?
The buf that is passed in is only 4096 bytes, so I just took the easy
way out and did it twice :)