diff options
Diffstat (limited to 'Documentation/device-mapper/linear.rst')
-rw-r--r-- | Documentation/device-mapper/linear.rst | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/Documentation/device-mapper/linear.rst b/Documentation/device-mapper/linear.rst new file mode 100644 index 000000000000..9d17fc6e64a9 --- /dev/null +++ b/Documentation/device-mapper/linear.rst | |||
@@ -0,0 +1,63 @@ | |||
1 | ========= | ||
2 | dm-linear | ||
3 | ========= | ||
4 | |||
5 | Device-Mapper's "linear" target maps a linear range of the Device-Mapper | ||
6 | device onto a linear range of another device. This is the basic building | ||
7 | block of logical volume managers. | ||
8 | |||
9 | Parameters: <dev path> <offset> | ||
10 | <dev path>: | ||
11 | Full pathname to the underlying block-device, or a | ||
12 | "major:minor" device-number. | ||
13 | <offset>: | ||
14 | Starting sector within the device. | ||
15 | |||
16 | |||
17 | Example scripts | ||
18 | =============== | ||
19 | |||
20 | :: | ||
21 | |||
22 | #!/bin/sh | ||
23 | # Create an identity mapping for a device | ||
24 | echo "0 `blockdev --getsz $1` linear $1 0" | dmsetup create identity | ||
25 | |||
26 | :: | ||
27 | |||
28 | #!/bin/sh | ||
29 | # Join 2 devices together | ||
30 | size1=`blockdev --getsz $1` | ||
31 | size2=`blockdev --getsz $2` | ||
32 | echo "0 $size1 linear $1 0 | ||
33 | $size1 $size2 linear $2 0" | dmsetup create joined | ||
34 | |||
35 | :: | ||
36 | |||
37 | #!/usr/bin/perl -w | ||
38 | # Split a device into 4M chunks and then join them together in reverse order. | ||
39 | |||
40 | my $name = "reverse"; | ||
41 | my $extent_size = 4 * 1024 * 2; | ||
42 | my $dev = $ARGV[0]; | ||
43 | my $table = ""; | ||
44 | my $count = 0; | ||
45 | |||
46 | if (!defined($dev)) { | ||
47 | die("Please specify a device.\n"); | ||
48 | } | ||
49 | |||
50 | my $dev_size = `blockdev --getsz $dev`; | ||
51 | my $extents = int($dev_size / $extent_size) - | ||
52 | (($dev_size % $extent_size) ? 1 : 0); | ||
53 | |||
54 | while ($extents > 0) { | ||
55 | my $this_start = $count * $extent_size; | ||
56 | $extents--; | ||
57 | $count++; | ||
58 | my $this_offset = $extents * $extent_size; | ||
59 | |||
60 | $table .= "$this_start $extent_size linear $dev $this_offset\n"; | ||
61 | } | ||
62 | |||
63 | `echo \"$table\" | dmsetup create $name`; | ||