[Samba] RAW.WRITE - selftests fail, smbtorture passes

jan hrach forsmbx1 at gmail.com
Fri Apr 15 10:33:28 UTC 2016


Hello,

I'm compiling samba 4.2.2 from source on a Linux From Scratch (LFS) system.
Packages I have installed on the system are mixed from various versions of
LFS (7.6 through 7.9).

This is a 64-bit CPU running 32-bit OS:
# uname -a
Linux pjnas 4.4.4-asrockN3150-001-1_pj #1 SMP Fri Mar 4 22:40:03 CET 2016
i686 GNU/Linux

Samba compiles fine, but a few selftests fail. The ones I'm worried about
are samba3.raw.write(nt4_dc), samba3.raw.write(ad_dc) and
samba4.raw.write(ad_dc_ntvfs).

All off the raw.write selftests fail at "Trying 2^32 offset". Below is
output when running "make test TESTS=samba3.raw.write"

=== samba3.raw.write(nt4_dc) and samba3.raw.write(ad_dc) fail like this:

[32(151)/356 at 3m32s] samba3.raw.write(nt4_dc)
smbtorture 4.4.2
Using seed 1460584651
Testing RAW_WRITE_WRITE
Trying zero write
Trying small write
Trying large write
Trying bad fnum
Setting file as sparse
Trying 2^32 offset
UNEXPECTED(failure): samba3.raw.write.write(nt4_dc)
REASON: Exception: Exception: ../source4/torture/raw/write.c:197:
(../source4/torture/raw/write.c:197) Incorrect status
NT_STATUS_UNSUCCESSFUL - should be NT_STATUS_OK
Testing RAW_WRITE_WRITEUNLOCK
Trying zero write
Trying small write
Trying large write
Trying bad fnum
Setting file as sparse
Trying 2^32 offset
UNEXPECTED(failure): samba3.raw.write.write unlock(nt4_dc)
REASON: Exception: Exception: ../source4/torture/raw/write.c:524:
(../source4/torture/raw/write.c:524) Incorrect status NT_STATUS_DISK_FULL -
should be NT_STATUS_OK
Testing RAW_WRITE_WRITECLOSE
Trying zero write
Trying small write
Trying large write
Trying bad fnum
Setting file as sparse
Trying 2^32 offset
UNEXPECTED(failure): samba3.raw.write.write close(nt4_dc)
REASON: Exception: Exception: ../source4/torture/raw/write.c:676:
(../source4/torture/raw/write.c:676) Incorrect status NT_STATUS_DISK_FULL -
should be NT_STATUS_OK
dangerous not set - limiting range of test to 2^33
Testing RAW_WRITE_WRITEX
Trying zero write
Trying small write
Trying large write
Trying bad fnum
Testing wmode
Trying locked region
Setting file as sparse
Trying 2^32 offset
UNEXPECTED(failure): samba3.raw.write.writex(nt4_dc)
REASON: Exception: Exception: ../source4/torture/raw/write.c:356:
(../source4/torture/raw/write.c:356) Incorrect status NT_STATUS_DISK_FULL -
should be NT_STATUS_OK

=== samba4.raw.write(ad_dc_ntvfs) fails almost the same way, except for the
status, which is NT_STATUS_INVALID_PARAMETER in all 4 subtests:

UNEXPECTED(failure): samba4.raw.write.write(ad_dc_ntvfs)
REASON: Exception: Exception: ../source4/torture/raw/write.c:197:
(../source4/torture/raw/write.c:197) Incorrect status
NT_STATUS_INVALID_PARAMETER - should be NT_STATUS_OK

It looks like the tests are trying to exceed the 4GB file size. When I tune
the /source4/torture/raw/write.c so that the tests do not exceed >2GB< file
size, the tests pass:

       torture_comment(tctx, "Trying 2^32 offset\n");
        setup_buffer(buf, seed, maxsize);
        io.writeclose.in.file.fnum = fnum;
        io.writeclose.in.count = 4000;
        io.writeclose.in.offset = 0x6FFFFFFF - 2000;

I'm able to start the just compiled /samba-4.4.2/bin/smbd and connect to it
with /samba-4.4.2/bin/smbclient (both running on the same host) and
transfer a 5GB file to/from a smb share using the smbclient without any
issues.

Also, Running the just compiled smbd with the just compiled smbtorture
results in all raw.write tests to pass:

# cat /samba_server.conf
[global]
    workgroup = MYGROUP
    store dos attributes = yes
[kokos]
path = /hdd/kokos
writable = yes

/sources/samba-4.4.2/bin/smbd -S -s /samba_server.conf -d10 -F

pjnas [ /sources/samba-4.4.2 ]# /sources/samba-4.4.2/bin/smbtorture //
192.168.20.110/kokos -Upj%ko raw.write
smbtorture 4.4.2
Using seed 1460714348
time: 2016-04-15 11:59:08.387117
progress: 4
test: write
time: 2016-04-15 11:59:08.387932
Testing RAW_WRITE_WRITE
Trying zero write
Trying small write
Trying large write
Trying bad fnum
Setting file as sparse
Trying 2^32 offset
time: 2016-04-15 11:59:08.991509
success: write
.
.

Any idea why are the raw.write selftests failing? I guess there is a
parameter in the selftest's smbd server.conf that makes them to fail.

Do I need to worry about the compiled binaries in terms of raw.write
functionality?

Thanks,
Peter


More information about the samba mailing list