On 07/17/2013 08:05 PM, [email protected] wrote:
> Hi!
>> Add support for xfs quota tests:
>>
>>   *Create a xfs block device
>>
>>   *Define HAVE_XFS_QUOTA to show if xfs quota is available
>>
>> Signed-off-by: DAN LI <[email protected]>
>> ---
>>  configure.ac        |  1 +
>>  m4/ltp-xfs_quota.m4 | 39 +++++++++++++++++++++++++++++++++++++
>>  runltp              | 56 
>> ++++++++++++++++++++++++++++++++++++++++++++++++++++-
>>  3 files changed, 95 insertions(+), 1 deletion(-)
>>  create mode 100644 m4/ltp-xfs_quota.m4
>>
>> diff --git a/configure.ac b/configure.ac
>> index f0fc6b0..1f95603 100644
>> --- a/configure.ac
>> +++ b/configure.ac
>> @@ -168,5 +168,6 @@ LTP_CHECK_ACL_SUPPORT
>>  LTP_CHECK_FS_IOC_FLAGS
>>  LTP_CHECK_MREMAP_FIXED
>>  LTP_CHECK_KERNEL_DEVEL
>> +LTP_CHECK_XFS_QUOTACTL
>>
>>  AC_OUTPUT
>> diff --git a/m4/ltp-xfs_quota.m4 b/m4/ltp-xfs_quota.m4
>> new file mode 100644
>> index 0000000..a17d4d9
>> --- /dev/null
>> +++ b/m4/ltp-xfs_quota.m4
>> @@ -0,0 +1,39 @@
>> +dnl
>> +dnl Copyright (c) 2013 Fujitsu Ltd.
>> +dnl Author: DAN LI <[email protected]>
>> +dnl
>> +dnl This program is free software;  you can redistribute it and/or modify
>> +dnl it under the terms of the GNU General Public License as published by
>> +dnl the Free Software Foundation; either version 2 of the License, or
>> +dnl (at your option) any later version.
>> +dnl
>> +dnl This program is distributed in the hope that it will be useful,
>> +dnl but WITHOUT ANY WARRANTY;  without even the implied warranty of
>> +dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See
>> +dnl the GNU General Public License for more details.
>> +dnl
>> +dnl You should have received a copy of the GNU General Public License
>> +dnl along with this program;  if not, write to the Free Software
>> +dnl Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 
>> 02110-1301 USA
>> +dnl
>> +
>> +dnl
>> +dnl LTP_CHECK_XFS_QUOTACTL
>> +dnl ----------------------------
>> +dnl
>> +AC_DEFUN([LTP_CHECK_XFS_QUOTACTL],[dnl
>> +    AC_LINK_IFELSE([AC_LANG_SOURCE([
>> +#include <xfs/xqm.h>
>> +#include <sys/quota.h>
>> +int main(void) {
>> +    struct fs_quota_stat qstat;
>> +    return quotactl(QCMD(Q_XGETQSTAT, USRQUOTA), (const char *) "/dev/null",
>> +                    geteuid(), (caddr_t) &qstat);
> 
> Why the (const char *) and (caddr_t) casts?
> 
>> +}])],[has_xfs_quota="yes"])
>> +
>> +if test "x$has_xfs_quota" = xyes; then
>> +    AC_DEFINE(HAVE_XFS_QUOTA,1,[Define to 1 if you have xfs quota])
>> +else
>> +    AC_MSG_WARN(No xfs quota support)
>> +fi
>> +])
>> diff --git a/runltp b/runltp
>> index 28e6bed..210a332 100755
>> --- a/runltp
>> +++ b/runltp
>> @@ -163,6 +163,7 @@ usage()
>>      -b DEVICE       Some tests require an unmounted block device
>>                      to run correctly.
>>      -B DEVICE_FS_TYPE The file system of test block devices.
>> +    -X XFS_DEVICE   Some tests require an unmounted xfs-format block device
>>
>>
>>      example: ${0##*/} -c 2 -i 2 -m 2,4,10240,1 -D 2,10,10240,1 -p -q  -l 
>> /tmp/result-log.$$ -o /tmp/result-output.$$ -C
>> /tmp/result-failed.$$ -d ${PWD}
>> @@ -211,7 +212,7 @@ main()
>>
>>      version_date=$(cat "$LTPROOT/Version")
>>
>> -    while getopts a:c:C:d:D:f:F:ehi:K:g:l:m:M:Nno:pqr:s:S:t:T:w:x:b:B: arg
>> +    while getopts a:c:C:d:D:f:F:ehi:K:g:l:m:M:Nno:pqr:s:S:t:T:w:x:b:B:X: arg
>>      do  case $arg in
>>          a)  EMAIL_TO=$OPTARG
>>              ALT_EMAIL_OUT=1;;
>> @@ -424,6 +425,7 @@ main()
>>              INSTANCES="-x $OPTARG";;
>>          b) DEVICE=$OPTARG;;
>>          B) DEVICE_FS_TYPE=$OPTARG;;
>> +        X) XFS_DEVICE=$OPTARG;;
>>          \?) usage;;
>>          esac
>>      done
>> @@ -679,6 +681,24 @@ main()
>>      }
>>      }
>>
>> +    if [ -n "$XFS_DEVICE" ]; then
>> +        sed -i "s|XFS_DEVICE|$XFS_DEVICE|"  ${TMP}/alltests
>> +        RC=$?
>> +    else
>> +        create_xfs_block
>> +        if [ $? -eq 0 ]; then
>> +            sed -i "s|XFS_DEVICE|$XFS_DEVICE|"  ${TMP}/alltests
>> +            RC=$?
>> +        else
>> +            echo "No xfs-format block device was specified on commandline."
>> +            echo "Block device could not be created using loopback device"
>> +            echo "Tests which require xfs block device are disabled."
>> +            echo "You can specify it with option -X"
>> +            sed -i "/XFS_DEVICE/d"  ${TMP}/alltests
>> +            RC=$?
>> +        fi
>> +    fi
>> +
>>      if [ -n "$DEVICE" ]; then
>>          sed -i "s|DEVICE|$DEVICE|"  ${TMP}/alltests
>>          RC=$?
>> @@ -1019,9 +1039,43 @@ create_block()
>>      fi
>>  }
>>
>> +create_xfs_block()
>> +{
>> +    #create a block device with xfs filesystem.
>> +    dd if=/dev/zero of=${TMP}/xfstest.img bs=1kB count=20480
>> +    if [ $? -ne 0 ]; then
>> +        echo "Failed to create loopback device image, please check disk 
>> space and re-run"
>> +        return 1
>> +    else
>> +        ##search for an unused loop dev
>> +        LOOP_DEV_XFS=$(losetup -f)
>> +        if [ $? -ne 0 ]; then
>> +            echo "no unused loop device is found"
>> +            return 1
>> +        else
>> +            ##attach the created file to loop dev.
>> +            losetup $LOOP_DEV_XFS ${TMP}/xfstest.img
>> +            if [ $? -ne 0 ]; then
>> +                echo "losetup failed to create block device"
>> +                return 1
>> +            else
>> +                mkfs.xfs $LOOP_DEV_XFS
>> +                if [ $? -ne 0 ]; then
>> +                    echo "creating an xfs block device failed."
>> +                    return 1
>> +                fi
>> +
>> +                XFS_DEVICE=$LOOP_DEV_XFS
>> +                return 0
>> +            fi
>> +        fi
>> +    fi
>> +}
> 
> 
> Now this is getting a bit out of hand.
> 
> What about we change the tests (we have) to take only device to work
> with and let each test prepare the filesystem it needs? This will
> simplify the runltp script to only prepare loop device.
> 
> If we agree on that I can write the tst_mkfs() function and convert
> current usages.

Agree.

Regards,
DAN LI
> 
> Or has anbody better idea?
> 



------------------------------------------------------------------------------
See everything from the browser to the database with AppDynamics
Get end-to-end visibility with application monitoring from AppDynamics
Isolate bottlenecks and diagnose root cause in seconds.
Start your free trial of AppDynamics Pro today!
http://pubads.g.doubleclick.net/gampad/clk?id=48808831&iu=/4140/ostg.clktrk
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list

Reply via email to