You are not logged in.

#1 2009-07-10 15:31:06

mheagney
Member
Registered: 2009-07-10
Posts: 2

Multipath-tools PKGBUILD

Hello,
I'm a long time user of archlinux, but a first time poster to the forums, and a first time PKGBUILDer.

I've read the ABS documents and I believe I've followed the guide pretty well for my first donation to AUR.

I've created a PKGBUILD for multipath-tools for users that use archlinux on SAN based servers.  Please take a look, make suggestions and hopefully we can get this in AUR for everyone to use.

Thanks,
Matt

PKGBUILD

# Contributor: Matt Heagney <matt@heagney.com>
pkgname=multipath-tools
pkgver=0.4.8
pkgrel=1
pkgdesc="Multipath Tools For Linux"
arch=(i686)
url="http://christophe.varoqui.free.fr/"
license=('GPL')
depends=(libaio)
makedepends=()
provides=()
conflicts=()
replaces=()
backup=('etc/multipath.conf', 'etc/multipath.conf.annotated')
install=
source=(http://christophe.varoqui.free.fr/multipath-tools/$pkgname-$pkgver.tar.bz2
        multipath.conf
    multipath.conf.annotated)
noextract=()
md5sums=('3563b863b408d07c46929b6e8c2c248c'
         'd0fb11398cc628c7997111efdc5d52e5'
     '5a93f993ec05fc99094d5139aabd3925')


build() {
      cd "$srcdir/$pkgname-$pkgver"

        ./configure --prefix=/usr
          make || return 1
            make DESTDIR="$pkgdir/" install

        install -D -m 644 ${startdir}/multipath.conf ${pkgdir}/etc/multipath.conf
        install -D -m 644 ${startdir}/multipath.conf.annotated ${pkgdir}/etc/multipath.conf.annotated
}

multipath.conf

#
# Very Basic Multipath Configuration File
#

defaults {
    getuid_callout"/lib/udev/scsi_id -g -u -d /dev/%n"
}

multipath.conf.annotated

##
## This is a template multipath-tools configuration file
## Uncomment the lines relevent to your environment
##
#
##
## name  : defaults
## desc  : multipath-tools default settings
##
#defaults {
#    #
#    # name    : udev_dir
#    # desc    : directory where udev creates its device nodes
#    # default : /dev
#    #
#    udev_dir    /dev
#
#    #
#    # name    : polling_interval
#    # scope   : multipathd
#    # desc    : interval between two path checks in seconds
#    # default : 5
#    #
#    polling_interval 10
#
#    #
#    # name    : selector
#    # scope   : multipath
#    # desc    : the default path selector algorithm to use
#    #           these algorithms are offered by the kernel multipath target
#    # values  : "round-robin 0"
#    # default : "round-robin 0"
#    #
#    selector    "round-robin 0"
#
#    #
#    # name    : path_grouping_policy
#    # scope   : multipath
#    # desc    : the default path grouping policy to apply to unspecified
#    #           multipaths
#    # default : multibus
#    #
#    path_grouping_policy    multibus
#
#    #
#    # name    : getuid_callout
#    # scope   : multipath
#    # desc    : the default program and args to callout to obtain a unique 
#    #           path identifier. Absolute path required
#    # default : /lib/udev/scsi_id -g -u -s
#    #
#    getuid_callout    "/lib/udev/scsi_id -g -u -s /block/%n"
#
#    #
#    # name    : prio_callout
#    # scope   : multipath
#    # desc    : the default program and args to callout to obtain a path 
#    #           priority value. The ALUA bits in SPC-3 provide an
#    #           exploitable prio value for example. "none" is a valid value
#    # default : (null)
#    #
#    #prio_callout    "/bin/true"
#
#    #
#    # name    : path_checker
#    # scope   : multipath & multipathd
#    # desc    : the default method used to determine the paths' state
#    # values  : readsector0|tur|emc_clariion|hp_sw|directio
#    # default : directio
#    #
#    #path_checker    directio
#
#    #
#    # name    : rr_min_io
#    # scope   : multipath
#    # desc    : the number of IO to route to a path before switching
#    #           to the next in the same path group
#    # default : 1000
#    #
#    rr_min_io    100
#
#    #
#    # name    : rr_weight
#    # scope   : multipath
#    # desc    : if set to priorities the multipath configurator will assign
#    #        path weights as "path prio * rr_min_io"
#    # values  : priorities|uniform
#    # default : uniform
#    #
#    rr_weight    priorities
#
#    #
#    # name    : failback
#    # scope   : multipathd
#    # desc    : tell the daemon to manage path group failback, or not to.
#    #        0 means immediate failback, values >0 means deffered failback
#    #        expressed in seconds.
#    # values  : manual|immediate|n > 0
#    # default : immediate
#    #
#    failback    manual
#
#    #
#    # name    : no_path_retry
#    # scope   : multipath & multipathd
#    # desc    : tell the number of retries until disable queueing, or
#    #           "fail" means immediate failure (no queueing),
#    #           "queue" means never stop queueing
#    # values  : queue|fail|n (>0)
#    # default : (null)
#    #
#    #no_path_retry  queue
#
#    #
#    # name    : user_friendly_names
#    # scope   : multipath
#    # desc    : If set to "yes", using the bindings file
#    #           /var/lib/multipath/bindings to assign a persistent and
#    #           unique alias to the multipath, in the form of mpath<n>.
#    #           If set to "no" use the WWID as the alias. In either case
#    #           this be will be overriden by any specific aliases in this
#    #           file.
#    # values  : yes|no
#    # default : no
#    user_friendly_names no
#
#}
#    
##
## name    : blacklist
## scope   : multipath & multipathd
## desc    : list of device names to discard as not multipath candidates
## default : cciss, fd, hd, md, dm, sr, scd, st, ram, raw, loop
##
#blacklist {
#       wwid 26353900f02796769
#    devnode "^(ram|raw|loop|fd|md|dm-|sr|scd|st)[0-9]*"
#    devnode "^hd[a-z][[0-9]*]"
#    devnode "^cciss!c[0-9]d[0-9]*[p[0-9]*]"
#       device {
#               vendor DEC.*
#               product MSA[15]00
#       }
#}
##
## name    : blacklist_exceptions
## scope   : multipath & multipathd
## desc    : list of device names to be treated as multipath candidates
##           even if they are on the blacklist.
##           Note: blacklist exceptions are only valid in the same class.
##           It is not possible to blacklist devices using the devnode keyword
##           and to exclude some devices of them using the wwid keyword.
## default : -
##
#blacklist_exceptions {
#       devnode "^dasd[c-d]+[0-9]*"
#       wwid    "IBM.75000000092461.4d00.34"
#       wwid    "IBM.75000000092461.4d00.35"
#       wwid    "IBM.75000000092461.4d00.36"
#}
#
##
## name    : multipaths
## scope   : multipath & multipathd
## desc    : list of multipaths finest-grained settings
##
#multipaths {
#    #
#    # name  : multipath
#    # scope : multipath & multipathd
#    # desc  : container for settings that apply to one specific multipath
#    #
#    multipath {
#        #
#        # name  : wwid
#        # scope : multipath & multipathd
#        # desc  : index of the container
#        #
#        wwid            3600508b4000156d700012000000b0000
#
#        #
#        # name    : alias
#        # scope   : multipath
#        # desc    : symbolic name for the multipath
#        #
#        alias            yellow
#
#        #
#        # name    : path_grouping_policy
#        # scope   : multipath
#        # desc    : path grouping policy to apply to this multipath
#        # values  : failover, multibus, group_by_serial
#        # default : failover
#        #
#        path_grouping_policy    multibus
#
#        #
#        # name    : path_checker
#        # scope   : multipathd
#        # desc    : path checking alorithm to use to check path state
#        # values  : readsector0|tur|emc_clariion|hp_sw|directio
#        # default : directio
#        #
#        # path_checker        directio
#        
#        #
#        # name    : path_selector
#        # desc    : the path selector algorithm to use for this mpath
#        #           these algo are offered by the kernel mpath target
#        # values  : "round-robin 0"
#        # default : "round-robin 0"
#        #
#        path_selector        "round-robin 0"
#
#        #
#        # name    : failback
#        # scope   : multipathd
#        # desc    : tell the daemon to manage path group failback, or not to.
#        #        0 means immediate failback, values >0 means deffered failback
#        #        expressed in seconds.
#        # values  : manual|immediate|n > 0
#        # default : immediate
#        #
#        failback        manual
#
#        #
#        # name    : no_path_retry
#        # scope   : multipath & multipathd
#        # desc    : tell the number of retries until disable queueing, or
#        #           "fail" means immediate failure (no queueing),
#        #           "queue" means never stop queueing
#        # values  : queue|fail|n (>0)
#        # default : (null)
#        #
#        #no_path_retry  queue
#
#        #
#        # name    : rr_min_io
#        # scope   : multipath
#        # desc    : the number of IO to route to a path before switching
#        #           to the next in the same path group
#        # default : 1000
#        #
#        rr_min_io    100
#    }
#    multipath {
#        wwid    1DEC_____321816758474
#        alias    red
#        rr_weight        priorities
#    }
#}
#
##
## name  : devices
## scope : multipath & multipathd
## desc  : list of per storage controller settings
##      overrides default settings (device_maps block)
##         overriden by per multipath settings (multipaths block)
##
#devices {
#    #
#    # name  : device
#    # scope : multipath & multipathd
#    # desc  : settings for this specific storage controller
#    #
#    device {
#        #
#        # name  : vendor, product
#        # scope : multipath & multipathd
#        # desc  : index for the block
#        #
#        vendor            "COMPAQ  "
#        product            "HSV110 (C)COMPAQ"
#
#        #
#        # name    : path_grouping_policy
#        # scope   : multipath
#        # desc    : path grouping policy to apply to multipath hosted
#        #           by this storage controller
#        # values  : failover        = 1 path per priority group
#        #           multibus        = all valid paths in 1 priority
#        #                             group
#        #           group_by_serial = 1 priority group per detected
#        #                             serial number
#        # default : failover
#        #
#        path_grouping_policy    multibus
#
#        #
#        # name    : getuid_callout
#        # scope   : multipath
#        # desc    : the program and args to callout to obtain a unique 
#        #           path identifier. Absolute path required
#        # default : /lib/udev/scsi_id -g -u -s
#        #
#        getuid_callout          "/lib/udev/scsi_id -g -u -s /block/%n"
#
#        #
#        # name    : prio_callout
#        # scope   : multipath
#        # desc    : the program and args to callout to obtain a path 
#        #           weight. Weights are summed for each path group to
#        #        determine the next PG to use case of failure.
#        #        "none" is a valid value.
#        # default : no callout, all paths equals
#        #
#        prio_callout          "/sbin/mpath_prio_balance_units %d"
#
#        #
#        # name    : path_checker
#        # scope   : multipathd
#        # desc    : path checking alorithm to use to check path state
#        # values  : readsector0|tur|emc_clariion|hp_sw|directio
#        # default : directio
#        #
#        path_checker        directio
#
#        #
#        # name    : path_selector
#        # desc    : the path selector algorithm to use for this mpath
#        #           these algo are offered by the kernel mpath target
#        # values  : "round-robin 0"
#        # default : "round-robin 0"
#        #
#        path_selector        "round-robin 0"
#
#        #
#        # name    : failback
#        # scope   : multipathd
#        # desc    : tell the daemon to manage path group failback, or not to.
#        #        0 means immediate failback, values >0 means deffered failback
#        #        expressed in seconds.
#        # values  : manual|immediate|n > 0
#        # default : immediate
#        #
#        failback        30
#
#        #
#        # name    : rr_min_io
#        # scope   : multipath
#        # desc    : the number of IO to route to a path before switching
#        #           to the next in the same path group
#        # default : 1000
#        #
#        rr_min_io    100
#
#        #
#        # name    : product_blacklist
#        # scope   : multipath & multipathd
#        # desc    : product strings to blacklist for this vendor
#        # default : none
#        #
#        product_blacklist    LUN_Z
#    }
#    device {
#        vendor            "COMPAQ  "
#        product            "MSA1000         "
#        path_grouping_policy    multibus
#        path_checker        tur
#        rr_weight        priorities
#    }
#}

Offline

#2 2009-07-10 15:37:00

djszapi
Member
From: Cambridge, United Kingdom
Registered: 2009-06-14
Posts: 1,439
Website

Re: Multipath-tools PKGBUILD

# Maintainer: Matt Heagney <matt at heagney dontspamme com>
pkgname=multipath-tools
pkgver=0.4.8
pkgrel=1
pkgdesc="Multipath Tools For Linux"
arch=(i686)
url="http://christophe.varoqui.free.fr/"
license=('GPL')
depends=(libaio)
backup=('etc/multipath.conf', 'etc/multipath.conf.annotated')
source=(http://christophe.varoqui.free.fr/${pkgname}/$pkgname-$pkgver.tar.bz2
        multipath.conf
    multipath.conf.annotated)
md5sums=('3563b863b408d07c46929b6e8c2c248c'
         'd0fb11398cc628c7997111efdc5d52e5'
     '5a93f993ec05fc99094d5139aabd3925')


build() {
      cd "$srcdir/$pkgname-$pkgver"
        ./configure --prefix=/usr
          make || return 1
            make DESTDIR="$pkgdir/" install
        install -D -m 644 ${startdir}/multipath.conf ${pkgdir}/etc/multipath.conf
        install -D -m 644 ${startdir}/multipath.conf.annotated ${pkgdir}/etc/multipath.conf.annotated
}

Offline

#3 2009-07-10 17:52:24

mheagney
Member
Registered: 2009-07-10
Posts: 2

Re: Multipath-tools PKGBUILD

Ack! I forgot the /etc/rc.d/multipathd startup script.

PKGBUILD

# Contributor: Matt Heagney <matt@heagney.com>
pkgname=multipath-tools
pkgver=0.4.8
pkgrel=2
pkgdesc="Multipath Tools For Linux"
arch=(i686)
url="http://christophe.varoqui.free.fr/"
license=('GPL')
depends=(libaio)
makedepends=()
provides=()
conflicts=()
replaces=()
backup=('etc/multipath.conf', 'etc/multipath.conf.annotated', 'etc/rc.d/multipathd' )
install=
source=(http://christophe.varoqui.free.fr/multipath-tools/$pkgname-$pkgver.tar.bz2
        multipath.conf
    multipath.conf.annotated
    multipathd)
noextract=()

md5sums=('3563b863b408d07c46929b6e8c2c248c'
         'd0fb11398cc628c7997111efdc5d52e5'
     '5a93f993ec05fc99094d5139aabd3925'
     'fd425cf1ee9f108f6aa8f37b9c7af071')



build() {
      cd "$srcdir/$pkgname-$pkgver"

          make || return 1
            make DESTDIR="$pkgdir/" install

        install -D -m 644 ${startdir}/multipath.conf ${pkgdir}/etc/multipath.conf
        install -D -m 644 ${startdir}/multipath.conf.annotated ${pkgdir}/etc/multipath.conf.annotated
        install -D -m 755 ${startdir}/multipathd ${pkgdir}/etc/rc.d/multipathd
}

multipathd

#!/bin/bash

. /etc/rc.conf
. /etc/rc.d/functions

case "$1" in
  start)
    stat_busy "Starting multipathd"
    /sbin/multipathd
    if [ $? -gt 0 ]; then
      stat_fail
    else
      add_daemon multipathd
      stat_done
    fi
    ;;
 stop)
   stat_busy "Stopping multipathd"
   [ -f /var/run/multipathd.pid ] && kill `cat /var/run/multipathd.pid` >/dev/null 2>&1 
    if [ $? -gt 0 ]; then
     stat_fail
    else
     rm_daemon multipathd
     stat_done
    fi 
    ;;
  restart)
    $0 stop
    sleep 2
    $0 start
    ;;
  *)
    echo "usage: $0 {start|stop|restart}"  
esac
exit 0

Offline

#4 2009-07-10 18:39:40

djszapi
Member
From: Cambridge, United Kingdom
Registered: 2009-06-14
Posts: 1,439
Website

Re: Multipath-tools PKGBUILD

i think it's okay

Offline

Board footer

Powered by FluxBB