svn commit: r220982 - in head: . sys/amd64/conf sys/arm/conf sys/conf sys/i386/conf sys/ia64/conf sys/mips/conf sys/mips/malta sys/pc98/conf sys/powerpc/conf sys/sparc64/conf sys/sun4v/conf

Pawel Jakub Dawidek pjd at FreeBSD.org
Tue Apr 26 07:35:37 UTC 2011


On Tue, Apr 26, 2011 at 10:19:55AM +0300, Alexander Motin wrote:
> On 26.04.2011 10:00, Pawel Jakub Dawidek wrote:
> >On Mon, Apr 25, 2011 at 08:34:33PM +0300, Alexander Motin wrote:
> >>I've thought about the process of fixing hardcoded provider names there,
> >>and it is absolutely not trivial. If we take the "symlinking" way (patch
> >>is already posted to current@), I think it will be much easier for
> >>everybody, and especially users, if I hack all mentioned above GEOM
> >>classes to ignore adX/adaY difference in provider names. And it should
> >>perfectly fit into remaining time window.
> >
> >Could you be more specific what the hack would do exactly?
> 
> I would write some comparison function, which would search both
> names for adX/adaY prefixes, if they found on both arguments,
> trimmed them and compared remaining parts.
> 
> I think for usual purpose of name hardcoding device name part is
> less important. Comparing partition names part should be enough. The
> tricky part there is to properly identify device part, so I was
> thinking about specific hack for adX/adaY.

I was wondering how would you match X and Y, but this is indeed not
important. So on taste we could do (totally untested):

static bool
provider_name_matches(const char *ppname, const char *hcname)
{

	if (strcmp(ppname, hcname) == 0)
		return (true);
	if (strncmp(hcname, "ad", 2) != 0 ||
	    hcname[2] < '0' || hcname[2] > '9') {
		return (false);
	}
	if (strncmp(ppname, "ada", 3) != 0 ||
	    ppname[3] < '0' || ppname[3] > '9') {
		return (false);
	}
	/* Skip 'ad[0-9]+'. */
	hcname += 3;
	while (hcname[0] >= '0' && hcname[0] <= '9')
		hcname++;
	/* Skip 'ada[0-9]+'.
	ppname += 4;
	while (ppname[0] >= '0' && ppname[0] <= '9')
		ppname++;

	return (strcmp(ppname, hcname) == 0);
}

That could work.

Another possibility I was thinking of was to create GEOM providers for
both names and orphan the other name once one of them is opened for
writing.

-- 
Pawel Jakub Dawidek                       http://www.wheelsystems.com
FreeBSD committer                         http://www.FreeBSD.org
Am I Evil? Yes, I Am!                     http://yomoli.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 196 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/svn-src-head/attachments/20110426/ff7d2c9b/attachment.pgp


More information about the svn-src-head mailing list