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