]>
Commit | Line | Data |
---|---|---|
6bb24f4d BB |
1 | #!/bin/ksh -p |
2 | # | |
3 | # CDDL HEADER START | |
4 | # | |
5 | # The contents of this file are subject to the terms of the | |
6 | # Common Development and Distribution License (the "License"). | |
7 | # You may not use this file except in compliance with the License. | |
8 | # | |
9 | # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE | |
10 | # or http://www.opensolaris.org/os/licensing. | |
11 | # See the License for the specific language governing permissions | |
12 | # and limitations under the License. | |
13 | # | |
14 | # When distributing Covered Code, include this CDDL HEADER in each | |
15 | # file and include the License file at usr/src/OPENSOLARIS.LICENSE. | |
16 | # If applicable, add the following below this CDDL HEADER, with the | |
17 | # fields enclosed by brackets "[]" replaced with your own identifying | |
18 | # information: Portions Copyright [yyyy] [name of copyright owner] | |
19 | # | |
20 | # CDDL HEADER END | |
21 | # | |
22 | ||
23 | # | |
24 | # Copyright 2008 Sun Microsystems, Inc. All rights reserved. | |
25 | # Use is subject to license terms. | |
26 | # | |
27 | ||
28 | # | |
c1d9abf9 | 29 | # Copyright (c) 2013, 2016 by Delphix. All rights reserved. |
6bb24f4d BB |
30 | # |
31 | ||
32 | . $STF_SUITE/include/libtest.shlib | |
33 | . $STF_SUITE/tests/functional/zvol/zvol_common.shlib | |
34 | ||
35 | # | |
36 | # DESCRIPTION: | |
37 | # swaplow + swaplen must be less than or equal to the volume size. | |
38 | # | |
39 | # STRATEGY: | |
40 | # 1. Get test system page size and test volume size. | |
41 | # 2. Random get swaplow and swaplen. | |
42 | # 3. Verify swap -a should succeed when swaplow + swaplen <= volume size. | |
43 | # | |
44 | ||
45 | verify_runnable "global" | |
46 | ||
7839c4b5 MM |
47 | if is_linux || is_freebsd; then |
48 | log_unsupported "swaplow + swaplen unsupported Linux/FreeBSD options" | |
8c54ddd3 BB |
49 | fi |
50 | ||
6bb24f4d BB |
51 | assertion="Verify the sum of swaplow and swaplen is less or equal to volsize" |
52 | log_assert $assertion | |
53 | ||
54 | typeset vol=$TESTPOOL/$TESTVOL | |
55 | typeset swapname="${ZVOL_DEVDIR}/$vol" | |
56 | typeset -i pageblocks volblocks max_swaplow | |
57 | # | |
58 | # Both swaplow and swaplen are the desired length of | |
59 | # the swap area in 512-byte blocks. | |
60 | # | |
c1d9abf9 | 61 | ((pageblocks = $(getconf PAGESIZE) / 512)) |
6bb24f4d BB |
62 | ((volblocks = $(get_prop volsize $vol) / 512)) |
63 | ((max_swaplow = (volblocks - (pageblocks * 2)))) | |
64 | ||
65 | for i in {0..10}; do | |
c1d9abf9 | 66 | swaplow=$(shuf -n 1 -i ${pageblocks}-${max_swaplow}) |
6bb24f4d | 67 | ((maxlen = max_swaplow - swaplow)) |
c1d9abf9 JWK |
68 | swaplen=$(shuf -n 1 -i ${pageblocks}-${maxlen}) |
69 | log_must swap -a $swapname $swaplow $swaplen | |
70 | log_must swap -d $swapname $swaplow | |
6bb24f4d BB |
71 | done |
72 | ||
73 | log_pass $assertion |