Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

smbtorture failure - smb2.rw.invalid #192

Open
spuiuk opened this issue May 1, 2022 · 5 comments
Open

smbtorture failure - smb2.rw.invalid #192

spuiuk opened this issue May 1, 2022 · 5 comments

Comments

@spuiuk
Copy link
Collaborator

spuiuk commented May 1, 2022

When testing against the smb-operator samba server using a rook supplied cephfs pvc, we see a failure when running the smb2.rw.invalid test.

[root@smbclient samba-integration]# /bin/smbtorture --fullname --target=samba3 --user=sambauser%samba //10.244.2.14/smbshare3  smb2.rw.invalid
smbtorture 4.15.5
Using seed 1651410917
time: 2022-05-01 13:15:17.325545
test: smb2.rw.invalid
time: 2022-05-01 13:15:17.327756
dos charset 'CP850' unavailable - using ASCII
time: 2022-05-01 13:15:17.444662
failure: smb2.rw.invalid [
../../source4/torture/smb2/read_write.c:331: status was NT_STATUS_DISK_FULL, expected NT_STATUS_OK: Incorrect status
]

The part of the code with the failure is at

        w.in.file.handle = h;    
        w.in.offset = 0xfffffff0000 - 1; /* MAXFILESIZE - 1 */
        w.in.data.data = buf;
        w.in.data.length = 1;
        status = smb2_write(tree, &w);
        if (TARGET_IS_SAMBA3(torture) || TARGET_IS_SAMBA4(torture)) {
                CHECK_STATUS(status, NT_STATUS_OK);
                CHECK_VALUE(w.out.nwritten, 1);
        } else {
                CHECK_STATUS(status, NT_STATUS_DISK_FULL);
        }

This is not seen with an ext4 underlying filesystem.

Versions:
samba-4.15.6-0.fc35.x86_64

mount point:
10.111.173.90:6789,10.110.224.62:6789,10.101.104.103:6789:/volumes/csi/csi-vol-0cb59f87-c54e-11ec-ad3d-1e1dd7acb57d/ae264282-34b6-4255-a25c-6d8f60d9fc5e /mnt/dc189f61-d413-4b76-bb99-4b86beb30c0a ceph rw,relatime,name=csi-cephfs-node,secret=,acl,mds_namespace=myfs 0 0

@spuiuk
Copy link
Collaborator Author

spuiuk commented May 1, 2022

Notes:

To create a new share to test on the operator:

[root@smbshare3-0 /]# mkdir /share/
mkdir: cannot create directory ‘/share/’: File exists
[root@smbshare3-0 /]# chmod 777 /share
[root@smbshare3-0 /]# net conf addshare share /share writeable=y 
[root@smbshare3-0 /]# net conf list
[global]
	disable spoolss = yes
	fileid:algorithm = fsid
	load printers = no
	printcap name = /dev/null
	printing = bsd
	smb ports = 445
	vfs objects = fileid
	netbios name = smbshare3

[smbshare3]
	path = /mnt/dc189f61-d413-4b76-bb99-4b86beb30c0a
	read only = no

[share]
	path = /share
	guest ok = no
	read only = no

@spuiuk
Copy link
Collaborator Author

spuiuk commented May 1, 2022

Reproducer:

#include <sys/stat.h>
#include <fcntl.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <errno.h>
#include <unistd.h>

int main( int argc, char **argv )
{
        int fd;

        if( argc < 2 ){
                fprintf(stderr, "Usage %s <filename>\n\n",argv[0]);
                exit(1);
        }

        if((fd = open( argv[1], O_CREAT| O_RDWR| O_EXCL, 0777)) == -1) {
                fprintf(stderr,"Error opening file:%d: %s\n", errno, strerror(errno));
                exit(2);
        }

	if(lseek(fd, 0xfffffff0000 - 1, SEEK_SET) == -1) {
                fprintf(stderr,"Error seeking offset:%d: %s\n", errno, strerror(errno));
                exit(2);
        }
        if(write(fd, "a", 1)) {
                fprintf(stderr,"Error writing:%d: %s\n", errno, strerror(errno));
                exit(2);
        }

        fprintf(stderr, "    -- Done\n");

	return 0;
}

On the container samba within the samba-operator

First with the cephfs share

[root@smbshare3-0 /]# grep /mnt /proc/mounts
10.111.173.90:6789,10.110.224.62:6789,10.101.104.103:6789:/volumes/csi/csi-vol-0cb59f87-c54e-11ec-ad3d-1e1dd7acb57d/ae264282-34b6-4255-a25c-6d8f60d9fc5e /mnt/dc189f61-d413-4b76-bb99-4b86beb30c0a ceph rw,relatime,name=csi-cephfs-node,secret=<hidden>,acl,mds_namespace=myfs 0 0
[root@smbshare3-0 /]# /tmp/write_test /mnt/dc189f61-d413-4b76-bb99-4b86beb30c0a/test
Error seeking offset:22: Invalid argument

Then on /tmp

[root@smbshare3-0 /]# /tmp/write_test /tmp/test
    -- Done
[root@smbshare3-0 /]# ls -lh /tmp/test
-rwxr-xr-x 1 root root 16T May  1 13:51 /tmp/test

@spuiuk
Copy link
Collaborator Author

spuiuk commented May 1, 2022

Reported for cephfs at
https://tracker.ceph.com/issues/55510

@spuiuk spuiuk changed the title smbtorture failure smbtorture failure - smb2.rw.invalid May 1, 2022
@obnoxxx
Copy link
Collaborator

obnoxxx commented Jul 18, 2023

@spuiuk wrote:

https://tracker.ceph.com/issues/55510

there was a comment this is a limitation imposed by the ceph MDS by Jeff in the tracker and a suggested workaround. Not sure how applicable it is since it seems to involves a configuration change for the ceph setup ...

@spuiuk
Copy link
Collaborator Author

spuiuk commented Jul 19, 2023

Yes. We either need to set this using the cephtool container or setup flapping.cephfs to ignore this for cephfs.
We are sure to hit more such issues once we start testing cephfs with sit-test-cases.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants