acl handling on delete (performance problem)

Esh, Andrew Andrew_Esh at adaptec.com
Mon Jul 26 13:19:16 GMT 2004


Has an ACL cache been implemented in Jeremy's version of ACL support?
I know Matt Zinkevicius had one in his ACL code, and it drastically
improved performance in situations where the folder path was being
traversed during a permissions inheritance check.

-----Original Message-----
From: samba-technical-bounces+andrew_esh=adaptec.com at lists.samba.org
[mailto:samba-technical-bounces+andrew_esh=adaptec.com at lists.samba.org]O
n Behalf Of Andrew Bartlett
Sent: Sunday, July 25, 2004 7:15 PM
To: Jure Peèar
Cc: samba-technical at lists.samba.org
Subject: Re: acl handling on delete (performance problem)


On Mon, 2004-07-26 at 02:15, Jure Peèar wrote:
> Hi all,
> 
> Since i didn't receive any replies on samba list, i'm posting again here.
> 
> I'm debugging a performance problem for a client. Needless to say, the
> organisation of their data is such that this problem is really annoying. 
> Here's the situation:
> 
> Samba 3.0.x PDC in a mixed 9x/nt/xp environment, using acls. When trying to
> delete a large number of folders from a folder, the 'preparing to delete'
> stage takes about half hour.
> 
> It's simple to repeat: set up samba pdc, join an xp client into the domain,
> map a share with some 4000 folders and try to delete them.
> 
> Strace of a smbd proccess in the 'preparing to delete' stage looks like
> this:
> 
> stat("/mnt/test/test/0220", {st_mode=S_IFDIR|0755, st_size=6, ...}) = 0
> gettimeofday({1090703949, 903367}, NULL) = 0
> stat("/mnt/test/test/0220", {st_mode=S_IFDIR|0755, st_size=6, ...}) = 0
> getxattr("/mnt/test/test/0220", "system.posix_acl_access", 0x11fffe940, 132)
> = -1 ENODATA (No data available)
> stat("/mnt/test/test/0220", {st_mode=S_IFDIR|0755, st_size=6, ...}) = 0
> getxattr("/mnt/test/test/0220", "system.posix_acl_default", 0x11fffe940,
> 132) = -1 ENODATA (No data available)
> stat("/mnt/test/test/0220", {st_mode=S_IFDIR|0755, st_size=6, ...}) = 0
> getxattr("/mnt/test/test/0220", "user.SAMBA_PAI", 0x1207f0aa0, 1024) = -1
> ENODATA (No data available)

So, what does the wire look like?  An ethereal trace would tell us if
the client was doing the lookups, or Samba is doing it on it's own
(which I doubt).

A hacked workaround might be 'nt act support = no' in your smb.conf.

Andrew Bartlett

-- 
Andrew Bartlett                                 abartlet at samba.org
Authentication Developer, Samba Team            http://samba.org
Student Network Administrator, Hawker College   abartlet at hawkerc.net


More information about the samba-technical mailing list