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