| #! /bin/bash |
| # SPDX-License-Identifier: GPL-2.0 |
| # Copyright (c) 2000-2002 Silicon Graphics, Inc. All Rights Reserved. |
| # |
| # FS QA Test No. 379 |
| # |
| # Check behavior of chown with both user and group quota enabled, |
| # and changing both user and group together via chown(2). |
| # |
| . ./common/preamble |
| _begin_fstest quota auto quick |
| |
| # Import common functions. |
| . ./common/filter |
| . ./common/quota |
| |
| # Override the default cleanup function. |
| _cleanup() |
| { |
| _scratch_unmount 2>/dev/null |
| rm -f $tmp.* |
| } |
| |
| # real QA test starts here |
| _supported_fs generic |
| |
| cp /dev/null $seqres.full |
| chmod ugo+rwx $seqres.full |
| |
| _require_scratch |
| _require_quota |
| _require_xfs_quota_foreign |
| |
| _filter_stat() |
| { |
| sed " |
| /^Access:/d; |
| /^Modify:/d; |
| /^Change:/d; |
| s/Device: *[0-9][0-9]*,[0-9][0-9]*/Device: <DEVICE>/; |
| s/Inode: *[0-9][0-9]*/Inode: <INODE>/; |
| s,$SCRATCH_MNT,<MOUNT>,; |
| " | tr -s ' ' |
| } |
| |
| _exercise() |
| { |
| _scratch_mkfs >/dev/null 2>&1 |
| _qmount |
| |
| umask 022 |
| touch $SCRATCH_MNT/testfile |
| if $here/src/feature -c $SCRATCH_MNT/testfile; then |
| : |
| else |
| _notrun "Installed fileutils doesn't support 32 bit uids/gids" |
| fi |
| |
| chown 12345 $SCRATCH_MNT/testfile |
| chgrp 54321 $SCRATCH_MNT/testfile |
| $here/src/lstat64 $SCRATCH_MNT/testfile | _filter_stat |
| |
| chown 34567 $SCRATCH_MNT/testfile |
| chgrp 76543 $SCRATCH_MNT/testfile |
| $here/src/lstat64 $SCRATCH_MNT/testfile | _filter_stat |
| |
| chown 56789 $SCRATCH_MNT/testfile |
| chgrp 98765 $SCRATCH_MNT/testfile |
| $here/src/lstat64 $SCRATCH_MNT/testfile | _filter_stat |
| |
| # finally give back to original owners |
| chown 12345 $SCRATCH_MNT/testfile |
| chgrp 54321 $SCRATCH_MNT/testfile |
| $here/src/lstat64 $SCRATCH_MNT/testfile | _filter_stat |
| |
| echo |
| _scratch_unmount 2>/dev/null |
| } |
| |
| _scratch_mkfs >> $seqres.full 2>&1 || _fail "mkfs failed!" |
| |
| _qmount_option "usrquota,grpquota" |
| _qmount |
| if $here/src/feature -G $SCRATCH_DEV ; then |
| : |
| else |
| _notrun "No quota support at mount time" |
| fi |
| _scratch_unmount 2>/dev/null |
| |
| _qmount_option "rw" # no quota options |
| echo "*** Default mount options" |
| _exercise |
| |
| _qmount_option "usrquota" |
| echo "*** User quota mount option" |
| _exercise |
| |
| _qmount_option "grpquota" |
| echo "*** Group quota mount option" |
| _exercise |
| |
| _qmount_option "usrquota,grpquota" |
| echo "*** User and Group quota mount options" |
| _exercise |
| |
| # success, all done |
| status=0 |
| exit |