also sprach adilger:
> Have you tried running "pvcreate -v -d /dev/md0"? It may be that you
> get some more clues with this. Maybe even strace of the above. It
> looks like pvcreate is not getting the correct "dev" or "rdev" from the
> inode...
I ran ``strace -o pv.strace -ff -s 100 -v pvcreate -d -v /dev/md0 > pv.out
2>pv.debug''. I've attached the three output files (gzip'd for pv.strace).
The problem occurs in pv_get_size() starting around line 87. The device name
is looked up in the cache. If found, it is tested to be a partitioned device
or not. This call returns false for the /dev/md? devices; MD_MAJOR is not
listed as a valid major number for partitioned devices (rightly so, I
think).
Since lvm_check_partitioned_dev() returns FALSE, the for loop is never
executed, and ``i'' remains at the value to which it was initialized (0) on
line 50. However, i is then used at line 103 to get the device name:
strncpy ( disk_dev_name, dir_cache[i].dev_name, sizeof ( disk_dev_name) - 1);
This obviously assumes we're dealing solely with partitioned devices, which
in my case I'm not. Since i=0, dir_cache[i].dev_name is the name of the
first device: /dev/sda. The strace provides evidence of this:
write(2, "lvm_check_partitioned_dev -- LEAVING\n", 37) = 37
open("/dev/sda", O_RDONLY) = 5
Everywhere else in the strace references /dev/md0, which is what I used on
the cmdline.
Do these files help any?
/pg
--
Peter Green : Gospel Communications Network, SysAdmin : pcg gospelcom net
---
"I don't know why, but first C programs tend to look a lot worse than
first programs in any other language (maybe except for fortran, but then
I suspect all fortran programs look like `firsts')"
(By Olaf Kirch)
pvcreate -- locking logical volume manager pvcreate -- checking physical volume name "/dev/md0" pvcreate -- getting physical volume size pvcreate -- checking partition type
<1> lvm_get_iop_version -- CALLED <22> lvm_check_special -- CALLED <22> lvm_check_special -- LEAVING <1> lvm_get_iop_version -- AFTER ioctl ret: 0 <1> lvm_get_iop_version -- LEAVING with ret: 6 <1> lvm_lock -- CALLED <22> lvm_check_special -- CALLED <22> lvm_check_special -- LEAVING <1> lvm_lock -- LEAVING with ret: 0 <1> pv_check_name -- CALLED eith "/dev/md0" <22> lvm_check_chars -- CALLED with name: "/dev/md0" <22> lvm_check_chars -- LEAVING with ret: 0 <22> lvm_check_dev -- CALLED <22> lvm_check_dev -- LEAVING with ret: 1 <1> pv_check_name -- LEAVING with ret: 0 <1> pv_get_size -- CALLED with /dev/md0 and BFFFF76C <22> pv_check_name -- CALLED eith "/dev/md0" <333> lvm_check_chars -- CALLED with name: "/dev/md0" <333> lvm_check_chars -- LEAVING with ret: 0 <333> lvm_check_dev -- CALLED <333> lvm_check_dev -- LEAVING with ret: 1 <22> pv_check_name -- LEAVING with ret: 0 <22> pv_check_part -- CALLED with /dev/md0 <333> pv_check_name -- CALLED eith "/dev/md0" <4444> lvm_check_chars -- CALLED with name: "/dev/md0" <4444> lvm_check_chars -- LEAVING with ret: 0 <4444> lvm_check_dev -- CALLED <4444> lvm_check_dev -- LEAVING with ret: 1 <333> pv_check_name -- LEAVING with ret: 0 <333> lvm_dir_cache_find -- CALLED <4444> pv_check_name -- CALLED eith "/dev/md0" <55555> lvm_check_chars -- CALLED with name: "/dev/md0" <55555> lvm_check_chars -- LEAVING with ret: 0 <55555> lvm_check_dev -- CALLED <55555> lvm_check_dev -- LEAVING with ret: 1 <4444> pv_check_name -- LEAVING with ret: 0 <4444> lvm_dir_cache -- CALLED <55555> lvm_add_dir_cache -- CALLED <666666> lvm_check_dev -- CALLED <666666> lvm_check_dev -- LEAVING with ret: 1 <666666> lvm_dir_cache_hit -- CALLED <666666> lvm_dir_cache_hit -- LEAVING with ret: 0 <55555> lvm_add_dir_cache -- LEAVING <55555> lvm_add_dir_cache -- CALLED <666666> lvm_check_dev -- CALLED <666666> lvm_check_dev -- LEAVING with ret: 1 <666666> lvm_dir_cache_hit -- CALLED <666666> lvm_dir_cache_hit -- LEAVING with ret: 0 <55555> lvm_add_dir_cache -- LEAVING <55555> lvm_add_dir_cache -- CALLED <666666> lvm_check_dev -- CALLED <666666> lvm_check_dev -- LEAVING with ret: 1 <666666> lvm_dir_cache_hit -- CALLED <666666> lvm_dir_cache_hit -- LEAVING with ret: 0 <55555> lvm_add_dir_cache -- LEAVING <55555> lvm_add_dir_cache -- CALLED <666666> lvm_check_dev -- CALLED <666666> lvm_check_dev -- LEAVING with ret: 1 <666666> lvm_dir_cache_hit -- CALLED <666666> lvm_dir_cache_hit -- LEAVING with ret: 0 <55555> lvm_add_dir_cache -- LEAVING <55555> lvm_add_dir_cache -- CALLED <666666> lvm_check_dev -- CALLED <666666> lvm_check_dev -- LEAVING with ret: 1 <666666> lvm_dir_cache_hit -- CALLED <666666> lvm_dir_cache_hit -- LEAVING with ret: 0 <55555> lvm_add_dir_cache -- LEAVING <55555> lvm_add_dir_cache -- CALLED <666666> lvm_check_dev -- CALLED <666666> lvm_check_dev -- LEAVING with ret: 1 <666666> lvm_dir_cache_hit -- CALLED <666666> lvm_dir_cache_hit -- LEAVING with ret: 0 <55555> lvm_add_dir_cache -- LEAVING <55555> lvm_add_dir_cache -- CALLED <666666> lvm_check_dev -- CALLED <666666> lvm_check_dev -- LEAVING with ret: 1 <666666> lvm_dir_cache_hit -- CALLED <666666> lvm_dir_cache_hit -- LEAVING with ret: 0 <55555> lvm_add_dir_cache -- LEAVING <55555> lvm_add_dir_cache -- CALLED <666666> lvm_check_dev -- CALLED <666666> lvm_check_dev -- LEAVING with ret: 1 <666666> lvm_dir_cache_hit -- CALLED <666666> lvm_dir_cache_hit -- LEAVING with ret: 0 <55555> lvm_add_dir_cache -- LEAVING <55555> lvm_add_dir_cache -- CALLED <666666> lvm_check_dev -- CALLED <666666> lvm_check_dev -- LEAVING with ret: 1 <666666> lvm_dir_cache_hit -- CALLED <666666> lvm_dir_cache_hit -- LEAVING with ret: 0 <55555> lvm_add_dir_cache -- LEAVING <55555> lvm_add_dir_cache -- CALLED <666666> lvm_check_dev -- CALLED <666666> lvm_check_dev -- LEAVING with ret: 1 <666666> lvm_dir_cache_hit -- CALLED <666666> lvm_dir_cache_hit -- LEAVING with ret: 0 <55555> lvm_add_dir_cache -- LEAVING <55555> lvm_add_dir_cache -- CALLED <666666> lvm_check_dev -- CALLED <666666> lvm_check_dev -- LEAVING with ret: 1 <666666> lvm_dir_cache_hit -- CALLED <666666> lvm_dir_cache_hit -- LEAVING with ret: 0 <55555> lvm_add_dir_cache -- LEAVING <55555> lvm_add_dir_cache -- CALLED <666666> lvm_check_dev -- CALLED <666666> lvm_check_dev -- LEAVING with ret: 1 <666666> lvm_dir_cache_hit -- CALLED <666666> lvm_dir_cache_hit -- LEAVING with ret: 0 <55555> lvm_add_dir_cache -- LEAVING <55555> lvm_add_dir_cache -- CALLED <666666> lvm_check_dev -- CALLED <666666> lvm_check_dev -- LEAVING with ret: 1 <666666> lvm_dir_cache_hit -- CALLED <666666> lvm_dir_cache_hit -- LEAVING with ret: 0 <55555> lvm_add_dir_cache -- LEAVING <55555> lvm_add_dir_cache -- CALLED <666666> lvm_check_dev -- CALLED <666666> lvm_check_dev -- LEAVING with ret: 1 <666666> lvm_dir_cache_hit -- CALLED <666666> lvm_dir_cache_hit -- LEAVING with ret: 0 <55555> lvm_add_dir_cache -- LEAVING <55555> lvm_add_dir_cache -- CALLED <666666> lvm_check_dev -- CALLED <666666> lvm_check_dev -- LEAVING with ret: 1 <666666> lvm_dir_cache_hit -- CALLED <666666> lvm_dir_cache_hit -- LEAVING with ret: 0 <55555> lvm_add_dir_cache -- LEAVING <55555> lvm_add_dir_cache -- CALLED <666666> lvm_check_dev -- CALLED <666666> lvm_check_dev -- LEAVING with ret: 1 <666666> lvm_dir_cache_hit -- CALLED <666666> lvm_dir_cache_hit -- LEAVING with ret: 0 <55555> lvm_add_dir_cache -- LEAVING <55555> lvm_add_dir_cache -- CALLED <666666> lvm_check_dev -- CALLED <666666> lvm_check_dev -- LEAVING with ret: 1 <666666> lvm_dir_cache_hit -- CALLED <666666> lvm_dir_cache_hit -- LEAVING with ret: 0 <55555> lvm_add_dir_cache -- LEAVING <55555> lvm_add_dir_cache -- CALLED <666666> lvm_check_dev -- CALLED <666666> lvm_check_dev -- LEAVING with ret: 1 <666666> lvm_dir_cache_hit -- CALLED <666666> lvm_dir_cache_hit -- LEAVING with ret: 0 <55555> lvm_add_dir_cache -- LEAVING <55555> lvm_add_dir_cache -- CALLED <666666> lvm_check_dev -- CALLED <666666> lvm_check_dev -- LEAVING with ret: 1 <666666> lvm_dir_cache_hit -- CALLED <666666> lvm_dir_cache_hit -- LEAVING with ret: 0 <55555> lvm_add_dir_cache -- LEAVING <55555> lvm_add_dir_cache -- CALLED <666666> lvm_check_dev -- CALLED <666666> lvm_check_dev -- LEAVING with ret: 1 <666666> lvm_dir_cache_hit -- CALLED <666666> lvm_dir_cache_hit -- LEAVING with ret: 0 <55555> lvm_add_dir_cache -- LEAVING <4444> lvm_dir_cache -- LEAVING with ret: 20 <333> lvm_dir_cache_find -- LEAVING <333> lvm_partition_count -- CALLED <333> lvm_partition_count -- LEAVING with ret: 16 <22> pv_check_part -- LEAVING with -218 <22> lvm_dir_cache -- CALLED <22> lvm_dir_cache -- LEAVING with ret: 20 <22> lvm_dir_cache_find -- CALLED <333> pv_check_name -- CALLED eith "/dev/md0" <4444> lvm_check_chars -- CALLED with name: "/dev/md0" <4444> lvm_check_chars -- LEAVING with ret: 0 <4444> lvm_check_dev -- CALLED <4444> lvm_check_dev -- LEAVING with ret: 1 <333> pv_check_name -- LEAVING with ret: 0 <333> lvm_dir_cache -- CALLED <333> lvm_dir_cache -- LEAVING with ret: 20 <22> lvm_dir_cache_find -- LEAVING <22> lvm_check_partitioned_dev -- CALLED <22> lvm_check_partitioned_dev -- LEAVING <1> pv_get_size -- BEFORE llseek 0:0 <1> pv_get_size -- part[0].sys_ind: 83 part[0].nr_sects: 32067 <1> pv_get_size -- first == 1 <1> pv_get_size -- part_i == part_i_tmp <1> pv_get_size -- LEAVING with ret: 32067 pvcreate -- invalid partition type 0x83 for "/dev/md0" (must be 0x8e) <1> lvm_unlock -- CALLED <1> lvm_unlock -- LEAVING with ret: 0
Attachment:
pv.strace.gz
Description: GNU Zip compressed data