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

Re: [linux-lvm] vgcreate not working



On Mon, Mar 11, 2002 at 04:29:53PM +0100, Heinz J . Mauelshagen wrote:
> > just tried using the long devfs names, as printed above and it works fine!
> > argggh.  thats me being dumb.
> 
> No, not really.
> Need to do something about it, so that LVM can cope with both dev pathes.
> 
i had an idea some time back, but no time to code,
after an year i believe the idea is still sound, but never got around to try it
i'll repost part of the thread, volunteers???

L.

-- 
Luca Berra -- bluca comedia it
        Communication Media & Services S.r.l.
 /"\
 \ /     ASCII RIBBON CAMPAIGN
  X        AGAINST HTML MAIL
 / \
--- Begin Message ---
On Mon, Mar 12, 2001 at 05:59:54PM -0700, Andreas Dilger wrote:
> Daniel Whiker writes:
> > Thanks for helping.  I did in fact have devfs compiled in and mounted to an
> > alternative path.
> 
> Currently devfs and LVM don't work well together, especially if it is not
> mounted on /dev.  My patch fixes a small part of this, but it is still
> safer to simply configure devfs out of the kernel when using LVM, until
> your system is working properly.
> 
I believe the big problem is that when lvm is compiled in /proc/partitions
contains device names in devfs format, if devfs is not mounted the lvm dir
cache will get filled with devfs names, which do not exist.
Another problem with devfs is symlinks (eg: /dev/sda), the lvm dircache will
contain only the long name (/dev/scsi/....).

i have a couple of ideas, but no time to code (sorry)
1) using realpath in the tools to solve issue 2
2) checking if the devices mentioned in /proc/partition do really exist, else
  switch the cache to "scan the dev directory mode"

	but better than the above 
3) add another structure to the cache which contains aliases to the device
 we have in the cache, aliases are added dynamically when found on the command
 line or in the VGDA of a PV. We use 
	alias[c].name=possible alias;
	lstat(possible alias, &statbuf)
	if (S_ISLNK(statbuf.st_mode)) {
		alias[c].target=lvm_dir_cache_find(realpath(possible alias));
		if !(alias[c].target) stat(realptah(possible alias), &statbuf)
	}
	if (S_ISBLK(statbuf.st_mode)) {
		alias[c].target=lvm_dir_cache_find_dev(statbuf.st_dev>>8,statbuf.st_mode&((1<<8)-1));
		/* the above function has to be written*/
	}
	if (!alias[c].target) complain(loudly);
	c++;

  then we modify lvm_dir_cache_find to loop also on alias[], before it starts searching th
  cache.

regards,
L.
	
P.S. in case you did not notice the above is not real code :)
		
		
		

-- 
Luca Berra -- bluca comedia it
        Communication Media & Services S.r.l.
 /"\
 \ /     ASCII RIBBON CAMPAIGN
  X        AGAINST HTML MAIL
 / \
_______________________________________________
linux-lvm mailing list
linux-lvm sistina com
http://lists.sistina.com/mailman/listinfo/linux-lvm

--- End Message ---
--- Begin Message ---
On Tue, Mar 13, 2001 at 08:41:02AM +0100, Luca Berra wrote:
> i have a couple of ideas, but no time to code (sorry)
> 1) using realpath in the tools to solve issue 2

This should be done no matter what.  I can't think of any good reason not to
have the tools follow sym-links.

> 2) checking if the devices mentioned in /proc/partition do really exist, else
>   switch the cache to "scan the dev directory mode"

I believe this is the way it works at present

> 	but better than the above 
> 3) add another structure to the cache which contains aliases to the device
>  we have in the cache, aliases are added dynamically when found on the command
>  line or in the VGDA of a PV. We use 
> 	alias[c].name=possible alias;
> 	lstat(possible alias, &statbuf)
> 	if (S_ISLNK(statbuf.st_mode)) {
> 		alias[c].target=lvm_dir_cache_find(realpath(possible alias));
> 		if !(alias[c].target) stat(realptah(possible alias), &statbuf)
> 	}
> 	if (S_ISBLK(statbuf.st_mode)) {
> 		alias[c].target=lvm_dir_cache_find_dev(statbuf.st_dev>>8,statbuf.st_mode&((1<<8)-1));
> 		/* the above function has to be written*/
> 	}
> 	if (!alias[c].target) complain(loudly);
> 	c++;
> 
>   then we modify lvm_dir_cache_find to loop also on alias[], before it starts searching th
>   cache.

This looks interesting...and could possibly help a lot as well.

Regards,
-- 
AJ Lewis
Sistina Software Inc.                  Voice:  612-379-3951
1313 5th St SE, Suite 111              Fax:    612-379-3952
Minneapolis, MN 55414                  E-Mail: lewis sistina com
http://www.sistina.com

Current GPG fingerprint = 3B5F 6011 5216 76A5 2F6B  52A0 941E 1261 0029 2648
Get my key at: http://www.sistina.com/~lewis/gpgkey
 (Unfortunately, the PKS-type keyservers do not work with multiple sub-keys)

-----Begin Obligatory Humorous Quote----------------------------------------
Life's short and hard, kind of like a bodybuilding elf
-----End Obligatory Humorous Quote------------------------------------------

Attachment: pgp00004.pgp
Description: PGP signature


--- End Message ---

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