Commit | Line | Data |
---|---|---|
f0ba4377 MCC |
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`; |