From petefrench@ticketswitch.com  Tue May 13 14:48:32 2008
Return-Path: <petefrench@ticketswitch.com>
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id C5B9E106566C
	for <FreeBSD-gnats-submit@freebsd.org>; Tue, 13 May 2008 14:48:32 +0000 (UTC)
	(envelope-from petefrench@ticketswitch.com)
Received: from angel.ticketswitch.com (angel.ticketswitch.com [IPv6:2002:57e0:1d4e::1])
	by mx1.freebsd.org (Postfix) with ESMTP id 6F6DC8FC14
	for <FreeBSD-gnats-submit@freebsd.org>; Tue, 13 May 2008 14:48:32 +0000 (UTC)
	(envelope-from petefrench@ticketswitch.com)
Received: from [10.50.50.2] (helo=smaug.rattatosk)
	by angel.ticketswitch.com with esmtps (TLSv1:AES256-SHA:256)
	(Exim 4.69 (FreeBSD))
	(envelope-from <petefrench@ticketswitch.com>)
	id 1Jvvnr-0003UA-JC
	for FreeBSD-gnats-submit@freebsd.org; Tue, 13 May 2008 15:48:31 +0100
Received: from dilbert.rattatosk ([10.50.50.6] helo=dilbert.ticketswitch.com)
	by smaug.rattatosk with esmtp (Exim 4.69 (FreeBSD))
	(envelope-from <petefrench@ticketswitch.com>)
	id 1Jvvnr-0004Wi-Gc
	for FreeBSD-gnats-submit@freebsd.org; Tue, 13 May 2008 15:48:31 +0100
Received: from petefrench by dilbert.ticketswitch.com with local (Exim 4.69 (FreeBSD))
	(envelope-from <petefrench@ticketswitch.com>)
	id 1Jvvnr-0008y4-Fo
	for FreeBSD-gnats-submit@freebsd.org; Tue, 13 May 2008 15:48:31 +0100
Message-Id: <E1Jvvnr-0008y4-Fo@dilbert.ticketswitch.com>
Date: Tue, 13 May 2008 15:48:31 +0100
From: Pete French <petefrench@ticketswitch.com>
Reply-To: Pete French <petefrench@ticketswitch.com>
To: FreeBSD-gnats-submit@freebsd.org
Cc:
Subject: gmirror doesnt allow the original drive to be preferred (patch included)
X-Send-Pr-Version: 3.113
X-GNATS-Notify:

>Number:         123630
>Category:       kern
>Synopsis:       [patch] [gmirror] gmirror doesnt allow the original drive to be preferred
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    pjd
>State:          closed
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Tue May 13 14:50:01 UTC 2008
>Closed-Date:    Mon Sep 07 19:32:27 UTC 2009
>Last-Modified:  Mon Sep 07 19:32:27 UTC 2009
>Originator:     Pete French
>Release:        FreeBSD 7.0-STABLE amd64
>Organization:
TicketSwitch Ltd
>Environment:
System: FreeBSD dilbert.rattatosk 7.0-STABLE FreeBSD 7.0-STABLE #1: Thu May 8 12:21:45 BST 2008 petefrench@dilbert.rattatosk:/usr/obj/usr/src/sys/GENERIC amd64


>Description:

	When creating a gmirror the discs are always given priorities
	starting at zero and increasing. This means that any additional
	drives added to a mirror must always have a higher priority than
	the original, as a priority less than zero is not allowed. The
	'prefer' load balancing algorithm will use the highest priority
	drive for reads, and hence it is not possible to add additional
	drives to a mirror whilst keeping reads to the original drive.
	This is a problem when a remote drive is added to a mirror, as
	for performance reasons reads should be restricted to the local
	drive. Mirroring a local and remote pair of drives is a setup
	useful for redundancy purposes.

>How-To-Repeat:

>Fix:

	The following patch addresses this problem in two ways.

	Firstly it changes the default priority to 128 (and upward). This
	allows new drives to be added to the array at a lower priority
	than the existing drive. This is a very simple change.

	Secondly the patch implements a new load balancing algorithm
	called 'prefer-low'. This acts exactly as 'prefer ' except that
	it uses the lowest priority drive. As the load balancing algorithm 
	may be changed on an existing array, it thus allows the preferred
	drive to be changed at runtime. This is a slightly more complex patch
	as it converts the list of drives to a tailq so that it can be
	traversed backwards.

	Path is included uuencoded belo. This is relative to 7.0 and works
	on 7-stable as of today (May 13th). I have tested this on my local
	system very thoroughly.


begin 644 gmirror.patch.gz
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
'>\7K!44`````
`
end
>Release-Note:
>Audit-Trail:
Responsible-Changed-From-To: freebsd-bugs->freebsd-geom 
Responsible-Changed-By: vwe 
Responsible-Changed-When: Wed May 14 11:37:13 UTC 2008 
Responsible-Changed-Why:  

Over to maintainer(s). 

http://www.freebsd.org/cgi/query-pr.cgi?pr=123630 
State-Changed-From-To: open->closed 
State-Changed-By: pjd 
State-Changed-When: pon 7 wrz 2009 19:31:11 UTC 
State-Changed-Why:  
It is now possible to change components priority which should fix 
the problem you described. You can also always stop the mirror and 
relabel it. 


Responsible-Changed-From-To: freebsd-geom->pjd 
Responsible-Changed-By: pjd 
Responsible-Changed-When: pon 7 wrz 2009 19:31:11 UTC 
Responsible-Changed-Why:  
I'll take this one. 

http://www.freebsd.org/cgi/query-pr.cgi?pr=123630 
>Unformatted:
