Slow while setting ACL on RAIDDZ2 40Tb HDD dataset


It is a holding 1.2million of images (and it will hold 80million in total) on a RAIDZ2 HDDs dataset (4x20Tb disks).

This morning I modified the ACLs in order to give permissions to a user.
Without realizing it would be veeery slow, I starting to test an nfs share poiting to that folder and because it didnt work because permissions I went again to modify the ACL to figure out what I had to adjust to make it work.

Now I see there are bunch of tasks pending. I started to change ACLs at 9.30am,
now it is 11.45 and still running. As you can see there are still bunch of setacl pending and it will take forever.

There is anyway to stop the runing and pending tasks filsystem.setacl?

Are you setting ACLs on the same datasets or separate ones? We set a global setacl lock in middleware to prevent users from clobbering same paths and to prevent overload. This could probably be relaxed to allow multiple ones on different datasets. If you’re recursing through millions of files it will potentially take a significant amount of time to complete since we have to write an ACL on every file and you’re probably iops constrained. The ACL setting application is written in C and using fts(3) + setxattr() so there’s really not any fat to trim there.

I would like to know if there is any way to remove them from the task queue.

I understand it is slow because a matter of IOPS, but since the number of recursive setacls queued is significant. Still not finished since this morning.
It is also synchronous, so until one setfacl task does not finishes another can not start.

Do you know if I can apply setfacl from the shell instead of using the web interface?
There is anything else to take in care when running it from the shell?


You could try a restart.