Test for handling of large ACLs with the limit and beyond
authorTim Shimmin <tes@sgi.com>
Wed, 8 May 2002 04:29:55 +0000 (04:29 +0000)
committerTim Shimmin <tes@sgi.com>
Wed, 8 May 2002 04:29:55 +0000 (04:29 +0000)
number of ACEs.

051
051.out

diff --git a/051 b/051
index afd4690c34a02ea2afe4cc795aeb538474ffe3fc..b0be08d41beed62e441da922f7bdfad8a0c4bc5e 100755 (executable)
--- a/051
+++ b/051
@@ -344,8 +344,66 @@ chacl m:user1:rwx file1
 chacl a::rwx file1
 set +x
 
+#-------------------------------------------------------
+
+echo ""
+echo "=== Test out large ACLs  ==="
+touch largeaclfile
+XFS_ACL_MAX_ENTRIES=25
+num_aces_pre=`expr $XFS_ACL_MAX_ENTRIES - 1`
+num_aces_post=`expr $XFS_ACL_MAX_ENTRIES + 1`
+
+_create_n_aces()
+{
+    n=`expr $1 - 4`
+    acl='u::rwx,g::rwx,o::rwx,m::rwx' # 4 ace acl start
+    while [ $n -ne 0 ]; do
+       acl="$acl,u:$n:rwx"
+       n=`expr $n - 1` 
+    done
+    echo $acl
+}
+
+_filter_aces()
+{
+    $AWK_PROG '
+       BEGIN {
+           FS=":"
+           while ( getline <"/etc/passwd" > 0 ) {
+               idlist[$1] = $3 
+           }
+       }
+       /^user/ { if ($2 in idlist) sub($2, idlist[$2])}
+       {print}
+    '
+}
+
+acl1=`_create_n_aces $num_aces_pre`
+acl2=`_create_n_aces $XFS_ACL_MAX_ENTRIES`
+acl3=`_create_n_aces $num_aces_post`
+acl4=`_create_n_aces 16` # Andreas G. libacl size for initial get
+acl5=`_create_n_aces 17` # 1 over A.G. libacl initial size
+
+
+echo "1 below xfs acl max"
+chacl $acl1 largeaclfile
+getfacl largeaclfile | _filter_aces
+
+echo "xfs acl max"
+chacl $acl2 largeaclfile
+getfacl largeaclfile | _filter_aces
+
+echo "1 above xfs acl max"
+chacl $acl3 largeaclfile
+getfacl largeaclfile | _filter_aces
 
+echo "use 16 aces"
+chacl $acl4 largeaclfile
+getfacl largeaclfile | _filter_aces
 
+echo "use 17 aces"
+chacl $acl5 largeaclfile
+getfacl largeaclfile | _filter_aces
 
 #-------------------------------------------------------
 
diff --git a/051.out b/051.out
index 2b5220f76decea5bc0141e88add65abfce05a0ae..8f9fd3717f3710da8b35b1e120e6e99f9e5dea5b 100644 (file)
--- a/051.out
+++ b/051.out
@@ -218,3 +218,138 @@ chacl: m:user1:rwx - Invalid argument
 + chacl a::rwx file1
 chacl: a::rwx - Invalid argument
 + set +x
+
+=== Test out large ACLs  ===
+1 below xfs acl max
+# file: largeaclfile
+# owner: root
+# group: root
+user::rwx
+user:1:rwx
+user:2:rwx
+user:3:rwx
+user:4:rwx
+user:5:rwx
+user:6:rwx
+user:7:rwx
+user:8:rwx
+user:9:rwx
+user:10:rwx
+user:11:rwx
+user:12:rwx
+user:13:rwx
+user:14:rwx
+user:15:rwx
+user:16:rwx
+user:17:rwx
+user:18:rwx
+user:19:rwx
+user:20:rwx
+group::rwx
+mask::rwx
+other::rwx
+
+xfs acl max
+# file: largeaclfile
+# owner: root
+# group: root
+user::rwx
+user:1:rwx
+user:2:rwx
+user:3:rwx
+user:4:rwx
+user:5:rwx
+user:6:rwx
+user:7:rwx
+user:8:rwx
+user:9:rwx
+user:10:rwx
+user:11:rwx
+user:12:rwx
+user:13:rwx
+user:14:rwx
+user:15:rwx
+user:16:rwx
+user:17:rwx
+user:18:rwx
+user:19:rwx
+user:20:rwx
+user:21:rwx
+group::rwx
+mask::rwx
+other::rwx
+
+1 above xfs acl max
+chacl: cannot set access acl on "largeaclfile": Invalid argument
+# file: largeaclfile
+# owner: root
+# group: root
+user::rwx
+user:1:rwx
+user:2:rwx
+user:3:rwx
+user:4:rwx
+user:5:rwx
+user:6:rwx
+user:7:rwx
+user:8:rwx
+user:9:rwx
+user:10:rwx
+user:11:rwx
+user:12:rwx
+user:13:rwx
+user:14:rwx
+user:15:rwx
+user:16:rwx
+user:17:rwx
+user:18:rwx
+user:19:rwx
+user:20:rwx
+user:21:rwx
+group::rwx
+mask::rwx
+other::rwx
+
+use 16 aces
+# file: largeaclfile
+# owner: root
+# group: root
+user::rwx
+user:1:rwx
+user:2:rwx
+user:3:rwx
+user:4:rwx
+user:5:rwx
+user:6:rwx
+user:7:rwx
+user:8:rwx
+user:9:rwx
+user:10:rwx
+user:11:rwx
+user:12:rwx
+group::rwx
+mask::rwx
+other::rwx
+
+use 17 aces
+# file: largeaclfile
+# owner: root
+# group: root
+user::rwx
+user:1:rwx
+user:2:rwx
+user:3:rwx
+user:4:rwx
+user:5:rwx
+user:6:rwx
+user:7:rwx
+user:8:rwx
+user:9:rwx
+user:10:rwx
+user:11:rwx
+user:12:rwx
+user:13:rwx
+group::rwx
+mask::rwx
+other::rwx
+