[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: [dm-devel] dm multipath kernel driver version too old - 2.6.32



On Sat, Jan 02, 2010 at 07:17:08PM -0500, John A. Sullivan III wrote:
> On Sat, 2010-01-02 at 18:25 -0500, John A. Sullivan III wrote: 
> > On Fri, 2010-01-01 at 19:24 -0500, Mike Snitzer wrote: 
> > > On Thu, Dec 31 2009 at  2:59am -0500,
> > > John A. Sullivan III <jsullivan opensourcedevel com> wrote:
> > > 
> > > > Hello, all.  We are attempting to upgrade our kernel on our VServer
> > > > hosts from 2.6.28 to 2.6.32.1.  After some initial grief, we thought we
> > > > were successful until multipath kicked in and we received an error
> > > > message:
> > > > 
> > > > DM multipath kernel driver version too old
> > > > 
> > > > In the RAID and LVM section of our kernel configuration, we have enabled
> > > > Multipath I/O support.  We have then created modules for Multipath
> > > > target and both I/O Path Selectors (in-flight I/Os and service time).
> > > > 
> > > > We are running fully patched CentOS 5.4.  What have we done wrong?
> > > > Thanks - John
> > > 
> > > Linux >= 2.6.31 has a DM multipath target version that was bumped to >=
> > > 1.1.0 (for request-based multipath et al).
> > > 
> > > The device-mapper-multipath in 5.4 has:
> > > multipath/main.c:     if (dm_prereq(DEFAULT_TARGET, 1, 0, 3))
> > > 
> > > But 5.4's dm_prereq() is too simplistic to handle the higher DM target
> > > version numbers that Linux >= 2.6.31 has for the DM multipath target.
> > > 
> > > Upstream multipath-tools can handle the newer DM target versions
> > > properly.  5.4's device-mapper-multipath-tools can be patched with
> > > something like the following (note this is white-space damaged, but you
> > > get the idea):
> > > 
> > > @@ -107,10 +107,10 @@ dm_prereq (char * str, int x, int y, int z)
> > >  
> > >                 if (!strncmp(str, target->name, strlen(str))) {
> > >                         r--;
> > > -                       
> > > -                       if (target->version[0] >= x &&
> > > -                           target->version[1] >= y &&
> > > -                           target->version[2] >= z)
> > > +
> > > +                       if ((target->version[0] > x) ||
> > > +                           ((target->version[0] ==  x) && (target->version[1] > y)) ||
> > > +                           ((target->version[0] == x) && (target->version[1] == y) && (target->version[2] >= z)))
> > >                                 r--;
> > > 
> > > 			break;
> > > 
> > > But again: upstream multipath-tools already has a nicer fix.
> > <snip>
> > Hmm . . . I'll keep looking but the first fifteen minutes of googling
> > has not shown me where to find upstream multipath-tools.  Everything on
> > http://christophe.varoqui.free.fr/multipath-tools/ looks quite old.
> > Where do I find the latest upstream multipath-tools? Thanks - John
> <snip>
> Sorry to be a pest but I'm a bit out of my depth . . . well, maybe more
> than a bit.  From examining main.c in the various tarballs, I am
> assuming 0.4.8 is indeed what I want.  Now, what exactly do I do?
> 
> Do I simply compile the multipath directory and replace the resultant
> binaries or do I build and replace everything? I don't want to destroy
> my data storage by mixing versions but I also don't want to step too far
> outside the official packaging.  Any guidance would be greatly
> appreciated.  Thanks - John
> 

You could always grab the latest device-mapper-multipath src.rpm from
Fedora rawhide and re-build it on your setup for EL5.

device-mapper-multipath-0.4.9-11.fc13.src.rpm seems to be the latest in Fedora.

(Note that the new rpms in Fedora 12/13 use different compression/format, 
so EL5 rpm tool might not be able to install/handle that src.rpm..)

-- Pasi


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]