[PATCH] [WIP] Attempt to address flapping tests and file/directory mixups
Andrew Bartlett
abartlet at samba.org
Fri Jul 22 19:31:51 UTC 2016
On Fri, 2016-07-22 at 23:23 +1200, Andrew Bartlett wrote:
> On Thu, 2016-07-21 at 11:03 -0700, Jeremy Allison wrote:
> > Andrew, here's a more complete version that also
> > clears out stale xattr values on directory create
> > as well.
> >
> > Can you test this and let me know if it fixes
> > the issues with the flapping tests for you ?
>
> I don't think this helps. At least, I don't think the problem is
> what
> I thought it was, now I have created a proper test rig.
>
> I deliberately create a small, inode-restricted file system in /tmp/
> and remove the code in Samba3.pm that creates 30,000 plus files.
>
> I use this to create it, as you can see, it only has 1000 inodes, so
> re
> -use must happen.
>
> sudo umount st && mkfs.ext4 -N 1000 st-fs -E root_owner=500:500 &&
> sudo mount -o loop st-fs st
>
> In that, I can't ever create a file with wrong dos attributes. Even
> if
> I turn on posix in smbclient, even with a patch try and force it to
> be
> a posix_open in open.c, that I think skips the wipe of the dos
> attributes.
>
> Both hack patches are attached for your amusement.
>
> Here also for amusement are some of the commands I ran in a
> SELFTEST_TESTENV=fileserver make test
>
> for i in {1..1000}; do bin/smbclient //$SERVER/tmp
> -U$USERNAME%$PASSWORD -c "put /etc/passwd passwd$i; setmode passwd$i
> +h"; done
>
> rm -rf st/fileserver/share/passwd*
> tdbdump st/fileserver/lockdir/xattr.tdb | grep key| wc -l
> for i in {1..1000}; do bin/smbclient //$SERVER/tmp
> -U$USERNAME%$PASSWORD -c "posix;put /etc/passwd passwd$i"; done
> bin/smbclient //$SERVER/tmp -U$USERNAME%$PASSWORD -c ls
As I said, none of these tricks could reproduce the issue. But simply
touching 1000 files directly in the share directory does. That is what
brought me to this conclusion:
> I however did look at the smbclient_tarmode.pl script again, and it
> does crate files locally on the filesystem, not just via Samba.
>
> If a file or directory is ever removed in the environment without
> going
> via Samba, then the dev/inode may still be in the xattr.tdb, and so
> apply to a newly created file.
>
> The fix therefore is to create a new selftest environment that is
> only
> used for this test, so that the whole tdb is private to just this
> test,
> or just never create files behind smbd's back.
I think all the tests that use LOCAL_PATH are essentially at risk of
the same issue here.
> I still think the patch is correct, because relying on general
> -purpose
> Samba (rather than this module) also re-setting everything in an EA
> at
> open (when the OS already handles this in the real world) is silly.
> However, it still won't help smbclient_tar in my view.
>
> Andrew Bartlett
>
--
Andrew Bartlett http://samba.org/~abartlet/
Authentication Developer, Samba Team http://samba.org
Samba Developer, Catalyst IT http://catalyst.net.nz/services/samba
More information about the samba-technical
mailing list