| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 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 | ]] |