Vijay, I tried applying patches over that commit and it almost applied. There is still one reject. cat ./multipathd/cli.h.rej --- multipathd/cli.h 2011-12-18 02:25:43.000000000 -0500 +++ multipathd/cli.h 2011-12-18 02:26:09.000000000 -0500 @@ -65,9 +65,9 @@ #define WILDCARDS (1 << __WILDCARDS) #define QUIT (1 << __QUIT) #define SHUTDOWN (1 << __SHUTDOWN) -#define GETPRSTATUS (1 << __GETPRSTATUS) -#define SETPRSTATUS (1 << __SETPRSTATUS) -#define UNSETPRSTATUS (1 << __UNSETPRSTATUS) +#define GETPRSTATUS (1 << __GETPRSTATUS) +#define SETPRSTATUS (1 << __SETPRSTATUS) +#define UNSETPRSTATUS (1UL << __UNSETPRSTATUS) #define INITIAL_REPLY_LEN 1000 It looks like those definitions already exist. The really bad news is once you compile it and run it, it still breaks multipathd cli. ./mpathpersist/mpathpersist --out --register --param-sark=123abc --prout-type=8 /dev/mapper/blah -v 4 Jan 02 22:31:27 | alias = blah Jan 02 22:31:27 | params = 0 0 1 1 round-robin 0 2 1 8:0 1 8:16 1 Jan 02 22:31:27 | status = 2 0 0 0 1 1 A 0 2 0 8:0 A 0 8:16 A 0 Jan 02 22:31:27 | blah: disassemble map [0 0 1 1 round-robin 0 2 1 8:0 1 8:16 1 ] Jan 02 22:31:27 | 8:0: not found in pathvec Jan 02 22:31:27 | 8:16: not found in pathvec Jan 02 22:31:27 | No device found for 8:0 Jan 02 22:31:27 | No device found for 8:16 Jan 02 22:31:27 | blah: disassemble status [2 0 0 0 1 1 A 0 2 0 8:0 A 0 8:16 A 0 ] Jan 02 22:31:27 | blah: reservation_key = 0x123abc (config file default) Jan 02 22:31:27 | 36001405c55fc03cd8193d491eda0d4d7: no path available PR out: command failed multipathd -k multipathd> help Jan 02 22:29:15 | Got request [help] Jan 02 22:29:15 | Reply [1033 bytes] *** glibc detected *** ./multipathd/multipathd: free(): invalid next size (normal): 0x00007fe77c001d40 *** ======= Backtrace: ========= /lib64/libc.so.6[0x366b47c2d6] /lib64/libc.so.6[0x366b47d5be] ./multipathd/multipathd[0x40abe7] ./multipathd/multipathd[0x4076eb] /lib64/libpthread.so.0[0x366bc07d90] /lib64/libc.so.6(clone+0x6d)[0x366b4ef48d] ======= Memory map: ======== 00400000-00412000 r-xp 00000000 fd:02 134411 /root/vlah/multipath-tools/multipathd/multipathd 00612000-00613000 rw-p 00012000 fd:02 134411 /root/vlah/multipath-tools/multipathd/multipathd 012a0000-012c1000 rw-p 00000000 00:00 0 [heap] 366b000000-366b022000 r-xp 00000000 fd:02 129841 /lib64/ld-2.14.90.so 366b221000-366b222000 r--p 00021000 fd:02 129841 /lib64/ld-2.14.90.so 366b222000-366b223000 rw-p 00022000 fd:02 129841 /lib64/ld-2.14.90.so 366b223000-366b224000 rw-p 00000000 00:00 0 366b400000-366b5ab000 r-xp 00000000 fd:02 131672 /lib64/libc-2.14.90.so 366b5ab000-366b7ab000 ---p 001ab000 fd:02 131672 /lib64/libc-2.14.90.so 366b7ab000-366b7af000 r--p 001ab000 fd:02 131672 /lib64/libc-2.14.90.so 366b7af000-366b7b1000 rw-p 001af000 fd:02 131672 /lib64/libc-2.14.90.so 366b7b1000-366b7b6000 rw-p 00000000 00:00 0 366b800000-366b802000 r-xp 00000000 fd:02 131675 /lib64/libdl-2.14.90.so 366b802000-366ba02000 ---p 00002000 fd:02 131675 /lib64/libdl-2.14.90.so 366ba02000-366ba03000 r--p 00002000 fd:02 131675 /lib64/libdl-2.14.90.so 366ba03000-366ba04000 rw-p 00003000 fd:02 131675 /lib64/libdl-2.14.90.so 366bc00000-366bc17000 r-xp 00000000 fd:02 131678 /lib64/libpthread-2.14.90.so 366bc17000-366be16000 ---p 00017000 fd:02 131678 /lib64/libpthread-2.14.90.so 366be16000-366be17000 r--p 00016000 fd:02 131678 /lib64/libpthread-2.14.90.so 366be17000-366be18000 rw-p 00017000 fd:02 131678 /lib64/libpthread-2.14.90.so 366be18000-366be1c000 rw-p 00000000 00:00 0 366c000000-366c007000 r-xp 00000000 fd:02 131679 /lib64/librt-2.14.90.so 366c007000-366c206000 ---p 00007000 fd:02 131679 /lib64/librt-2.14.90.so 366c206000-366c207000 r--p 00006000 fd:02 131679 /lib64/librt-2.14.90.so 366c207000-366c208000 rw-p 00007000 fd:02 131679 /lib64/librt-2.14.90.so 366c400000-366c41d000 r-xp 00000000 fd:02 131683 /lib64/libselinux.so.1 366c41d000-366c61d000 ---p 0001d000 fd:02 131683 /lib64/libselinux.so.1 366c61d000-366c61e000 r--p 0001d000 fd:02 131683 /lib64/libselinux.so.1 366c61e000-366c61f000 rw-p 0001e000 fd:02 131683 /lib64/libselinux.so.1 366c61f000-366c620000 rw-p 00000000 00:00 0 366c800000-366c83e000 r-xp 00000000 fd:02 131691 /lib64/libsepol.so.1 366c83e000-366ca3e000 ---p 0003e000 fd:02 131691 /lib64/libsepol.so.1 366ca3e000-366ca3f000 rw-p 0003e000 fd:02 131691 /lib64/libsepol.so.1 366cc00000-366cc26000 r-xp 00000000 fd:02 131693 /lib64/libdevmapper.so.1.02 366cc26000-366ce25000 ---p 00026000 fd:02 131693 /lib64/libdevmapper.so.1.02 366ce25000-366ce27000 rw-p 00025000 fd:02 131693 /lib64/libdevmapper.so.1.02 366d000000-366d015000 r-xp 00000000 fd:02 131690 /lib64/libgcc_s-4.6.2-20111027.so.1 366d015000-366d214000 ---p 00015000 fd:02 131690 /lib64/libgcc_s-4.6.2-20111027.so.1 366d214000-366d215000 rw-p 00014000 fd:02 131690 /lib64/libgcc_s-4.6.2-20111027.so.1 366d400000-366d43c000 r-xp 00000000 fd:02 131715 /lib64/libreadline.so.6.2 366d43c000-366d63b000 ---p 0003c000 fd:02 131715 /lib64/libreadline.so.6.2 366d63b000-366d643000 rw-p 0003b000 fd:02 131715 /lib64/libreadline.so.6.2 366d643000-366d644000 rw-p 00000000 00:00 0 366d800000-366d823000 r-xp 00000000 fd:02 131710 /lib64/libncurses.so.5.9 366d823000-366da22000 ---p 00023000 fd:02 131710 /lib64/libncurses.so.5.9 366da22000-366da23000 r--p 00022000 fd:02 131710 /lib64/libncurses.so.5.9 366da23000-366da24000 rw-p 00023000 fd:02 131710 /lib64/libncurses.so.5.9 366e000000-366e023000 r-xp 00000000 fd:02 131709 /lib64/libtinfo.so.5.9 366e023000-366e222000 ---p 00023000 fd:02 131709 /lib64/libtinfo.so.5.9 366e222000-366e226000 r--p 00022000 fd:02 131709 /lib64/libtinfo.so.5.9 366e226000-366e227000 rw-p 00026000 fd:02 131709 /lib64/libtinfo.so.5.9 366f800000-366f80e000 r-xp 00000000 fd:02 131692 /lib64/libudev.so.0.12.0 366f80e000-366fa0e000 ---p 0000e000 fd:02 131692 /lib64/libudev.so.0.12.0 366fa0e000-366fa0f000 r--p 0000e000 fd:02 131692 /lib64/libudev.so.0.12.0 366fa0f000-366fa10000 rw-p 0000f000 fd:02 131692 /lib64/libudev.so.0.12.0 7fe774000000-7fe774021000 rw-p 00000000 00:00 0 7fe774021000-7fe778000000 ---p 00000000 00:00 0 7fe778000000-7fe778021000 rw-p 00000000 00:00 0 7fe778021000-7fe77c000000 ---p 00000000 00:00 0 7fe77c000000-7fe77c021000 rw-p 00000000 00:00 0 7fe77c021000-7fe780000000 ---p 00000000 00:00 0 7fe780000000-7fe780021000 rw-p 00000000 00:00 0 7fe780021000-7fe784000000 ---p 00000000 00:00 0 7fe784000000-7fe784021000 rw-p 00000000 00:00 0 7fe784021000-7fe788000000 ---p 00000000 00:00 0 7fe78b617000-7fe78b618000 ---p 00000000 00:00 0 7fe78b618000-7fe78b628000 rw-p 00000000 00:00 0 7fe78b628000-7fe78b629000 ---p 00000000 00:00 0 7fe78b629000-7fe78b639000 rw-p 00000000 00:00 0 7fe78b639000-7fe78b63a000 ---p 00000000 00:00 0 7fe78b63a000-7fe78b64a000 rw-p 00000000 00:00 0 7fe78b64a000-7fe78b64b000 ---p 00000000 00:00 0 7fe78b64b000-7fe78b65b000 rw-p 00000000 00:00 0 7fe78b65b000-7fe78b65c000 r-xp 00000000 fd:02 131265 /lib64/multipath/libprioconst.so 7fe78b65c000-7fe78b85b000 ---p 00001000 fd:02 131265 /lib64/multipath/libprioconst.soAborted thanks fil On 01/02/2012 06:53 AM, Chauhan, Vijay wrote: > Thanks for trying out this patch and for your comments. > > Patch is made on top of commit fa7074f35c67ff1ef29f1aea5a484c5dea25863a > . > Please let me know if you still face any issue in applying patch on this > commit. > Meanwhile I will rebase the changes to HEAD before resending it. > > Any feedback for your verification would be appreciated. > > On 12/31/2010 11:23 PM, Fil wrote: >> oops sorry, I was reading something else you responded to so > automatically I >> wrote to you.... >> On 12/31/2011 09:00 AM, Christophe Varoqui wrote: >>> >>>> I have seen your set of patches for persistent reservation of >>>> multipath devices and wanted to try them out. While trying this > patch >>>> set I have run into several issues. Which code base can I apply > this >>>> against? Any help would be greatly appreciated. Issues are listed > below. >>> >>> This patchset has been developped by Netapp's Vijay Chauhan. >>> >>>> 2. I pulled multipath-tools from opensvc git and that patching > failed >>>> too, so I had to apply all the patches manually. >>>> >>> This is the correct project repository. The patchset may need > rebasing >>> over the HEAD. If it does not apply cleanly there, you might try to >>> revert to a previous commit. >>> >>> I'll try this patchset soon and compare my experience with your >>> observations. >>> >>> Thanks for the report. >>> >>>> 3. while testing mppersist I get following error: >>>> >>>> mpathpersist --out --register --param-sark=123abc --prout-type=8 >>>> /dev/mapper/blah -v 4 Dec 31 00:54:29 | alias = blah Dec 31 > 00:54:29 >>>> | params = 0 0 1 1 round-robin 0 2 1 8:0 1 8:16 1 Dec 31 00:54:29 | >>>> status = 2 0 0 0 1 1 A 0 2 0 8:0 A 0 8:16 A 0 Dec 31 00:54:29 | > blah: >>>> disassemble map [0 0 1 1 round-robin 0 2 1 8:0 1 >>>> 8:16 1 ] >>>> Dec 31 00:54:29 | 8:0: not found in pathvec Dec 31 00:54:29 | 8:16: >>>> not found in pathvec Dec 31 00:54:29 | No device found for 8:0 >>>> > > Please try patch on the commit version mentioned above and let me know > if > you still face issue 3 and issue 4? > >>>> Dec 31 00:54:29 | No device found for 8:16 >>>> >>>> Dec 31 00:54:29 | blah: disassemble status [2 0 0 0 1 1 A 0 2 0 8:0 > A >>>> 0 >>>> 8:16 A 0 ] >>>> Dec 31 00:54:29 | 36001405c55fc03cd8193d491eda0d4d7: no path >>>> available PR out: command failed >>>> >>>> 4. with all patches applied, all multipathd cli commands crash the > daemon. >>>> > > You may need specify reservation_key keyword in following format in > either > multipath section or default section for the applicable devices. In case > if reservation_key > is not mentioned in multipath.conf then multipathd would not check for > persistent reservation > for newly discovered path and reinstated path. > > reservation_key <reservation key> > > Example: > multipaths { > multipath { > wwid XXXXXXXXXXXXXXXX > alias yellow > reservation_key 0x123abc > } > } > >>>> here are my configs: >>>> >>>> cat /etc/multipath.conf >>>> defaults { >>>> user_friendly_names yes >>>> polling_interval 10 >>>> } >>>> >>>> multipaths { >>>> multipath { >>>> wwid >> 36001405c55fc03cd8193d491eda0d4d7 >>>> alias blah >>>> } >>>> } >>>> >>>> >>>> devices { >>>> device { >>>> vendor "QNAP" >>>> product "iSCSI Storage" >>>> path_selector "round-robin 0" >>>> path_grouping_policy multibus >>>> getuid_callout "/lib/udev/scsi_id -g -u -d > /dev/%n" >>>> path_checker directio >>>> failback immediate >>>> } >>>> >>>> } >>>> >>>> blacklist { >>>> devnode "^(vd)[a-z]" >>>> } >>>> >>>> multipath -ll -v3 >>>> Dec 31 00:59:01 | loading /lib64/multipath/libcheckdirectio.so >>>> checker Dec 31 00:59:01 | loading /lib64/multipath/libprioconst.so >>>> prioritizer Dec 31 00:59:01 | loop0: device node name blacklisted > Dec >>>> 31 00:59:01 | loop1: device node name blacklisted Dec 31 00:59:01 | >>>> loop2: device node name blacklisted Dec 31 00:59:01 | loop3: device >>>> node name blacklisted Dec 31 00:59:01 | loop4: device node name >>>> blacklisted Dec 31 00:59:01 | loop5: device node name blacklisted > Dec >>>> 31 00:59:01 | loop6: device node name blacklisted Dec 31 00:59:01 | >>>> loop7: device node name blacklisted Dec 31 00:59:01 | vda: device >>>> node name blacklisted Dec 31 00:59:01 | dm-0: device node name >>>> blacklisted Dec 31 00:59:01 | dm-1: device node name blacklisted > Dec >>>> 31 00:59:01 | dm-2: device node name blacklisted Dec 31 00:59:01 | >>>> dm-3: device node name blacklisted Dec 31 00:59:01 | sda: not found >>>> in pathvec Dec 31 00:59:01 | sda: mask = 0x5 Dec 31 00:59:01 | sda: >>>> dev_t = 8:0 Dec 31 00:59:01 | sda: size = 20971520 Dec 31 00:59:01 > | >>>> sda: vendor = QNAP Dec 31 00:59:01 | sda: product = iSCSI Storage > Dec >>>> 31 00:59:01 | sda: rev = 3.1 Dec 31 00:59:01 | sda: h:b:t:l = > 2:0:0:0 >>>> Dec 31 00:59:01 | sda: path state = running Dec 31 00:59:01 | sda: >>>> get_state Dec 31 00:59:01 | sda: path checker = directio > (controller >>>> setting) Dec 31 00:59:01 | sda: checker timeout = 30000 ms (sysfs >>>> setting) Dec 31 00:59:01 | directio: starting new request Dec 31 >>>> 00:59:01 | directio: io finished 4096/0 Dec 31 00:59:01 | sda: > state >>>> = up Dec 31 00:59:01 | sdb: not found in pathvec Dec 31 00:59:01 | >>>> sdb: mask = 0x5 Dec 31 00:59:01 | sdb: dev_t = 8:16 Dec 31 00:59:01 > | >>>> sdb: size = 20971520 Dec 31 00:59:01 | sdb: vendor = QNAP Dec 31 >>>> 00:59:01 | sdb: product = iSCSI Storage Dec 31 00:59:01 | sdb: rev > = >>>> 3.1 Dec 31 00:59:01 | sdb: h:b:t:l = 3:0:0:0 Dec 31 00:59:01 | sdb: >>>> path state = running Dec 31 00:59:01 | sdb: get_state Dec 31 > 00:59:01 >>>> | sdb: path checker = directio (controller setting) Dec 31 00:59:01 > | >>>> sdb: checker timeout = 30000 ms (sysfs setting) Dec 31 00:59:01 | >>>> directio: starting new request Dec 31 00:59:01 | directio: io >>>> finished 4096/0 Dec 31 00:59:01 | sdb: state = up Dec 31 00:59:01 | >>>> dm-4: device node name blacklisted ===== paths list ===== >>>> uuid hcil dev dev_t pri dm_st chk_st vend/prod/rev dev_st >>>> 2:0:0:0 sda 8:0 -1 undef ready QNAP,iSCSI Storage running >>>> 3:0:0:0 sdb 8:16 -1 undef ready QNAP,iSCSI Storage running >>>> Dec 31 00:59:01 | params = 0 0 1 1 round-robin 0 2 1 8:0 1 8:16 1 > Dec >>>> 31 00:59:01 | status = 2 0 0 0 1 1 A 0 2 0 8:0 A 0 8:16 A 0 Dec 31 >>>> 00:59:01 | blah: disassemble map [0 0 1 1 round-robin 0 2 1 8:0 1 >>>> 8:16 1 ] >>>> Dec 31 00:59:01 | sda: mask = 0x8 >>>> Dec 31 00:59:01 | sda: path state = running Dec 31 00:59:01 | sda: >>>> prio = const (internal default) Dec 31 00:59:01 | sda: prio = >>>> (internal default) Dec 31 00:59:01 | sda: const prio = 1 Dec 31 >>>> 00:59:01 | sdb: mask = 0x8 Dec 31 00:59:01 | sdb: path state = >>>> running Dec 31 00:59:01 | sdb: prio = const (internal default) Dec > 31 >>>> 00:59:01 | sdb: prio = (internal default) Dec 31 00:59:01 | sdb: >>>> const prio = 1 Dec 31 00:59:01 | blah: disassemble status [2 0 0 0 > 1 >>>> 1 A 0 2 0 8:0 A 0 >>>> 8:16 A 0 ] >>>> blah (36001405c55fc03cd8193d491eda0d4d7) dm-4 QNAP,iSCSI Storage >>>> size=10G features='0' hwhandler='0' wp=rw >>>> `-+- policy='round-robin 0' prio=0 status=active >>>> |- 2:0:0:0 sda 8:0 active ready running >>>> `- 3:0:0:0 sdb 8:16 active ready running Dec 31 00:59:01 | > directio >>>> checker refcount 2 Dec 31 00:59:01 | directio checker refcount 1 > Dec >>>> 31 00:59:01 | unloading const prioritizer Dec 31 00:59:01 | > unloading >>>> directio checker > > Thanks, > Vijay > > -- > dm-devel mailing list > dm-devel@xxxxxxxxxx > https://www.redhat.com/mailman/listinfo/dm-devel -- dm-devel mailing list dm-devel@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/dm-devel