--- /dev/null
+/Makefile/1.1/Mon Dec 22 00:57:58 2008//
+/lvm2tools.mk/1.1/Mon Dec 22 00:57:58 2008//
+D/dist////
+D/lib////
+D/sbin////
--- /dev/null
+src/external/gpl2/lvm2
--- /dev/null
+/archive/NetBSD-CVS
--- /dev/null
+# $NetBSD: Makefile,v 1.1 2008/12/22 00:57:58 haad Exp $
+
+.include "lvm2tools.mk"
+
+SUBDIR+= lib .WAIT
+
+SUBDIR+= sbin
+
+.include <bsd.subdir.mk>
--- /dev/null
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+ 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+\f
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+\f
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+\f
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+\f
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+\f
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ <signature of Ty Coon>, 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Library General
+Public License instead of this License.
--- /dev/null
+ GNU LESSER GENERAL PUBLIC LICENSE
+ Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL. It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+ This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it. You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations below.
+
+ When we speak of free software, we are referring to freedom of use,
+not price. Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+ To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights. These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+ For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you. You must make sure that they, too, receive or can get the source
+code. If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it. And you must show them these terms so they know their rights.
+
+ We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+ To protect each distributor, we want to make it very clear that
+there is no warranty for the free library. Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+\f
+ Finally, software patents pose a constant threat to the existence of
+any free program. We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder. Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+ Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License. This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License. We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+ When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library. The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom. The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+ We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License. It also provides other free software developers Less
+of an advantage over competing non-free programs. These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries. However, the Lesser license provides advantages in certain
+special circumstances.
+
+ For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard. To achieve this, non-free programs must be
+allowed to use the library. A more frequent case is that a free
+library does the same job as widely used non-free libraries. In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+ In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software. For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+ Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+ The precise terms and conditions for copying, distribution and
+modification follow. Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library". The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+\f
+ GNU LESSER GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+ A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+ The "Library", below, refers to any such software library or work
+which has been distributed under these terms. A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language. (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+ "Source code" for a work means the preferred form of the work for
+making modifications to it. For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+ Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it). Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+
+ 1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+ You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+\f
+ 2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) The modified work must itself be a software library.
+
+ b) You must cause the files modified to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ c) You must cause the whole of the work to be licensed at no
+ charge to all third parties under the terms of this License.
+
+ d) If a facility in the modified Library refers to a function or a
+ table of data to be supplied by an application program that uses
+ the facility, other than as an argument passed when the facility
+ is invoked, then you must make a good faith effort to ensure that,
+ in the event an application does not supply such function or
+ table, the facility still operates, and performs whatever part of
+ its purpose remains meaningful.
+
+ (For example, a function in a library to compute square roots has
+ a purpose that is entirely well-defined independent of the
+ application. Therefore, Subsection 2d requires that any
+ application-supplied function or table used by this function must
+ be optional: if the application does not supply it, the square
+ root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library. To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License. (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.) Do not make any other change in
+these notices.
+\f
+ Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+ This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+ 4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+ If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library". Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+ However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library". The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+ When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library. The
+threshold for this to be true is not precisely defined by law.
+
+ If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work. (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+ Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+\f
+ 6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+ You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License. You must supply a copy of this License. If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License. Also, you must do one
+of these things:
+
+ a) Accompany the work with the complete corresponding
+ machine-readable source code for the Library including whatever
+ changes were used in the work (which must be distributed under
+ Sections 1 and 2 above); and, if the work is an executable linked
+ with the Library, with the complete machine-readable "work that
+ uses the Library", as object code and/or source code, so that the
+ user can modify the Library and then relink to produce a modified
+ executable containing the modified Library. (It is understood
+ that the user who changes the contents of definitions files in the
+ Library will not necessarily be able to recompile the application
+ to use the modified definitions.)
+
+ b) Use a suitable shared library mechanism for linking with the
+ Library. A suitable mechanism is one that (1) uses at run time a
+ copy of the library already present on the user's computer system,
+ rather than copying library functions into the executable, and (2)
+ will operate properly with a modified version of the library, if
+ the user installs one, as long as the modified version is
+ interface-compatible with the version that the work was made with.
+
+ c) Accompany the work with a written offer, valid for at
+ least three years, to give the same user the materials
+ specified in Subsection 6a, above, for a charge no more
+ than the cost of performing this distribution.
+
+ d) If distribution of the work is made by offering access to copy
+ from a designated place, offer equivalent access to copy the above
+ specified materials from the same place.
+
+ e) Verify that the user has already received a copy of these
+ materials or that you have already sent this user a copy.
+
+ For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it. However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+ It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system. Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+\f
+ 7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+ a) Accompany the combined library with a copy of the same work
+ based on the Library, uncombined with any other library
+ facilities. This must be distributed under the terms of the
+ Sections above.
+
+ b) Give prominent notice with the combined library of the fact
+ that part of it is a work based on the Library, and explaining
+ where to find the accompanying uncombined form of the same work.
+
+ 8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License. Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License. However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+ 9. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Library or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+ 10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+\f
+ 11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all. For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded. In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+ 13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation. If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+\f
+ 14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission. For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this. Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+ NO WARRANTY
+
+ 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+\f
+ How to Apply These Terms to Your New Libraries
+
+ If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change. You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+ To apply these terms, attach the following notices to the library. It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the library's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the
+ library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+ <signature of Ty Coon>, 1 April 1990
+ Ty Coon, President of Vice
+
+That's all there is to it!
+
+
--- /dev/null
+/COPYING/1.1.1.1/Mon Dec 22 00:17:36 2008//
+/COPYING.LIB/1.1.1.1/Mon Dec 22 00:17:36 2008//
+/INSTALL/1.1.1.1/Mon Dec 22 00:17:50 2008//
+/README/1.1.1.1/Mon Dec 22 00:17:50 2008//
+D/autoconf////
+D/daemons////
+D/doc////
+D/include////
+D/lib////
+D/libdm////
+D/man////
+D/po////
+D/scripts////
+D/test////
+D/tools////
+/Makefile/1.1.1.1/Wed Dec 2 00:25:38 2009//
+/Makefile.in/1.1.1.3/Sat Dec 5 22:57:41 2009//
+/VERSION/1.1.1.3/Sat Dec 5 22:57:41 2009//
+/VERSION_DM/1.1.1.3/Sat Dec 5 22:57:41 2009//
+/WHATS_NEW/1.1.1.3/Sat Dec 5 22:57:41 2009//
+/WHATS_NEW_DM/1.1.1.3/Sat Dec 5 22:57:41 2009//
+/configure/1.1.1.3/Sat Dec 5 22:57:41 2009//
+/configure.in/1.1.1.3/Sat Dec 5 22:57:41 2009//
+/lvm2netbsd/1.2/Sat Dec 5 22:57:41 2009//
+/make.tmpl/1.1.1.1/Wed Dec 2 00:25:22 2009//
+/make.tmpl.in/1.1.1.2/Sat Dec 5 22:57:41 2009//
+D/liblvm////
+D/udev////
--- /dev/null
+src/external/gpl2/lvm2/dist
--- /dev/null
+/archive/NetBSD-CVS
--- /dev/null
+Installation
+============
+
+1) Generate custom makefiles.
+
+ Run the 'configure' script from the top directory.
+
+ If you don't want to include the LVM1 backwards-compatibility code use:
+ ./configure --with-lvm1=none
+
+ To separate the LVM1 support into a shared library loaded by lvm.conf use:
+ ./configure --with-lvm1=shared
+
+ Use ./configure --help to see other options.
+
+2) Build and install.
+
+ Run 'make' from the top directory to build everything you configured.
+ Run 'make install' to build and install everything you configured.
+
+ If you only want the device-mapper libraries and tools use
+ 'make device-mapper' or 'make install_device-mapper'.
+
+3) If using LVM2, create a configuration file.
+
+ The tools will work fine without a configuration file being
+ present, but you ought to review the example file in doc/example.conf.
+
+Please also refer to the WHATS_NEW file and the manual pages for the
+individual commands.
+
--- /dev/null
+#
+# Copyright (C) 2001-2004 Sistina Software, Inc. All rights reserved.
+# Copyright (C) 2004-2008 Red Hat, Inc. All rights reserved.
+#
+# This file is part of LVM2.
+#
+# This copyrighted material is made available to anyone wishing to use,
+# modify, copy, or redistribute it subject to the terms and conditions
+# of the GNU General Public License v.2.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software Foundation,
+# Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+srcdir = .
+top_srcdir = .
+top_builddir = .
+
+
+SUBDIRS = doc include man scripts
+
+ifeq ("no", "yes")
+ SUBDIRS += udev
+endif
+
+ifeq ("no", "yes")
+ SUBDIRS += po
+endif
+
+SUBDIRS += lib tools daemons libdm
+
+ifeq ("no", "yes")
+ SUBDIRS += liblvm
+endif
+
+ifeq ($(MAKECMDGOALS),distclean)
+ SUBDIRS += daemons/clvmd \
+ daemons/cmirrord \
+ daemons/dmeventd/plugins \
+ daemons/dmeventd \
+ lib/format1 \
+ lib/format_pool \
+ lib/locking \
+ lib/mirror \
+ lib/snapshot \
+ liblvm \
+ udev \
+ test/api \
+ test \
+ po
+ DISTCLEAN_TARGETS += lib/misc/configure.h lib/misc/lvm-version.h
+ DISTCLEAN_DIRS += lcov_reports*
+endif
+
+include make.tmpl
+
+libdm: include
+lib: libdm
+liblvm: lib
+daemons: lib tools
+tools: lib device-mapper
+po: tools daemons
+
+libdm.device-mapper: include.device-mapper
+daemons.device-mapper: libdm.device-mapper
+tools.device-mapper: libdm.device-mapper
+device-mapper: tools.device-mapper daemons.device-mapper man.device-mapper
+
+ifeq ("no", "yes")
+lib.pofile: include.pofile
+tools.pofile: lib.pofile
+daemons.pofile: lib.pofile
+po.pofile: tools.pofile daemons.pofile
+pofile: po.pofile
+endif
+
+ifneq ("", "")
+tools.cflow: lib.cflow
+cflow: tools.cflow
+endif
+
+ifneq ("", "")
+cscope.out: tools
+ -b -R
+all: cscope.out
+endif
+
+check: all
+ $(MAKE) -C test all
+
+ifneq ("", "")
+.PHONY: lcov-reset lcov lcov-dated
+
+ifeq ($(MAKECMDGOALS),lcov-dated)
+LCOV_REPORTS_DIR=$(top_srcdir)/lcov_reports-$(shell date +%Y%m%d%k%M%S)
+else
+LCOV_REPORTS_DIR=$(top_srcdir)/lcov_reports
+endif
+
+lcov-reset:
+ $(LCOV) -d $(top_srcdir)/dmeventd --zerocounters
+ $(LCOV) -d $(top_srcdir)/libdm --zerocounters
+ $(LCOV) -d $(top_srcdir)/lib --zerocounters
+ $(LCOV) -d $(top_srcdir)/tools --zerocounters
+
+lcov: all
+ $(RM) -rf $(LCOV_REPORTS_DIR)
+ $(MKDIR_P) $(LCOV_REPORTS_DIR)
+ $(LCOV) -b $(top_srcdir)/libdm -d $(top_srcdir)/libdm -c -o $(LCOV_REPORTS_DIR)/libdm.info
+ $(LCOV) -b $(top_srcdir)/lib -d $(top_srcdir)/lib -c -o $(LCOV_REPORTS_DIR)/lib.info
+ $(LCOV) -b $(top_srcdir)/tools -d $(top_srcdir)/tools -c -o $(LCOV_REPORTS_DIR)/tools.info
+ DMEVENTD_INFO="$(LCOV_REPORTS_DIR)/dmeventd.info" ;\
+ DMEVENTD_INFO_A="-a $$DMEVENTDINFO" ;\
+ $(LCOV) -b $(top_srcdir)/dmeventd -d $(top_srcdir)/dmeventd -c -o $$DMEVENTD_INFO || DMEVENTD_INFO_A="" ;\
+ $(LCOV) $$DMEVENTD_INFO_A -a $(LCOV_REPORTS_DIR)/lib.info \
+ -a $(LCOV_REPORTS_DIR)/libdm.info \
+ -a $(LCOV_REPORTS_DIR)/tools.info \
+ -o $(LCOV_REPORTS_DIR)/lvm.info
+ifneq ("", "")
+ $(GENHTML) -o $(LCOV_REPORTS_DIR) -p $(top_srcdir) $(LCOV_REPORTS_DIR)/lvm.info
+endif
+
+lcov-dated: lcov
+
+endif
--- /dev/null
+#
+# Copyright (C) 2001-2004 Sistina Software, Inc. All rights reserved.
+# Copyright (C) 2004-2008 Red Hat, Inc. All rights reserved.
+#
+# This file is part of LVM2.
+#
+# This copyrighted material is made available to anyone wishing to use,
+# modify, copy, or redistribute it subject to the terms and conditions
+# of the GNU General Public License v.2.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software Foundation,
+# Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+top_builddir = @top_builddir@
+VPATH = @srcdir@
+
+SUBDIRS = doc include man scripts
+
+ifeq ("@UDEV_RULES@", "yes")
+ SUBDIRS += udev
+endif
+
+ifeq ("@INTL@", "yes")
+ SUBDIRS += po
+endif
+
+SUBDIRS += lib tools daemons libdm
+
+ifeq ("@APPLIB@", "yes")
+ SUBDIRS += liblvm
+endif
+
+ifeq ($(MAKECMDGOALS),distclean)
+ SUBDIRS += daemons/clvmd \
+ daemons/cmirrord \
+ daemons/dmeventd/plugins \
+ daemons/dmeventd \
+ lib/format1 \
+ lib/format_pool \
+ lib/locking \
+ lib/mirror \
+ lib/snapshot \
+ liblvm \
+ udev \
+ test/api \
+ test \
+ po
+ DISTCLEAN_TARGETS += lib/misc/configure.h lib/misc/lvm-version.h
+ DISTCLEAN_DIRS += lcov_reports*
+endif
+
+include make.tmpl
+
+libdm: include
+lib: libdm
+liblvm: lib
+daemons: lib tools
+tools: lib device-mapper
+po: tools daemons
+
+libdm.device-mapper: include.device-mapper
+daemons.device-mapper: libdm.device-mapper
+tools.device-mapper: libdm.device-mapper
+device-mapper: tools.device-mapper daemons.device-mapper man.device-mapper
+
+ifeq ("@INTL@", "yes")
+lib.pofile: include.pofile
+tools.pofile: lib.pofile
+daemons.pofile: lib.pofile
+po.pofile: tools.pofile daemons.pofile
+pofile: po.pofile
+endif
+
+ifneq ("@CFLOW_CMD@", "")
+tools.cflow: lib.cflow
+cflow: tools.cflow
+endif
+
+ifneq ("@CSCOPE_CMD@", "")
+cscope.out: tools
+ @CSCOPE_CMD@ -b -R
+all: cscope.out
+endif
+
+check: all
+ $(MAKE) -C test all
+
+ifneq ("@LCOV@", "")
+.PHONY: lcov-reset lcov lcov-dated
+
+ifeq ($(MAKECMDGOALS),lcov-dated)
+LCOV_REPORTS_DIR=$(top_srcdir)/lcov_reports-$(shell date +%Y%m%d%k%M%S)
+else
+LCOV_REPORTS_DIR=$(top_srcdir)/lcov_reports
+endif
+
+lcov-reset:
+ $(LCOV) -d $(top_srcdir)/dmeventd --zerocounters
+ $(LCOV) -d $(top_srcdir)/libdm --zerocounters
+ $(LCOV) -d $(top_srcdir)/lib --zerocounters
+ $(LCOV) -d $(top_srcdir)/tools --zerocounters
+
+lcov: all
+ $(RM) -rf $(LCOV_REPORTS_DIR)
+ $(MKDIR_P) $(LCOV_REPORTS_DIR)
+ $(LCOV) -b $(top_srcdir)/libdm -d $(top_srcdir)/libdm -c -o $(LCOV_REPORTS_DIR)/libdm.info
+ $(LCOV) -b $(top_srcdir)/lib -d $(top_srcdir)/lib -c -o $(LCOV_REPORTS_DIR)/lib.info
+ $(LCOV) -b $(top_srcdir)/tools -d $(top_srcdir)/tools -c -o $(LCOV_REPORTS_DIR)/tools.info
+ DMEVENTD_INFO="$(LCOV_REPORTS_DIR)/dmeventd.info" ;\
+ DMEVENTD_INFO_A="-a $$DMEVENTDINFO" ;\
+ $(LCOV) -b $(top_srcdir)/dmeventd -d $(top_srcdir)/dmeventd -c -o $$DMEVENTD_INFO || DMEVENTD_INFO_A="" ;\
+ $(LCOV) $$DMEVENTD_INFO_A -a $(LCOV_REPORTS_DIR)/lib.info \
+ -a $(LCOV_REPORTS_DIR)/libdm.info \
+ -a $(LCOV_REPORTS_DIR)/tools.info \
+ -o $(LCOV_REPORTS_DIR)/lvm.info
+ifneq ("@GENHTML@", "")
+ $(GENHTML) -o $(LCOV_REPORTS_DIR) -p $(top_srcdir) $(LCOV_REPORTS_DIR)/lvm.info
+endif
+
+lcov-dated: lcov
+
+endif
--- /dev/null
+This tree contains the LVM2 and device-mapper tools and libraries.
+
+For more information about LVM2 read the changelog in the WHATS_NEW file.
+Installation instructions are in INSTALL.
+
+There is no warranty - see COPYING and COPYING.LIB.
+
+Tarballs are available from:
+ ftp://sources.redhat.com/pub/lvm2/
+
+To access the CVS tree use:
+ cvs -d :pserver:cvs@sources.redhat.com:/cvs/lvm2 login
+ CVS password: cvs
+ cvs -d :pserver:cvs@sources.redhat.com:/cvs/lvm2 co LVM2
+
+Mailing list for general discussion related to LVM2:
+ linux-lvm@redhat.com
+ Subscribe from https://www.redhat.com/mailman/listinfo/linux-lvm
+
+Mailing list for LVM2 development, patches and commits:
+ lvm-devel@redhat.com
+ Subscribe from https://www.redhat.com/mailman/listinfo/linux-lvm
+
+Mailing list for device-mapper development, including kernel patches
+and multipath-tools:
+ dm-devel@redhat.com
+ Subscribe from https://www.redhat.com/mailman/listinfo/dm-devel
--- /dev/null
+2.02.56(1) (2009-11-24)
--- /dev/null
+1.02.40 (2009-11-24)
--- /dev/null
+Version 2.02.56 - 24th November 2009
+====================================
+ Add missing vg_release to pvs and pvdisplay to fix memory leak.
+ Do not try to unlock VG which is not locked in _process_one_vg.
+ Move is_long_lived persistent_filter_dump to happen after every full scan.
+ Refresh device filters before full device rescan in lvmcache.
+ Return error status if vgchange fails to activate some volume.
+ Fix suspend/resume lock type test causing unbalanced memory locking.
+ Revert vg_read_internal change as clvmd was not ready for vg_read. (2.02.55)
+
+Version 2.02.55 - 19th November 2009
+====================================
+ Fix deadlock when changing mirrors due to unpaired memlock refcount changes.
+ Use separate memlock counter for dmeventd handlers to permit device scanning.
+ Directly restrict vgchange to activating visible LVs.
+ Fix pvmove region_size overflow for very large PVs.
+ Fix lvcreate and lvresize %PVS argument always to use sensible total size.
+ Tidy some uses of arg_count and introduce arg_is_set.
+ Export outnl and indent functions for modules.
+ Flush stdout after yes/no prompt.
+ Update vgsplit and vgcreate to use vg_set_clustered.
+ Add vg_mda_count and vg_set_clustered library functions.
+ Add more vgcreate and vgsplit nightly tests.
+ Insert some missing stack macros into activation code.
+ Recognise DRBD devices and handle them like md devices.
+
+Version 2.02.54 - 26th October 2009
+===================================
+ Update lvcreate/lvconvert man pages to explain PhysicalVolume parameter.
+ Document --all option in man pages, cleanup {pv|vg|lv}{s|display} man pages.
+ Permit snapshots of mirrors.
+ Cleanup mimagetmp LV if allocation fails for new lvconvert mimage.
+ Fix clvmd segfault when refresh_toolcontext fails.
+ Remember to clear 'global lock held during cache refresh' state after use.
+ Use udev flags support in LVM and apply various fixes to udev rules.
+ Delay announcing mirror monitoring to syslog until initialisation succeeded.
+ Handle metadata with unknown segment types more gracefully.
+ Set default owner and group to null.
+ Add dmeventd.static to the build.
+ Disable realtime support code by default.
+ Make clvmd return 0 on success rather than 1.
+ Add --pvmetadatacopies for pvcreate, vgcreate, vgextend, vgconvert.
+ Add implict pvcreate support to vgcreate and vgextend.
+ Correct example.conf to indicate that lvm2 not lvm1 is the default format.
+ Remove an unused stray LVM1_SUPPORT ifdef.
+ Only include selinux libs in libdevmapper.pc when selinux build enabled.
+ Allow for a build directory separate from the source.
+ Update distclean target for rename clogd to cmirrord. (2.02.52)
+ Only do lock conversions in clvmd if we are explicitly asked for one.
+ Introduce percent_range_t and centralise snapshot full/mirror in-sync checks.
+ Factor out poll_mirror_progress and introduce progress_t.
+ Distinguish between powers of 1000 and powers of 1024 in unit suffixes.
+ Restart lvconverts in vgchange by sharing lv_spawn_background_polling.
+ Generalise polldaemon code by changing mirror-specific variable names.
+ Don't attempt to deactivate an LV if any of its snapshots are in use.
+ Return error if lv_deactivate fails to remove device from kernel.
+ Provide alternative implementation of obsolete siginterrupt().
+ Consolidate LV allocation into alloc_lv().
+ Treat input units of both 's' and 'S' as 512-byte sectors. (2.02.49)
+ Use standard output units for 'PE Size' and 'Stripe size' in pv/lvdisplay.
+ Add configure --enable-units-compat to set si_unit_consistency off by default.
+ Add global/si_unit_consistency to enable cleaned-up use of units in output.
+
+Version 2.02.53 - 25th September 2009
+=====================================
+ Create any directories in /dev with DM_DEV_DIR_UMASK (022).
+ Enable dmeventd monitoring section of config file by default.
+ Update lvm2 monitoring script to lvm2_monitoring_init_red_hat.in.
+ Fix lvm2app test to run under test/api subdirectory only when configured.
+ Add vg_is_resizeable() and cleanup reference to VG_RESIZEABLE.
+
+Version 2.02.52 - 15th September 2009
+=====================================
+ Update _process_one_vg to cleanup properly after vg_read_error.
+ Add lots of missing stack debug messages to tools.
+ Make readonly locking available as locking type 4.
+ Fix readonly locking to permit writeable global locks (for vgscan). (2.02.49)
+ Add DM_UDEV_RULES_VSN environment variable to udev rules.
+ Update vgsplit, vgmerge, and vgrename to obey new vgname ordering rules.
+ Make lvm2app pv_t, lv_t, vg_t handle definitions consistent with lvm_t.
+ Enforce an alphabetical lock ordering on vgname locking.
+ Prioritise write locks over read locks by default for file locking.
+ Add local lock files with suffix ':aux' to serialise locking requests.
+ Fix global locking in PV reporting commands (2.02.49).
+ Fix pvcreate string termination in duplicate uuid warning message.
+ Don't loop reading sysfs with pvcreate on a non-blkext partition (2.02.51).
+ Fix vgcfgrestore error paths when locking fails (2.02.49).
+ Update Makefile distclean target.
+ Add libudev configuration check.
+ Make clvmd check corosync to see what cluster interface it should use.
+ Add clvmd autodetection check and cleanup related configure messages.
+ Rewrite clvmd configuration code to cope with all combinations of libs.
+ Added configure --enable-cmirrord to build the cluster mirror log daemon.
+ Rename clogd to cmirrord.
+ Make lvchange --refresh only take a read lock on volume group.
+ Fix race where non-blocking file locks could be granted in error.
+ Fix vgextend error path - if ORPHAN lock fails, unlock / release vg (2.02.49).
+ Fix compile warning in clvmd.
+ Clarify use of PE ranges in lv{convert|create|extend|resize} man pages.
+ Remove useless _pv_write wrapper.
+ Add lvm2app.sh to tests conditional upon configure --enable-applib.
+ Add lvm_vg_is_clustered, lvm_vg_is_exported, and lvm_vg_is_partial.
+ Update lvm_vg_remove to require lvm_vg_write to commit remove to disk.
+ Update test/api/test.c to call lvm_vg_create and lvm_vg_remove.
+
+Version 2.02.51 - 6th August 2009
+=================================
+ Fix locking in clvmd (2.02.50).
+ Add --noudevsync option for relevant LVM tools.
+ Add activation/udev_sync to lvm.conf.
+ Only change LV symlinks on ACTIVATE not PRELOAD.
+ Make lvconvert honour log mirror options combined with downconversion.
+ Allow LV suspend while --ignorelockingfailure is in force.
+ Update synopsis in lvconvert manpage to mention --repair.
+ Set cookies in activation code and wait for udev to complete processing.
+ Added configure --enable-udev_rules --enable-udev_sync.
+ Added configure --with-udev-prefix --with-udevdir.
+ Added udev dir to hold udev rules.
+ Add devices/data_alignment_detection to lvm.conf.
+ Add devices/data_alignment_offset_detection to lvm.conf.
+ Add --dataalignmentoffset to pvcreate to shift start of aligned data area.
+ Fix _mda_setup() to not check first mda's size before pe_align rounding.
+ Document -I option of clvmd in the man page.
+ Fix configure script to handle multiple clvmd selections.
+ Fix lvm2app.pc installation filename.
+ Remove pv_t, vg_t & lv_t handles from lib. Only liblvm uses them.
+ Rename lvm.h to lvm2app.h for now.
+
+Version 2.02.50 - 28th July 2009
+================================
+ Change test/api/test.c prompt so it's not confused with the main lvm prompt.
+ Update liblvm unit tests in test/api to cover latest liblvm changes.
+ Add unimplemented lvm_lv_resize and lvm_pv_resize skeletons to liblvm.
+ Add lvm_library_get_version to liblvm.
+ Add lvm_config_override to liblvm to allow caller to override LVM config.
+ Add lvm_lv_is_active and lvm_lv_is_suspended to liblvm.
+ Add lvm_lv_activate and lvm_lv_deactivate to liblvm.
+ Add lvm_scan, lvm_vg_reduce and lvm_vg_remove_lv to liblvm.
+ Add functions to get numeric properties to liblvm.
+ Add lvm_{pv|vg|lv}_get_{name|uuid} to liblvm.
+ Add lvm_vg_list_pvs and lvm_vg_list_lvs to liblvm.
+ Add lvm_vg_open and lvm_vg_create_lv_linear to liblvm.
+ Add lvm_list_vg_names/uuids to liblvm.
+ Add lvm_errno and lvm_errmsg to liblvm to obtain failure information.
+ Rename lvm_create/destroy to lvm_init/quit.
+ Rename lvm_reload_config to lvm_config_reload.
+ Refactor _override_settings to use new override_config_tree_from_string.
+ Add vg_reduce to metadata.c and metadata-exported.h.
+ Update lvm.h to clarify API behavior and return codes.
+ Update lvm_vg_extend to do an implicit pvcreate on the device.
+ Update display.c to use vg_free(vg) instead of duplicating the calculation.
+ Refactor vg_size, vg_free, and pv_mda_count field calculations for liblvm.
+ Refactor pvcreate and lvcreate for liblvm.
+ Add global/wait_for_locks to lvm.conf so blocking for locks can be disabled.
+ All LV locks are non-blocking so remove LCK_NONBLOCK from separate macros.
+ Fix race condition with vgcreate and vgextend on same device (2.02.49).
+ Remove redundant validate_name call from vgreduce.
+ Remove unused handles lvseg, pvseg inside liblvm/lvm.h.
+ Add liblvm2app Makefile installation targets.
+ Add liblvm pkgconfig file.
+ Use newly-independent LVM_LIBAPI in liblvm soname. E.g. liblvm2app.so.2.1.
+ Add an API version number, LVM_LIBAPI, to the VERSION string for liblvm.
+ Pass a pointer to struct cmd_context to init_multiple_segtypes
+ Return EINVALID_CMD_LINE not success when invalid VG name format is used.
+ Remove unnecessary messages after vgcreate/vgsplit refactor (2.02.49).
+ Add log_errno to set a specific errno and replace log_error in due course.
+ Change create_toolcontext to still return an object if it fails part-way.
+ Add EUNCLASSIFIED (-1) as the default LVM errno code.
+ Store any errno and error messages issued while processing each command.
+ Use log_error macro consistently throughout in place of log_err.
+
+Version 2.02.49 - 15th July 2009
+================================
+ Add readonly locking type to replace implementation of --ignorelockingfailure.
+ Exclude VG_GLOBAL from vg_write_lock_held so scans open devs read-only again.
+ Add unit test case for liblvm VG create/delete APIs.
+ Add liblvm APIs to implement creation and deletion of VGs.
+ Initialize cmd->cmd_line to "liblvm" in new liblvm library.
+ Place handles to liblvm objects for pv, vg, lv, lvseg, pvseg inside lvm.h.
+ Refactor vgsplit and vgextend to remove READ_REQUIRE_RESIZEABLE flag.
+ Use _exit() not exit() after forking to avoid flushing libc buffers twice.
+ Add cast to log_info arg in _find_labeller to avoid Sparc64 warning.
+ Make cmd->cmd_line const.
+ Fix dev name mismatch in vgcreate man page example.
+ Refactor vg_remove_single for use in liblvm.
+ Make all tools use consistent lock ordering obtaining VG_ORPHAN lock second.
+ Check md devices for a partition table during device scan.
+ Add extended device (blkext) and md partition (mdp) types to filters.
+ Make text metadata read errors for segment areas more precise.
+ Fix text segment metadata read errors to mention correct segment name.
+ Include segment and LV names in text segment import error messages.
+ Add parent node to config_node structure.
+ Update vgsplit and vgcreate to call new vg_create and 'set' functions.
+ Change vg_create to take minimal parameters, obtain a lock, and return vg_t.
+ Refactor vgchange extent_size, max_lv, max_pv, and alloc_policy for liblvm.
+ Update t-vgcreate-usage.sh to test for default vg properties.
+ Fix memory leak in vgsplit when re-reading the vg.
+ Make various exit/cleanup paths more robust after lvm init failures.
+ Use LCK_NONBLOCK implicitly instead of explicit vg_read() flag.
+ Remove unnecessary locking and existence tests from new vg_read() interface.
+ Permit several segment types to be registered by a single shared object.
+ Update the man pages to document size units uniformly.
+ Allow commandline sizes to be specified in terms of bytes and sectors.
+ Update 'md_chunk_alignment' to use stripe-width to align PV data area.
+ Update test/t-inconsistent-metadata.sh to match new vg_read interface.
+ Add lvmcache_init() to polldaemon initialization.
+ Convert tools to use new vg_read / vg_read_for_update.
+ Fix segfault in vg_release when vg->cmd is NULL.
+
+Version 2.02.48 - 30th June 2009
+================================
+ Abort if automatic metadata correction fails when reading VG to update it.
+ Explicitly request fallback to default major number in device mapper.
+ Ignore suspended devices during repair.
+ Call vgreduce --removemissing automatically to fix missing PVs in dmeventd.
+ Suggest using lvchange --resync when adding leg to not-yet-synced mirror.
+ Destroy toolcontext on clvmd exit to avoid memory pool leaks.
+ Fix lvconvert not to poll mirror if no conversion in progress.
+ Fix memory leaks in toolcontext error path.
+ Reinstate partial activation support in clustered mode. (2.02.40)
+ Allow metadata correction even when PVs are missing.
+ Use 'lvm lvresize' instead of 'lvresize' in fsadm.
+ Do not use '-n' realine option in fsadm for busybox compatiblity.
+ Add vg_lock_newname() library function for vgrename, vgsplit and vgcreate.
+ Round up requested readahead to at least one page and print warning.
+ Try to repair vg before actual vgremove when force flag provided.
+ Fix possible double release of VG after recovery.
+ Add parameter to process_each_vg specifying what to do with inconsistent VG.
+ Unify error messages when processing inconsistent volume group.
+ Use lvconvert --repair instead of vgreduce in mirror dmeventd DSO.
+ Introduce lvconvert --use_policies (repair policy according to lvm.conf).
+ Update clvmd-corosync to match new corosync API.
+ Fix lib Makefile to include any shared libraries in default target.
+ Fix rename of active snapshot with virtual origin.
+ Fix convert polling to ignore LV with different UUID.
+ Cache underlying device readahead only before activation calls.
+ Fix segfault when calculating readahead on missing device in vgreduce.
+ Remove verbose 'visited' messages.
+ Handle multi-extent mirror log allocation when smallest PV has only 1 extent.
+ Add LSB standard headers and functions (incl. reload) to clvmd initscript.
+ When creating new LV, double-check that name is not already in use.
+ Remove /dev/vgname/lvname symlink automatically if LV is no longer visible.
+ Rename internal vorigin LV to match visible LV.
+ Suppress 'removed' messages displayed when internal LVs are removed.
+ Fix lvchange -a and -p for sparse LVs.
+ Fix lvcreate --virtualsize to activate the new device immediately.
+ Make --snapshot optional with lvcreate --virtualsize.
+ Generalise --virtualoriginsize to --virtualsize.
+ Skip virtual origins in process_each_lv_in_vg() without --all.
+ Fix counting of virtual origin LVs in vg_validate.
+ Attempt to load dm-zero module if zero target needed but not present.
+
+Version 2.02.47 - 22nd May 2009
+===============================
+ Rename liblvm.so to liblvm2app.so and use configure --enable-applib.
+ Reinstate version in liblvm2cmd.so soname. (2.02.44)
+
+Version 2.02.46 - 21st May 2009
+===============================
+ Inherit readahead setting from underlying devices during activation.
+ Detect LVs active on remote nodes by querying locks if supported.
+ Enable online resizing of mirrors.
+ Use suspend with flush when device size was changed during table preload.
+ Implement query_resource_fn for cluster_locking.
+ Support query_resource_fn in locking modules.
+ Introduce CLVMD_CMD_LOCK_QUERY command for clvmd.
+ Fix pvmove to revert operation if temporary mirror creation fails.
+ Fix metadata export for VG with missing PVs.
+ Add vgimportclone and install it and the man page by default.
+ Force max_lv restriction only for newly created LV.
+ Remove unneeded import parameter from lv_create_empty.
+ Merge lv_is_displayable and lv_is_visible functions.
+ Introduce lv_set_visible & lv_set_hidden functions.
+ Fix lv_is_visible to handle virtual origin.
+ Introduce link_lv_to_vg and unlink_lv_from_vg functions.
+ Remove lv_count from VG and use counter function instead.
+ Fix snapshot segment import to not use duplicate segments & replace.
+ Do not query nonexistent devices for readahead.
+ Remove NON_BLOCKING lock flag from tools and set a policy to auto-set.
+ Remove snapshot_count from VG and use function instead.
+ Fix first_seg() call for empty segment list.
+ Add install_lvm2 makefile target to install only the LVM2 components.
+ Reject missing PVs from allocation in toollib.
+ Fix PV datalignment for values starting prior to MDA area. (2.02.45)
+ Add sparse devices: lvcreate -s --virtualoriginsize (hidden zero origin).
+ Fix minimum width of devices column in reports.
+ Add lvs origin_size field.
+ Fix linux configure --enable-debug to exclude -O2.
+ Implement lvconvert --repair for repairing partially-failed mirrors.
+ Fix vgreduce --removemissing failure exit code.
+ Fix remote metadata backup for clvmd.
+ Introduce unlock_and_release_vg macro.
+ Introduce vg_release() to be called to free every struct volume_group.
+ Alloc PV internal structure from VG mempool if possible.
+ Fix metadata backup to run after vg_commit always.
+ Tidy clvmd volume lock cache functions.
+ Fix pvs report for orphan PVs when segment attributes are requested.
+ Fix pvs -a output to not read volume groups from non-PV devices.
+ Add MMC (mmcblk) device type to filters.
+ Introduce memory pools per volume group (to reduce memory for large VGs).
+ Use copy of PV structure when manipulating global PV lists.
+ Always return exit error status when locking of volume group fails.
+ Fix mirror log convert validation question.
+ Avoid referencing files from DESTDIR during build process.
+ Avoid creating some static libraries unless configured --enable-static_link.
+ Enable use of cached metadata for pvs and pvdisplay commands.
+ Add missing 'device-mapper' internal subdir build dependency.
+ Fix memory leak in mirror allocation code.
+ Save and restore the previous logging level when log level is changed.
+ Fix error message when archive initialization fails.
+ Make sure clvmd-corosync releases the lockspace when it exits.
+ Fix segfault for vgcfgrestore on VG with missing PVs.
+ Block SIGTERM & SIGINT in clvmd subthreads.
+ Detect and conditionally wipe swapspace signatures in pvcreate.
+ Fix maximal volume count check for snapshots if max_lv set for volume group.
+ Fix lvcreate to remove unused cow volume if the snapshot creation fails.
+ Fix error messages when PV uuid or pe_start reading fails.
+ Build new liblvm application-level library.
+ Rename liblvm.a to liblvm-internal.a.
+ Flush memory pool and fix locking in clvmd refresh and backup command.
+ Fix unlocks in clvmd-corosync. (2.02.45)
+ Fix error message when adding metadata directory to internal list fails.
+ Fix size and error message of memory allocation at backup initialization.
+ Remove old metadata backup file after renaming VG.
+ Restore log_suppress state when metadata backup file is up-to-date.
+
+Version 2.02.45 - 3rd March 2009
+================================
+ Avoid scanning empty metadata areas for VG names.
+ Attempt proper clean up in child before executing new binary in exec_cmd().
+ Do not scan devices if reporting only attributes from PV label.
+ Use pkgconfig to obtain corosync library details during configuration.
+ Fix error returns in clvmd-corosync interface to DLM.
+ Add --refresh to vgchange and vgmknodes man pages.
+ Pass --test from lvresize to fsadm as --dry-run.
+ Supply argv[] list to exec_cmd() to allow for variable number of parameters.
+ Prevent fsadm from checking mounted filesystems.
+ No longer treats any other key as 'no' when prompting in fsadm.
+ Tidy fsadm command line processing.
+ Add lib/lvm.h and lib/lvm_base.c for the new library interface.
+ Move tools/version.h to lib/misc/lvm-version.h.
+ Split LVM_VERSION into MAJOR, MINOR, PATCHLEVEL, RELEASE and RELEASE_DATE.
+ Add system_dir parameter to create_toolcontext().
+ Add --dataalignment to pvcreate to specify alignment of data area.
+ Exclude LCK_CACHE locks from _vg_lock_count, fixing interrupt unblocking.
+ Provide da and mda locations in debug message when writing text format label.
+ Mention the restriction on file descriptors at invocation on the lvm man page.
+ Index cached vgmetadata by vgid not vgname to cope with duplicate vgnames.
+ No longer require kernel and metadata major numbers to match.
+ Add a fully-functional get_cluster_name() to clvmd corosync interface.
+ Remove duplicate cpg_initialize from clvmd startup.
+ Add option to /etc/sysconfig/cluster to select cluster type for clvmd.
+ Allow clvmd to start up if its lockspace already exists.
+ Separate PV label attributes which do not need parse metadata when reporting.
+ Remove external dependency on the 'cut' command from fsadm.
+ Fix pvs segfault when pv mda attributes requested for not available PV.
+ Add fsadm support for reszing ext4 filesysystems.
+ Move locking_type reading inside init_locking().
+ Rename get_vgs() to get_vgnames() and clarify related error messages.
+ Allow clvmd to be built with all cluster managers & select one on cmdline.
+ Mention --with-clvmd=corosync in ./configure.
+ Replace internal vg_check_status() implementation.
+ Rename vg_read() to vg_read_internal().
+
+Version 2.02.44 - 26th January 2009
+===================================
+ Fix --enable-static_link after the recent repository changes.
+ Add corosync/DLM cluster interface to clvmd.
+ Add --nameprefixes, --unquoted, --rows to pvs, vgs, lvs man pages.
+ Fix lvresize size conversion for fsadm when block size is not 1K.
+ Fix pvs segfault when run with orphan PV and some VG fields.
+ Display a 'dev_size' of zero for missing devices in reports.
+ Add pv_mda_size to pvs and vg_mda_size to vgs.
+ Fix lvmdump /sys listing to include virtual devices directory.
+ Add "--refresh" functionality to vgchange and vgmknodes.
+ Avoid exceeding LV size when wiping device.
+ Calculate mirror log size instead of using 1 extent.
+ Ensure requested device number is available before activating with it.
+ Fix incorrect exit status from 'help <command>'.
+ Fix vgrename using UUID if there are VGs with identical names.
+ Fix segfault when invalid field given in reporting commands.
+ Move is_static from cmd to global is_static().
+ Refactor init_lvm() for lvmcmdline and clvmd.
+ Add liblvm interactive test infrastructure to build.
+ Add skeleton lvm2.h file in preparation for a shared library interface.
+ Use better random seed value in temp file creation.
+ Add read_urandom to read /dev/urandom. Use in uuid calculation.
+ Use displayable_lvs_in_vg and lv_is_displayable for consistency throughout.
+ Fix race in vgcreate that would result in second caller overwriting first.
+ Fix uninitialised lv_count in vgdisplay -c.
+ Don't skip updating pvid hash when lvmcache_info struct got swapped.
+ Add tinfo to termcap search path for pld-linux.
+ Fix startup race in clvmd.
+ Generate Red Hat clvmd startup script at config time with correct paths.
+ Fix clvmd & dmeventd builds after tree restructuring.
+ Cope with snapshot dependencies when removing a whole VG with lvremove.
+ Make man pages and tool help text consistent using | for alternative options.
+
+Version 2.02.43 - 10th November 2008
+====================================
+ Merge device-mapper into the lvm2 tree.
+ Correct prototype for --permission on lvchange and lvcreate man pages.
+ Exit with non-zero status from vgdisplay if couldn't show any requested VG.
+ Move list.c into libdevmapper and rename functions.
+ Rename a couple of variables that matched function names.
+ Use simplified x.y.z version number in libdevmapper.pc.
+ Remove ancient debian directory.
+ Split out lvm-logging.h from log.h and lvm-globals.[ch] from log.[ch].
+
+Version 2.02.42 - 26th October 2008
+===================================
+ Accept locking fallback_to_* options in the global section as documented.
+ Fix temp table activation in mirror conversions not to happen in other cmds.
+ Fix temp table in mirror conversions to use always-present error not zero.
+
+Version 2.02.41 - 17th October 2008
+===================================
+ Use temp table to set device size when converting mirrors.
+ In resume_mirror_images replace activate_lv with resume_lv as workaround.
+ Avoid overwriting in-use on-disk text metadata by forgetting MDA_HEADER_SIZE.
+ Fix snapshot monitoring library to not cancel monitoring invalid snapshot.
+ Generate man pages from templates and include version.
+ Add usrlibdir and usrsbindir to configure.
+ Fix conversion of md chunk size into sectors.
+ Free text metadata buffer after a failure writing it.
+ Fix misleading error message when there are no allocatable extents in VG.
+ Fix handling of PVs which reappeared with old metadata version.
+ Fix mirror DSO to call vgreduce with proper parameters.
+ Fix validation of --minor and --major in lvcreate to require -My always.
+ Fix release: clvmd build, vgreduce consolidate & tests, /dev/ioerror warning.
+
+Version 2.02.40 - 19th September 2008
+=====================================
+ Allow lvremove to remove LVs from VGs with missing PVs.
+ In VG with PVs missing, by default allow activation of LVs that are complete.
+ Track PARTIAL_LV and MISSING_PV flags internally.
+ Require --force with --removemissing in vgreduce to remove partial LVs.
+ No longer write out PARTIAL flag into metadata backups.
+ Treat new default activation/missing_stripe_filler "error" as an error target.
+ Remove internal partial_mode.
+ Add devices/md_chunk_alignment to lvm.conf.
+ Pass struct physical_volume to pe_align and adjust for md chunk size.
+ Store sysfs location in struct cmd_context.
+ Avoid shuffling remaining mirror images when removing one, retaining primary.
+ Add missing LV error target activation in _remove_mirror_images.
+ Prevent resizing an LV while lvconvert is using it.
+ Avoid repeatedly wiping cache while VG_GLOBAL is held in vgscan & pvscan.
+ Fix pvresize to not allow resize if PV has two metadata areas.
+ Fix setting of volume limit count if converting to lvm1 format.
+ Fix vgconvert logical volume id metadata validation.
+ Fix lvmdump metadata gather option (-m) to work correctly.
+ Fix allocation bug in text metadata format write error path.
+ Fix vgcfgbackup to properly check filename if template is used.
+ configure aborts if lcov or genhtml are missing with --enable-profiling
+ vgremove tries to remove lv snapshot first.
+ Added function lv_remove_with_dependencies().
+ Improve file descriptor leak detection to display likely culprit and filename.
+ Change clustered mirror kernel module name from cmirror to dm-log-clustered.
+ Avoid looping forever in _pv_analyze_mda_raw used by pvck.
+ Change lvchange exit status to indicate if any part of the operation failed.
+ Fix pvchange and pvremove to handle PVs without mdas.
+ Refactor _text_pv_read and always return mda list if requested.
+ Fix configure to work w/o readline unless --enable-readline used. (2.02.39)
+ Remove is_lvm_partition template which has not yet been coded.
+ Refactor pvcreate to separate parameter parsing from validation logic.
+ Check for label_write() failure in _text_pv_write().
+ Add pvcreate tests and update vgsplit tests to handle lvm1 and lvm2 metadata.
+ Fix pvchange -M1 -u to preserve existing extent locations when there's a VG.
+ Cease recognising snapshot-in-use percentages returned by early devt kernels.
+ Add backward-compatible flags field to on-disk format_text metadata.
+ Fix dmeventd monitoring libraries to link against liblvm2cmd again. (2.02.39)
+
+Version 2.02.39 - 27th June 2008
+================================
+ Enable readline by default if available.
+ Update autoconf to 2008-01-16.
+ Add $DISTCLEAN_DIRS to make.tmpl.in.
+ Create coverage reports with --enable-profiling and make lcov or lcov-dated.
+ Fix up cache for PVs without mdas after consistent VG metadata is processed.
+ Update validation of safe mirror log type conversions in lvconvert.
+ Fix lvconvert to disallow snapshot and mirror combinations.
+ Fix reporting of LV fields alongside unallocated PV segments.
+ Add --unquoted and --rows to reporting tools.
+ Add and use uninitialized_var() macro to suppress invalid compiler warnings.
+ Introduce enum for md minor sb version to suppress compiler warning.
+ Avoid undefined return value after _memlock manipulation in lvm2_run.
+ Avoid link failure if configured without --enable-cmdlib or --enable-readline.
+ Make clvmd return at once if other nodes down in a gulm or openais cluster.
+ Fix and improve readahead 'auto' calculation for stripe_size.
+ Fix lvchange output for -r auto setting if auto is already set.
+ Add test case for readahead.
+ Avoid ambiguous use of identifier error_message_produced.
+ Begin syncing configure.in for merge/unification with device-mapper.
+ Fix add_mirror_images not to dereference uninitialized log_lv upon failure.
+ Don't call openlog for every debug line output by clvmd.
+ Add --force to lvextend and lvresize.
+ Fix vgchange not to activate component mirror volumes directly.
+ Fix test directory clean up in make distclean.
+
+Version 2.02.38 - 11th June 2008
+================================
+ Fix tracking of validity of PVs with no mdas in lvmcache.
+ Fix return values for reporting commands when run with no PVs, LVs, or VGs.
+ Add omitted unlock_vg() call when sigint_caught() during vg processing.
+ Fix free_count when reading pool metadata.
+ Fix segfault when using pvcreate on a device containing pool metadata.
+ Fix segfault after _free_vginfo by remembering to remove vginfo from list.
+ Tweak detection of invalid fid after changes to PVs in VG in _vg_read.
+ Revert assuming precommitted metadata is live when activating (unnecessary).
+ Drop cached metadata for disappearing VG in vgmerge.
+ In script-processing mode, stop if any command fails.
+ Warn if command exits with non-zero status code without a prior log_error.
+ Check lv_count in vg_validate.
+ Add --nameprefixes to reporting tools for field name prefix output format.
+
+Version 2.02.37 - 6th June 2008
+===============================
+ Make clvmd-cman use a hash rather than an array for node updown info.
+ Correct config file line numbers in messages when parsing comments.
+ Drop cached metadata when renaming a VG.
+ Allow for vginfo changing during _vg_read.
+ Decode numbers in clvmd debugging output.
+ Add missing deactivation after activation failure in lvcreate -Zy.
+ When activating, if precommitted metadata is still cached, assume it's live.
+ When removing LV symlinks, skip any where the VG name is not determined.
+ Drop metadata cache if update fails in vg_revert or vg_commit.
+ Avoid spurious duplicate VG messages referring to VGs that are gone.
+ Drop dev_name_confirmed error message to debug level.
+ Fix setpriority error message to signed int.
+ Temporarily disable dmeventd mirror monitoring during lvchange --resync.
+ Refactor some vginfo manipulation code.
+ Add assertions to trap deprecated P_ and V_ lock usage.
+ Add missing mutex around clvmd lvmcache_drop_metadata library call.
+ Fix uninitialised mutex in clvmd if all daemons are not running at startup.
+ Avoid using DLM locks with LCK_CACHE type P_ lock requests.
+ When asked to drop cached committed VG metadata, invalidate cached PV labels.
+ Drop metadata cache before writing precommitted metadata instead of after.
+ Don't touch /dev in vgrename if activation is disabled.
+
+Version 2.02.36 - 29th April 2008
+=================================
+ Fix fsadm.sh to work with older blockdev, blkid & readlink binaries.
+ Fix lvresize to pass new size to fsadm when extending device.
+ Remove unused struct in clvmd-openais, and use correct node count.
+ Fix nodes list in clvmd-openais, and allow for broadcast messages.
+ Exclude VG_GLOBAL from internal concurrent VG lock counter.
+ Fix vgsplit internal counting of snapshot LVs.
+ Fix vgmerge snapshot_count when source VG contains snapshots.
+ Simplify clvmd-openais by using non-async saLckResourceLock.
+ Fix internal LV counter when a snapshot is removed.
+ Fix metadata corruption writing lvm1-formatted metadata with snapshots.
+ Fix lvconvert -m0 allocatable space check.
+
+Version 2.02.35 - 15th April 2008
+=================================
+ Drop cached VG metadata before and after committing changes to it.
+ Rename P_global to P_#global.
+ Don't attempt remote metadata backups of non-clustered VGs. (2.02.29)
+ Don't store fid in VG metadata cache to avoid clvmd segfault. (2.02.34)
+ Update vgsplit tests to verify loosening of active LV restriction.
+ Update vgsplit to only restrict split with active LVs involved in split.
+ Add lv_is_active() to determine whether an lv is active.
+
+Version 2.02.34 - 10th April 2008
+=================================
+ Improve preferred_names lvm.conf example.
+ Fix vgdisplay 'Cur LV' field to match lvdisplay output.
+ Fix lv_count report field to exclude hidden LVs.
+ Add vg_is_clustered() helper function.
+ Fix vgsplit to only move hidden 'snapshotN' LVs when necessary.
+ Update vgsplit tests for lvnames on the cmdline.
+ Update vgsplit man page to reflect lvnames on the cmdline.
+ Update vgsplit to take "-n LogicalVolumeName" on the cmdline.
+ Use clustered mirror log with pvmove in clustered VGs, if available.
+ Fix some pvmove error status codes.
+ Fix vgsplit error paths to release vg_to lock.
+ Indicate whether or not VG is clustered in vgcreate log message.
+ Mention default --clustered setting in vgcreate man page.
+ Add config file overrides to clvmd when it reads the active LVs list.
+ Fix vgreduce to use vg_split_mdas to check sufficient mdas remain.
+ Add (empty) orphan VGs to lvmcache during initialisation.
+ Fix orphan VG name used for format_pool.
+ Create a fid for internal orphan VGs.
+ Update lvmcache VG lock state for all locking types now.
+ Fix output if overriding command_names on cmdline.
+ Add detection of clustered mirror log capability.
+ Add check to vg_commit() ensuring VG lock held before writing new VG metadata.
+ Add validation of LV name to pvmove -n.
+ Make clvmd refresh the context correctly when lvm.conf is updated.
+ Add some basic internal VG lock validation.
+ Add per-command flags to control which commands use the VG metadata cache.
+ Fix vgsplit locking of new VG (2.02.30).
+ Avoid erroneous vgsplit error message for new VG. (2.02.29)
+ Suppress duplicate message when lvresize fails because of invalid vgname.
+ Cache VG metadata internally while VG lock is held.
+ Fix redundant lvresize message if vg doesn't exist.
+ Fix another allocation bug with clvmd and large node IDs.
+ Add find_lv_in_lv_list() and find_pv_in_pv_list().
+ Fix uninitialised variable in clvmd that could cause odd hangs.
+ Add vgmerge tests.
+ Add pvseg_is_allocated() for identifying a PV segment allocated to a LV.
+ Add list_move() for moving elements from one list to another.
+ Add 'is_reserved_lvname()' for identifying hidden LVs.
+ Correct command name in lvmdiskscan man page.
+ clvmd no longer crashes if it sees nodeids over 50.
+ Fix potential deadlock in clvmd thread handling.
+ Refactor text format initialisation into _init_text_import.
+ Escape double quotes and backslashes in external metadata and config data.
+ Add functions for escaping double quotes in strings.
+ Rename count_chars_len to count_chars.
+ Use return_0 in a couple more places.
+ Correct a function name typo in _line_append error message.
+ Include limits.h in clvmd so it compiles with newer headers.
+ Add VirtIO disks (virtblk) to filters.
+ Fix resetting of MIRROR_IMAGE and VISIBLE_LV after removal of LV. (2.02.30)
+ Fix remove_layer_from_lv to empty the LV before removing it. (2.02.30)
+ Add missing no-longer-used segs_using_this_lv test to check_lv_segments.
+ Remove redundant non-NULL tests before calling free in clvmd.c.
+ Avoid a compiler warning: make is_orphan's parameter const.
+ Fix lvconvert detection of mirror conversion in progress. (2.02.30)
+ Avoid automatic lvconvert polldaemon invocation when -R specified. (2.02.30)
+ Fix 'pvs -a' to detect VGs of PVs without metadata areas.
+ Divide up internal orphan volume group by format type.
+ Update usage message for clvmd.
+ Fix clvmd man page not to print <br> and clarified debug options.
+ Fix lvresize to support /dev/mapper prefix in the LV name.
+ Fix unfilled parameter passed to fsadm from lvresize.
+ Update fsadm to call lvresize if the partition size differs (with option -l).
+ Fix fsadm to support VG/LV names.
+
+Version 2.02.33 - 31st January 2008
+===================================
+ Fix mirror log name construction during lvconvert. (2.02.30)
+ Make monitor_dev_for_events recurse through the stack of LVs.
+ Clean up some more compiler warnings.
+ Some whitespace tidy-ups.
+ Use stack return macros throughout.
+ Rely upon internally-cached PV labels while corresponding VG lock is held.
+
+Version 2.02.32 - 29th January 2008
+===================================
+ Fix two check_lv_segments error messages to show whole segment.
+ Refactor mirror log attachment code.
+ Fix internal metadata corruption in lvchange --resync. (2.02.30)
+ Fix new parameter validation in vgsplit and test mode. (2.02.30)
+ Remove redundant cnxman-socket.h file from clvmd directory.
+ Fix pvs, vgs, lvs error exit status on some error paths.
+
+Version 2.02.31 - 19th January 2008
+===================================
+ Fix lvcreate --nosync not to wait for non-happening sync. (2.02.30)
+ Add very_verbose lvconvert messages.
+ Avoid readahead error message with default setting of lvcreate -M1. (2.02.29)
+
+Version 2.02.30 - 17th January 2008
+===================================
+ Set default readahead to twice maximium stripe size.
+ Reinstate VG extent size and stripe size defaults (halved). (2.02.29)
+ Add lists of stacked LV segments using each LV to the internal metadata.
+ Change vgsplit -l (for unimplemented --list) into --maxlogicalvolumes.
+ Fix process_all_pvs to detect non-orphans with no MDAs correctly.
+ Don't use block_on_error with mirror targets version 1.12 and above.
+ Update vgsplit to accept vgcreate options when new VG is destination.
+ Update vgsplit to accept existing VG as destination.
+ lvconvert waits for completion of initial sync by default.
+ Refactor vgcreate for parameter validation and add tests.
+ Add new convert_lv field to lvs output.
+ Print warning when lvm tools are running as non-root.
+ Add snapshot dmeventd library (enables dmeventd snapshot monitoring).
+ Prevent pvcreate from overwriting MDA-less PVs belonging to active VGs.
+ Fix a segfault if using pvs with --all argument. (2.02.29)
+ Update --uuid argument description in man pages.
+ Fix vgreduce PV list processing not to process every PV in the VG. (2.02.29)
+ Extend lvconvert to use polldaemon.
+ Add support for stacked mirrors.
+ Major restructuring of pvmove and lvconvert layer manipulation code.
+ Replace tools/fsadm with scripts/fsadm.sh.
+ Append fields to report/pvsegs_cols_verbose.
+ Permit LV segment fields with PV segment reports.
+ Add seg_start_pe and seg_pe_ranges to reports.
+
+Version 2.02.29 - 5th December 2007
+===================================
+ Make clvmd backup vg metadata on remote nodes.
+ Refactor pvmove allocation code.
+ Decode cluster locking state in log message.
+ Change file locking state messages from debug to very verbose.
+ Fix --addtag to drop @ prefix from name.
+ Stop clvmd going haywire if a pre_function fails.
+ Convert some vg_reads into vg_lock_and_reads.
+ Avoid nested vg_reads when processing PVs in VGs and fix associated locking.
+ Accept sizes with --readahead argument.
+ Store size arguments as sectors internally.
+ Attempt to remove incomplete LVs with lvcreate zeroing/activation problems.
+ Add read_ahead activation code.
+ Add activation/readahead configuration option and FMT_RESTRICTED_READAHEAD.
+ Extend readahead arg to accept "auto" and "none".
+ Add lv_read_ahead and lv_kernel_read_ahead fields to reports and lvdisplay.
+ Prevent lvconvert -s from using same LV as origin and snapshot.
+ Fix human-readable output of odd numbers of sectors.
+ Add pv_mda_free and vg_mda_free fields to reports for raw text format.
+ Add LVM2 version to 'Generated by' comment in metadata.
+ Show 'not usable' space when PV is too large for device in pvdisplay.
+ Ignore and fix up any excessive device size found in metadata.
+ Fix error message when fixing up PV size in lvm2 metadata (2.02.11).
+ Fix orphan-related locking in pvdisplay and pvs.
+ Fix missing VG unlocks in some pvchange error paths.
+ Add some missing validation of VG names.
+ Rename validate_vg_name() to validate_new_vg_name().
+ Change orphan lock to VG_ORPHANS.
+ Change format1 to use ORPHAN as orphan VG name.
+ Convert pvchange, pvdisplay, pvscan to use is_orphan()
+ Add is_orphan_vg() and change all hard-coded checks to use it.
+ Detect md superblocks version 1.0, 1.1 and 1.2.
+ Add _alloc_pv() and _free_pv() from _pv_create() code and fix error paths.
+ Add pv_dev_name() to access PV device name.
+ Add const attributes to pv accessor functions.
+ Refactor vg_add_snapshot() and lv_create_empty().
+ Handle new sysfs subsystem/block/devices directory structure.
+ Run test with LVM_SYSTEM_DIR pointing to private root and /dev dirs.
+ Fix a bug in lvm_dump.sh checks for lvm/dmsetup binaries.
+ Fix underquotations in lvm_dump.sh.
+ Refactor lvcreate stripe and mirror parameter validation.
+ Print --help output to stdout, not stderr.
+ After a cmdline processing error, don't print help text but suggest --help.
+ Add %PVS extents option to lvresize, lvextend, and lvcreate.
+ Add 'make check' to run tests in new subdirectory 'test'.
+ Moved the obsolete test subdirectory to old-tests.
+ Cope with relative paths in configure --with-dmdir.
+ Remove no-longer-correct restrictions on PV arg count with stripes/mirrors.
+ Fix strdup memory leak in str_list_dup().
+ Link with -lpthread when static SELinux libraries require that.
+ Detect command line PE values that exceed their 32-bit range.
+ Include strerror string in dev_open_flags' stat failure message.
+ Move guts of pvresize into library.
+ Avoid error when --corelog is provided without --mirrorlog. (2.02.28)
+ Correct --mirrorlog argument name in man pages (not --log).
+ Clear MIRROR_NOTSYNCED LV flag when converting from mirror to linear.
+ Modify lvremove to prompt for removal if LV active on other cluster nodes.
+ Add '-f' to vgremove to force removal of VG even if LVs exist.
+
+Version 2.02.28 - 24th August 2007
+==================================
+ Fix clvmd logging so you can get lvm-level debugging out of it.
+ Introduce VG_GLOBAL lock type for vgscan/pvscan to trigger clvmd -R.
+ Change locking_flags from int to uint32_t.
+ Fix clvmd -R, so it fully refreshes the caches.
+ Change lvconvert_mirrors to use mirror segtype not striped.
+ Fix lvconvert_mirrors detection of number of existing mirrors.
+ Clean up numerous compiler warnings that appeared in recent releases.
+ Remove several unused parameters from _allocate().
+ Only permit --force, --verbose and --debug arguments to be repeated.
+ Fix inconsistent licence notices: executables are GPLv2; libraries LGPLv2.1.
+ Move guts of vgremove and lvremove into library, including yes_no_prompt.
+ Allow clvmd debug to be turned on in a running daemon using clvmd -d [-C].
+ Update to use autoconf 2.61, while still supporting 2.57.
+ Add more cluster info to lvmdump.
+ Add further const attributes throughout.
+ Add support for renaming mirrored LVs.
+ Factor out core of lvrename() to library function.
+ Add --mirrorlog argument to specify log type for mirrors.
+ Don't attempt to monitor devices if their creation failed in _lv_activate.
+ Don't leak a file descriptor in fcntl_lock_file() when fcntl fails.
+ Replace create_dir with dm_create_dir.
+ Detect stream write failure reliably with lvm_fclose using dm_fclose.
+ Fix clvmd if compiled with gulm support. (2.02.26)
+ Fix lvdisplay man page to say LV size is reported in sectors, not KB.
+ Add vg_lock_and_read() external library function.
+ Fix loading of persistent cache if cache_dir is used. (2.02.23)
+ Reduce _compare_paths lstat error message from log_error to log_very_verbose.
+ Create util.h with last_path_component replacing strdup + basename.
+ Use gcc's printf attribute wherever possible.
+ In _line_append, use "sizeof buf - 1" rather than equivalent "4095".
+ Introduce is_same_inode macro, now including a comparison of st_dev.
+ Don't leak a file descriptor in _lock_file() when flock fails.
+ Add SUN's LDOM virtual block device (vdisk) and ps3disk to filters.
+ Split metadata-external.h out from metadata.h for the tools to use.
+
+Version 2.02.27 - 17th July 2007
+================================
+ Fix snapshot cow area deactivation if origin is not active. (2.02.13)
+ Fix configure libdevmapper.h check when --with-dmdir is used.
+ Turn _add_pv_to_vg() into external library function add_pv_to_vg().
+ Add pv_by_path() external library function.
+ Tidy clvmd-openais of redundant bits, and improve an error report.
+ Cope with find_seg_by_le() failure in check_lv_segments().
+ Call dev_iter_destroy() if _process_all_devs() is interrupted by sigint.
+ Add vg_mda_count and pv_mda_count columns to reports.
+ Fix dumpconfig to use log_print instead of stdout directly.
+ Remove unused parameter 'fid' from _add_pv_to_vg.
+ Add kernel and device-mapper targets versions to lvmdump.
+ Replace BSD (r)index with C89 str(r)chr.
+ Handle vgsplit of an entire VG as a vgrename.
+ Reinitialise internal lvmdiskscan variables when called repeatedly.
+ Fix missing lvm_shell symbol in lvm2cmd library. (2.02.23)
+ Add vg_status function and clean up vg->status in tools directory.
+ Add --ignoremonitoring to disable all dmeventd interaction.
+ Remove get_ prefix from get_pv_* functions.
+ clvmd-openais now uses cpg_local_get() to get nodeid, rather than Clm.
+ Print warnings to stderr instead of stdout.
+
+Version 2.02.26 - 15th June 2007
+================================
+ Update vgcfgrestore man page.
+ Allow keyboard interrupt during user prompts when appropriate.
+ Remove unused clvmd system-lv code.
+ Replace many physical_volume struct dereferences with new get_pv_* functions.
+ Suppress a benign compile-time warning.
+ Convert find_pv_in_vg_by_uuid and pv_create to use PV handles.
+ Add wrappers to some functions in preparation for external LVM library.
+ Add -f to vgcfgrestore to list metadata backup files.
+ Add vg_check_status to consolidate vg status checks and error messages.
+ Add pvdisplay --maps implementation.
+ Remove unsupported LVM1 options from vgcfgrestore man page.
+ Update vgcfgrestore man page to show mandatory VG name.
+ Update vgrename man page to include UUID and be consistent with lvrename.
+ Add (experimental) OpenAIS support to clvmd.
+ Fix deactivation code to follow dependencies and remove symlinks.
+ Fix and clarify vgsplit error messages.
+ Fix a segfault in device_is_usable() if a device has no table.
+ Add some more debug messages to clvmd startup.
+ Misc clvmd cleanups.
+
+Version 2.02.25 - 27th April 2007
+=================================
+ Fix get_config_uint64() to read a 64-bit value not a 32-bit one.
+ Add -Wformat-security and change one fprintf() to fputs().
+ Move regex functions into libdevmapper.
+ Change some #include lines to search only standard system directories.
+ Add devices/preferred_names config regex list for displayed device names.
+ Free a temporary dir string in fcntl_lock_file() after use.
+ Fix a dm_pool_destroy() in matcher_create().
+ Introduce goto_bad macro.
+ Fix warnings on x86_64 involving ptrdiff_t in log_error messages.
+ Update pvck to include text metadata area and record detection.
+ Add support functions for token counting in config file extracts.
+ Update pvck to read labels on disk, with --labelsector parameter.
+ Add count_chars and count_chars_len functions.
+ Add /sys/block listings to lvm_dump.sh.
+ Make lvm_dump.sh list /dev recursively.
+ Fix thread race in clvmd.
+ Add scan_sector param to label_read and _find_labeller.
+ Make clvmd cope with quorum devices.
+ Add extra internal error checking to clvmd.
+ Add dev_read_circular.
+ Add pvck command stub.
+ Update lists of attribute characters in man pages.
+ Change cling alloc policy attribute character from 'C' to l'.
+ Fix creation and conversion of mirrors with tags.
+ Fix vgsplit for lvm1 format (set and validate VG name in PVs metadata).
+ Split metadata areas in vgsplit properly.
+
+Version 2.02.24 - 19th March 2007
+=================================
+ Fix processing of exit status in init scripts
+ Fix vgremove to require at least one vg argument.
+ Fix reading of striped LVs in LVM1 format.
+ Flag nolocking as clustered so clvmd startup sees clustered LVs. (2.02.10)
+ Add a few missing pieces of vgname command line validation.
+ Support the /dev/mapper prefix on most command lines.
+
+Version 2.02.23 - 8th March 2007
+================================
+ Fix vgrename active LV check to ignore differing vgids.
+ Remove no-longer-used uuid_out parameter from activation info functions.
+ Fix two more segfaults if an empty config file section encountered.
+ Move .cache file into a new /etc/lvm/cache directory by default.
+ Add devices/cache_dir & devices/cache_file_prefix, deprecating devices/cache.
+ Create directory in fcntl_lock_file() if required.
+ Exclude readline support from lvm.static.
+ Fix a leak in a reporting error path (2.02.19).
+
+Version 2.02.22 - 13th February 2007
+====================================
+ Correct -b and -P on a couple of man pages.
+ Add global/units to example.conf.
+ Fix loading of segment_libraries.
+ If a PV reappears after it was removed from its VG, make it an orphan.
+ Don't update metadata automatically if VGIDs don't match.
+ Fix some vgreduce --removemissing command line validation.
+
+Version 2.02.21 - 30th January 2007
+===================================
+ Add warning to lvm2_monitoring_init_rhel4 if attempting to stop monitoring.
+ Fix vgsplit to handle mirrors.
+ Reorder fields in reporting field definitions.
+ Fix vgs to treat args as VGs even when PV fields are displayed.
+ Fix md signature check to handle both endiannesses.
+
+Version 2.02.20 - 25th January 2007
+===================================
+ dmeventd mirror sets ignore_suspended_devices and avoids scanning mirrors.
+ Add devices/ignore_suspended_devices to ignore suspended dm devices.
+ Add some missing close() and fclose() return code checks.
+ Fix exit statuses of reporting tools (2.02.19).
+ Add init script for dmeventd monitoring.
+ lvm.static no longer interacts with dmeventd unless explicitly asked to.
+ Add field definitions to report help text.
+ Remove unnecessary cmd arg from target_*monitor_events().
+ Add private variable to dmeventd shared library interface.
+ Long-lived processes write out persistent dev cache in refresh_toolcontext().
+ Fix refresh_toolcontext() always to wipe persistent device filter cache.
+ Add is_long_lived to toolcontext.
+ Add --clustered to man pages.
+ Streamline dm_report_field_* interface.
+ Change remaining dmeventd terminology 'register' to 'monitor'.
+ Update reporting man pages.
+ No longer necessary to specify alignment type for report fields.
+
+Version 2.02.19 - 17th January 2007
+===================================
+ Fix a segfault if an empty config file section encountered.
+ Move basic reporting functions into libdevmapper.
+ Fix partition table processing after sparc changes (2.02.16).
+ Fix cmdline PE range processing segfault (2.02.13).
+ Some libdevmapper-event interface changes.
+ Report dmeventd mirror monitoring status.
+ Fix dmeventd mirror status line processing.
+
+Version 2.02.18 - 11th January 2007
+===================================
+ Revised libdevmapper-event interface for dmeventd.
+ Remove dmeventd mirror status line word limit.
+ Use CFLAGS when linking so mixed sparc builds can supply -m64.
+ Prevent permission changes on active mirrors.
+ Print warning instead of error message if lvconvert cannot zero volume.
+ Add snapshot options to lvconvert man page.
+ dumpconfig accepts a list of configuration variables to display.
+ Change dumpconfig to use --file to redirect output to a file.
+ Avoid vgreduce error when mirror code removes the log LV.
+ Remove 3 redundant AC_MSG_RESULTs from configure.in.
+ Free memory in _raw_read_mda_header() error paths.
+ Fix ambiguous vgsplit error message for split LV.
+ Fix lvextend man page typo.
+ Add configure --with-dmdir to compile against a device-mapper source tree.
+ Use no flush suspending for mirrors.
+ Add dmeventd_mirror register_mutex, tidy initialisation & add memlock.
+ Fix create mirror with name longer than 22 chars.
+ Fix some activate.c prototypes when compiled without devmapper.
+ Fix dmeventd mirror to cope if monitored device disappears.
+
+Version 2.02.17 - 14th December 2006
+====================================
+ Add missing pvremove error message when device doesn't exist.
+ When lvconvert allocates a mirror log, respect parallel area constraints.
+ Use loop to iterate through the now-ordered policy list in _allocate().
+ Check for failure to allocate just the mirror log.
+ Introduce calc_area_multiple().
+ Support mirror log allocation when there is only one PV: area_count now 0.
+ Fix detection of smallest area in _alloc_parallel_area() for cling policy.
+ Add manpage entry for clvmd -T
+ Fix gulm operation of clvmd, including a hang when doing lvchange -aey
+ Fix hang in clvmd if a pre-command failed.
+
+Version 2.02.16 - 1st December 2006
+===================================
+ Fix VG clustered read locks to use PR not CR.
+ Adjust some alignments for ia64/sparc.
+ Fix mirror segment removal to use temporary error segment.
+ Always compile debug logging into clvmd.
+ Add startup timeout to RHEL4 clvmd startup script.
+ Add -T (startup timeout) switch to clvmd.
+ Improve lvm_dump.sh robustness.
+ Update lvm2create_initrd to support gentoo.
+
+Version 2.02.15 - 21st November 2006
+====================================
+ Fix clvmd_init_rhel4 line truncation (2.02.14).
+ Install lvmdump by default.
+ Fix check for snapshot module when activating snapshot.
+ Fix pvremove error path for case when PV is in use.
+ Warn if certain duplicate config file entries are seen.
+ Enhance lvm_dump.sh for sysreport integration and add man page.
+ Fix --autobackup argument which could never disable backups.
+ Fix a label_verify error path.
+
+Version 2.02.14 - 10th November 2006
+====================================
+ Fix adjusted_mirror_region_size() to handle 64-bit size.
+ Add some missing bounds checks on 32-bit extent counters.
+ Add Petabyte and Exabyte support.
+ Fix lvcreate error message when 0 extents requested.
+ lvremove man page: volumes must be cluster inactive before being removed.
+ Protect .cache manipulations with fcntl locking.
+ Change .cache timestamp comparisons to use ctime.
+ Fix mirror log LV writing to set all bits in whole LV.
+ Fix clustered VG detection and default runlevels in clvmd_init_rhel4.
+ Fix high-level free space check for partial allocations.
+
+Version 2.02.13 - 27th October 2006
+===================================
+ Add couple of missing files to tools/Makefile CLEAN_TARGETS.
+ When adding snapshot leave cow LV mapped device active after zeroing.
+ Fix a clvmd debug message.
+ Add dev_flush() to set_lv().
+ Add lvchange --resync.
+ Perform high-level free space check before each allocation attempt.
+ Don't allow a node to remove an LV that's exclusively active on anther node.
+ Cope if same PV is included more than once in cmdline PE range list.
+ Set PV size to current device size if it is found to be zero.
+ Add segment parameter to target_present functions.
+
+Version 2.02.12 - 16th October 2006
+===================================
+ Fix pvdisplay to use vg_read() for non-orphans.
+ Fall back to internal locking if external locking lib is missing or fails.
+ Retain activation state after changing LV minor number with --force.
+ Propagate clustered flag in vgsplit and require resizeable flag.
+
+Version 2.02.11 - 12th October 2006
+===================================
+ Add clvmd function to return the cluster name. not used by LVM yet.
+ Add cling allocation policy.
+ Change _check_contiguous() to use _for_each_pv().
+ Extend _for_each_pv() to allow termination without error.
+ Abstract _is_contiguous().
+ Remove duplicated pv arg from _check_contiguous().
+ Accept regionsize with lvconvert.
+ Add report columns with underscore before field names ending 'size'.
+ Correct regionsize default on lvcreate man page (MB).
+ Fix clvmd bug that could cause it to die when a node with a long name crashed.
+ Add device size to text metadata.
+ Fix format_text mda_setup pv->size and pv_setup pe_count calculations.
+ Fix _for_each_pv() for mirror with core log.
+ Add lvm_dump.sh script to create a tarball of debugging info from a system.
+ Capture error messages in clvmd and pass them back to the user.
+ Remove unused #defines from filter-md.c.
+ Make clvmd restart init script wait until clvmd has died before starting it.
+ Add -R to clvmd which tells running clvmds to reload their device cache.
+ Add LV column to reports listing kernel modules needed for activation.
+ Show available fields if report given invalid field. (e.g. lvs -o list)
+ Add timestamp functions with --disable-realtime configure option.
+ Add %VG, %LV and %FREE suffices to lvcreate/lvresize --extents arg.
+ Fix two potential NULL pointer derefs in error cases in vg_read().
+ Separate --enable-cluster from locking lib options in lvmconf.sh.
+ Add a missing comma in lvcreate man page.
+
+Version 2.02.10 - 19th September 2006
+=====================================
+ Fix lvconvert mirror change case detection logic.
+ Fix mirror log detachment so it correctly becomes a standalone LV.
+ Extend _check_contiguous() to detect single-area LVs.
+ Include mirror log (untested) in _for_each_pv() processing.
+ Use MIRROR_LOG_SIZE constant.
+ Remove struct seg_pvs from _for_each_pv() to generalise.
+ Avoid adding duplicates to list of parallel PVs to avoid.
+ Fix several incorrect comparisons in parallel area avoidance code.
+ Fix segment lengths when flattening existing parallel areas.
+ Log existing parallel areas prior to allocation.
+ Fix mirror log creation when activation disabled.
+ Don't attempt automatic recovery without proper locking.
+ When using local file locking, skip clustered VGs.
+ Add fallback_to_clustered_locking and fallback_to_local_locking parameters.
+ lvm.static uses built-in cluster locking instead of external locking.
+ Don't attempt to load shared libraries if built statically.
+ Change default locking_lib to liblvm2clusterlock.so.
+ Add skip_dev_dir() to process command line VGs.
+ Stop clvmd complaining about nodes that have left the cluster.
+ Move lvm_snprintf(), split_words() and split_dm_name() into libdevmapper.
+ Add lvconvert man page.
+ Add mirror options to man pages.
+ Prevent mirror renames.
+ Move CMDLIB code into separate file and record whether static build.
+
+Version 2.02.09 - 17th August 2006
+==================================
+ Fix PE_ALIGN for pagesize over 32KB.
+ Separate out LVM1_PE_ALIGN and pe_align().
+ Add lvm_getpagesize wrapper.
+ Add --maxphysicalvolumes to vgchange.
+
+Version 2.02.08 - 15th August 2006
+==================================
+ Add checks for duplicate LV name, lvid and PV id before writing metadata.
+ Report all sanity check failures, not just the first.
+ Fix missing lockfs on first snapshot creation.
+ Add unreliable --trustcache option to reporting commands.
+ Fix locking for mimage removal.
+ Fix clvmd_init_rhel4 'status' exit code.
+
+Version 2.02.07 - 17th July 2006
+================================
+ Fix activation logic in lvchange --persistent.
+ Don't ignore persistent minor numbers when activating.
+ Use RTLD_GLOBAL when loading shared libraries.
+ Add some forgotten memlock checks to _vg_read to protect against full scans.
+ Add mutex to dmeventd_mirror to avoid concurrent execution.
+ Fix vgreduce --removemissing to return success if VG is already consistent.
+ Fix return code if VG specified on command line is not found.
+ Fix PV tools to include orphaned PVs in default output again.
+ Fixed unaligned access when using clvm.
+ Fix an extra dev_close in a label_read error path.
+ Append patches to commit emails.
+ Fix target_register_events args.
+ Prevent snapshots of mirrors.
+ Add DISTCLEAN_TARGETS to make template for configure.h.
+ More fixes to error paths.
+ Fix lvcreate corelog validation.
+ Add --config for overriding most config file settings from cmdline.
+ Quote arguments when printing command line.
+ Remove linefeed from 'initialising logging' message.
+ Add 'Completed' debug message.
+ Don't attempt library exit after reloading config files.
+ Always compile with libdevmapper, even if device-mapper is disabled.
+
+Version 2.02.06 - 12th May 2006
+===============================
+ Propagate --monitor around cluster.
+ Add --monitor to vgcreate and lvcreate to control dmeventd registration.
+ Filter LCK_NONBLOCK in clvmd lock_vg.
+ Add --nosync to lvcreate with LV flag NOTSYNCED.
+ Use mirror's uuid for a core log.
+ Add mirror log fault-handling policy.
+ Improve mirror warning messages and tidy dmeventd syslog output.
+ Propagate nosync flag around cluster.
+ Allow vgreduce to handle mirror log failures.
+ Add --corelog to lvcreate and lvconvert.
+ Create a log header for replacement in-sync mirror log.
+ Use set_lv() and dev_set() to wipe sections of devices.
+ Add mirror_in_sync() flag to avoid unnecessary resync on activation.
+ Add mirror_library description to example.conf.
+ Fix uuid_from_num() buffer overrun.
+ Make SIZE_SHORT the default for display_size().
+ Fix some memory leaks in error paths found by coverity.
+ Use C99 struct initialisers.
+ Move DEFS into configure.h.
+ Clean-ups to remove miscellaneous compiler warnings.
+ Improve stripe size validation.
+ Increase maximum stripe size limit to physical extent size for lvm2 metadata.
+ Fix activation code to check for pre-existing mirror logs.
+ Tighten region size validation.
+ Ignore empty strings in config files.
+ Require non-zero regionsize and document parameter on lvcreate man page.
+ Invalidate cache if composition of VG changed externally.
+
+Version 2.02.05 - 21st April 2006
+=================================
+ Fix vgid string termination in recent cache code.
+
+Version 2.02.04 - 19th April 2006
+=================================
+ Check for libsepol.
+ Add some cflow & scope support.
+ Separate out DEFS from CFLAGS.
+ Remove inlines and use unique function names.
+
+Version 2.02.03 - 14th April 2006
+=================================
+ vgrename accepts vgid and exported VG.
+ Add --partial to pvs.
+ When choosing between identically-named VGs, also consider creation_host.
+ Provide total log suppression with 2.
+ Fix vgexport/vgimport to set/reset PV exported flag so pv_attr is correct.
+ Add vgid to struct physical_volume and pass with vg_name to some functions.
+ If two or more VGs are found with the same name, use one that is not exported.
+ Whenever vgname is captured, also capture vgid and whether exported.
+ Remove an incorrect unlock_vg() from process_each_lv().
+ Update extent size information in vgchange and vgcreate man pages.
+ Introduce origin_from_cow() and lv_is_visible().
+ pvremove without -f now fails if there's no PV label.
+ Support lvconvert -s.
+ Suppress locking library load failure message if --ignorelockingfailure.
+ Propagate partial mode around cluster.
+ Fix archive file expiration.
+ Fix dmeventd build.
+ clvmd now uses libcman rather than cman ioctls.
+ clvmd will allow new cman to shutdown on request.
+
+Version 2.02.02 - 7th February 2006
+===================================
+ Add %.so: %.a make template rule.
+ Switchover library building to use LIB_SUFFIX.
+ Only do lockfs filesystem sync when suspending snapshots.
+ Always print warning if activation is disabled.
+ vgreduce removes mirror images.
+ Add --mirrorsonly to vgreduce.
+ vgreduce replaces active LVs with error segment before removing them.
+ Set block_on_error parameter if available.
+ Add target_version.
+ Add details to format1 'Invalid LV in extent map' error message.
+ Fix lvscan snapshot full display.
+ Bring lvdisplay man page example into line.
+ Add mirror dmeventd library.
+ Add some activation logic to remove_mirror_images().
+ lvconvert can remove specified PVs from a mirror.
+ lvconvert turns an existing LV into a mirror.
+ Allow signed mirrors arguments.
+ Move create_mirror_log() into toollib.
+ Determine parallel PVs to avoid with ALLOC_NORMAL allocation.
+ Fix lv_empty.
+
+Version 2.02.01 - 23rd November 2005
+====================================
+ Fix lvdisplay cmdline to accept snapshots.
+ Fix open RO->RW promotion.
+ Fix missing vg_revert in lvcreate error path.
+
+Version 2.02.00 - 10th November 2005
+====================================
+ Extend allocation areas to avoid overflow with contiguous with other PVs.
+ Stop lvcreate attempting to wipe zero or error segments.
+ Added new lvs table attributes.
+ Separated out activation preload.
+ Moved activation functions into libdevmapper.
+ Fixed build_dm_name.
+ Add return macros.
+ Added xen xvd devices.
+ Clear up precommitted metadata better.
+ A pvresize implementation.
+ Fix contiguous allocation when there are no preceding segments.
+ Add mirror_seg pointer to lv_segment struct.
+ Only keep a device open if it's known to belong to a locked VG.
+ Fix lvdisplay to show all mirror destinations.
+ Replacement suspend code using libdevmapper dependency tree.
+ Add DEFS to make.tmpl.
+ Use dm_is_dm_major instead of local copy.
+ Allow mapped devices to be used as PVs.
+ Move set_selinux_context into libdevmapper.
+ Fix automatic text metadata buffer expansion (using macro).
+ Cache formatted text metadata buffer between metadata area writes.
+ Add pe_start field to pvs.
+ Add 'LVM-' prefix to uuids.
+ Split lv_segment_area from lv_segment to permit extension.
+ Replacement deactivation code using libdevmapper dependency tree.
+ Simplify dev_manager_info().
+ Attempt to load missing targets using modprobe.
+ Add -a to lvscan.
+ Move mknodes into libdevmapper.
+ Move bitset, hash, pool and dbg_malloc into libdevmapper.
+
+Version 2.01.15 - 16th October 2005
+===================================
+ Refuse to run pvcreate/pvremove on devices we can't open exclusively.
+ Use ORPHAN lock definition throughout.
+ Validate chunksize in lvcreate.
+ Reduce chunksize limit to 512k.
+ Fix chunksize field in reports.
+ Don't hide snapshots from default 'lvs' output.
+ Add is_dm_major() for use in duplicate device detection in lvmcache_add().
+ Really switch device number in lvmcache when it says it is doing so.
+ Option for bitset memory allocation using malloc as well as pool.
+ Don't assume exactly two mirrors when parsing mirror status.
+ Suppress fsync() error message on filesystems that don't support it.
+ Fix yes_no_prompt() error handling.
+ Add lvm.conf comment warning against multiple filter lines.
+ Tidy lvmconf.sh.
+ Add format1 dev_write debug messages.
+ Add clustered VG attribute to report.
+ Move lvconvert parameters into struct lvconvert_params.
+ Add clustered VG flag to LV lock requests.
+ Change LV locking macros to take lv instead of lvid.
+ Prepend 'cluster' activation parameter to mirror log when appropriate.
+ Pass exclusive flag to lv_activate and on to target activation code.
+ Prevent snapshot creation in a clustered VG for now.
+ Factor out adjusted_mirror_region_size() and generate_log_name_format().
+ Move compose_log_line() into mirror directory.
+ Factor out _get_library_path().
+ Don't kill idling clvmd threads.
+ clvmd no longer takes out locks for non-clustered LVs.
+ Recognise ATA over Ethernet (aoe) devices.
+
+Version 2.01.14 - 4th August 2005
+=================================
+ Fix lvconvert PV parameter in help string.
+ Prevent snapshots getting activated in a clustered VG.
+ Separate out _build_dev_string.
+ Move zero_lv to toollib.
+ Fix pool format handler to work with pv segment code.
+
+Version 2.01.13 - 13th July 2005
+================================
+ Fix pvmove segment splitting.
+ Abstract vg_validate.
+ Only make one attempt at contiguous allocation.
+ Fix lvm1 format metadata read.
+ Fix lvm1 format non-mirror lvcreate.
+
+Version 2.01.12 - 14th June 2005
+================================
+ Various allocation-related pvmove fixes.
+ Log an error if clvmd can't resolve a host name got from CCS.
+ Fix potential spin loop in clvmd.
+
+Version 2.01.11 - 13th June 2005
+================================
+ Added lvmconf.sh.
+ Use matchpathcon mode parameter.
+ Don't defer closing dead FDs in clvmd.
+ Remove hard-coded 64k text metadata writing restriction.
+ Make VG name restrictions consistent.
+ Introduce lvconvert. So far only removes mirror images.
+ Allow mirror images to be resized.
+ Allow mirror images to have more than one segment.
+ Centralise restrictions on LV names.
+ Always insert an intermediate layer for mirrors.
+ Suppress hidden LVs from reports unless --all is given.
+ Use square brackets for hidden LVs in reports.
+ Allow the creation of mirrors with contiguous extents.
+ Always perform sanity checks against metadata before committing it to disk.
+ Split lv_extend into two steps: choosing extents + allocation to LV(s).
+ Add mirror log region size to metadata.
+ Use list_iterate_items throughout and add list*back macros.
+ Introduce seg_ macros to access areas.
+ Add segtype_is_ macros.
+ Support tiny metadata areas for pool conversions.
+ Mirror activation handles disk log as well as core.
+ Activation code recognises mirror log dependency.
+ Add mirror_log and regionsize fields to report.
+ Fix non-orphan pvchange -u.
+ Fix vgmerge to handle duplicate LVIDs.
+ Move archiver code from tools into library.
+ vgscan/change/display/vgs automatically create metadata backups if needed.
+ Merge cloned allocation functions.
+ Fix contiguous allocation policy with linear.
+ Cope with missing format1 PVs again.
+ Remove lists of free PV segments.
+ Simplify pv_maps code and remove slow bitset algorithm.
+ Red-Hat-ify the clvmd rhel4 initscript.
+ %Zu->%zu
+ Fix loopfiles alias alloc & mem debugging.
+ Un-inline dbg_strdup.
+ lv_reduce tidying.
+ Remove some unnecessary parameters.
+ Introduce seg_is macros.
+
+Version 2.01.10 - 3rd May 2005
+==============================
+ Don't create backup and archive dirs till needed.
+ Reinstate full PV size when removing from VG.
+ Support loopfiles for testing.
+ Tidy lv_segment interface.
+ pv_segment support.
+ vgchange --physicalextentsize
+ Internal snapshot restructuring.
+ Remove unused internal non-persistent snapshot option.
+ Allow offline extension of snapshot volumes.
+ Move from 2-step to 3-step on-disk metadata commit.
+ Scan ramdisks too and allow non-O_DIRECT fallback.
+ Annotate, tidy and extend list.h.
+ Alignment tidying.
+ Make clvmd work around some "bugs" in gulm's node state notifications.
+ Tidy clvmd's SIGHUP handler
+
+Version 2.01.09 - 4th April 2005
+================================
+ Add --ignorelockingfailure to vgmknodes.
+ clvmd: Don't allow user operations to start until the lvm thread is fully up.
+ clvmd-gulm: set KEEPALIVE on sockets.
+
+Version 2.01.08 - 22nd March 2005
+=================================
+ Add clustered attribute so vgchange can identify clustered VGs w/o locking.
+ Improve detection of external changes affecting internal cache.
+ Add 'already in device cache' debug message.
+ Add -a to pvdisplay -C.
+ Avoid rmdir opendir error messsages when dir was already removed.
+ Tighten signal handlers.
+ Avoid some compiler warnings.
+ Additional rename failure error message.
+ read/write may be macros.
+ clvmd: don't take out lvm thread lock at startup, it only protects jobs list.
+
+Version 2.01.07 - 8th March 2005
+================================
+ Cope with new devices appearing by rescanning /dev if a uuid can't be found.
+ Remove DESTDIR from LVM_SHARED_PATH.
+ clvmd fixes: make FDs close-on-exec
+ gulm unlocks VG & orphan locks at startup in case they are stale
+ gulm now unlocks VG & orphan locks if client dies.
+
+Version 2.01.06 - 1st March 2005
+================================
+ Suppress 'open failed' error messages during scanning.
+ Option to suppress warnings of file descriptors left open.
+ Fix default value of metadatacopies in documentation (2->1).
+ Fix clvmd-gulm locking.
+ ./configure --enable-debug now enables debugging code in clvmd.
+ Fix clvmd-gulm node up/down code so it actually works.
+ clvmd-gulm now releases locks when shut down.
+
+Version 2.01.05 - 18th February 2005
+====================================
+ Static binary invokes dynamic binary if appropriate.
+ Make clvmd config check a little more tolerant.
+ gulm clvmd can now cope with >1 message arriving in a TCP message.
+
+Version 2.01.04 - 9th February 2005
+===================================
+ Add fixed offset to imported pool minor numbers.
+ Update binary pathnames in clvmd_init_rhel4.
+ lvm2cmd.so should skip the check for open fds.
+ Remove unused -f from pvmove.
+ Gulm clvmd doesn't report "connection refused" errors.
+ clvmd does a basic config file sanity check at startup.
+ Fix potential thread shutdown race in clvmd.
+
+Version 2.01.03 - 1st February 2005
+===================================
+ More 64-bit display/report fixes.
+ More informative startup mesg if can't create /etc/lvm.
+ Fix snapshot device size bug (since 2.01.01).
+ clvmd announces startup and cluster connection in syslog.
+ Gulm clvmd doesn't hang trying to talk to a rebooted node.
+ Gulm clvmd doesn't print cman error on startup.
+
+Version 2.01.02 - 21st January 2005
+===================================
+ Update clvmd_init_rhel4: use lvm.static and don't load dlm.
+ Fix some size_t printing.
+ Fix 64 bit xlate consts.
+ Split out pool sptype_names to avoid unused const.
+ Always fail if random id generation fails.
+ Recognise gnbd devices.
+ Fix clvmd startup bug introduced in cman/gulm amalgamation.
+ Improve reporting of node-specific locking errors.
+
+Version 2.01.01 - 19th January 2005
+===================================
+ Fix clvmd lv_info_by_lvid open_count.
+ Store snapshot and origin sizes separately.
+ Update vgcreate man page.
+
+Version 2.01.00 - 17th January 2005
+===================================
+ Fix vgscan metadata auto-correction.
+ Only ask libdevmapper for open_count when we need it.
+ Adjust RHEL4 clvmd init script priority.
+ Enable building of CMAN & GULM versions of clvmd into a single binary
+
+Version 2.00.33 - 7th January 2005
+==================================
+ pvcreate wipes first 4 sectors unless given --zero n.
+ gulm clvmd now uses new ccsd key names.
+ gulm clvmd now doesn't ignore the first node in cluster.conf
+ Improve clvmd failure message if it's already running.
+ Allow user to kill clvmd during initialisation.
+ Fix off-by-one error in cluster_locking that could cause read hangs.
+
+Version 2.00.32 - 22nd December 2004
+====================================
+ Drop static/dl restriction for now.
+ Fix an error fprintf.
+ Fix vgdisplay -s. Breaks (undocumented) lvs/pvs/vgs -s instead for now.
+ Fix device reference counting on re-opens.
+ Ignore sysfs symlinks when DT_UNKNOWN.
+ Add clvmd init script for RHEL4.
+ Skip devices that are too small to be PVs.
+ Fix pvchange -x segfault with lvm2-format orphan.
+ Cope with empty msdos partition tables.
+ Add CONTRIBUTORS file.
+
+Version 2.00.31 - 12th December 2004
+====================================
+ Reopen RO file descriptors RW if necessary.
+
+Version 2.00.30 - 10th December 2004
+====================================
+ Additional device-handling debug messages.
+ Additional verbosity level -vvvv includes line numbers and backtraces.
+ Verbose messages now go to stderr not stdout.
+ Close any stray file descriptors before starting.
+ Refine partitionable checks for certain device types.
+ Allow devices/types to override built-ins.
+ Fix lvreduce man page .i->.I
+ Fix vgsplit man page title.
+ Fix clvmd man makefile.
+ Extend dev_open logging.
+ Make clvmd_fix_conf.sh UNDOable.
+
+Version 2.00.29 - 27th November 2004
+====================================
+ xlate compilation fix.
+
+Version 2.00.28 - 27th November 2004
+====================================
+ Fix partition table & md signature detection.
+ Minor configure/makefile tidy.
+ Export version.h from tools for clvmd.
+
+Version 2.00.27 - 24th November 2004
+====================================
+ Trap large memory allocation requests.
+ Fix to partition table detection code.
+ Improve filter debug mesgs.
+ Make clvmd_fix_conf.sh UNDOable
+
+Version 2.00.26 - 23rd November 2004
+====================================
+ Improve pool debugging stats.
+ Detect partition table signature.
+ pvcreate wipes md superblocks. (With --uuid or --restorefile it prompts.)
+ Separate out md superblock detection code.
+ Prevent snapshot origin resizing.
+ Improve a vgremove error message.
+ Update some man pages.
+ Allow y/n with -ae args (exclusive activation).
+ Fixes to lvcreate vgname parsing.
+ Fix dm_name string size calculation.
+ Improve clvmd error reporting during startup.
+ Make clvmd cope with large gaps in node numbers IDs.
+ Make clvmd initialisation cope better with debugging output.
+ Tidy clvmd socket callbacks so all work happens outside main loop.
+ clvmd -V now displays lvm version too.
+ Add optional gulm build for clvmd
+
+Version 2.00.25 - 29th September 2004
+=====================================
+ Fix return code from rm_link for vgmknodes.
+ Make clvmd LV hash table thread-safe.
+ Fix clvmd locking so it will lock out multiple users on the same node.
+ Fix clvmd VG locking to it can cope with multiple VG locks.
+ Remove spurious trailing dot in lvreduce man page.
+ Fix vgremove locking.
+
+Version 2.00.24 - 16th September 2004
+=====================================
+ Fix pool_empty so it really does empty the memory pool.
+ Rename old segtypes files to segtype.
+ Some fixes to memory debugging code.
+ Exclude internal commands formats & segtypes from install.
+
+Version 2.00.23 - 15th September 2004
+=====================================
+ Export dm name build & split functions.
+ Use O_NOATIME on devices if available.
+ Write log message when each segtype/format gets initialised.
+ New commands 'segtypes' and 'formats'.
+ Suppress pvmove abort message in test mode.
+ Improve pvcreate/remove device not found error message.
+ Allow pvmove to move data within the same PV.
+ Describe how pvmove works on man page.
+ Test for incompatible format/segtype combinations in lv_extend.
+ Fix lvchange example on man page.
+
+Version 2.00.22 - 3rd September 2004
+====================================
+ Fix /dev/vgname perms.
+ Restructure xlate.h.
+ Add clvmd man page.
+
+Version 2.00.21 - 19th August 2004
+==================================
+ Update cnxman-socket.h from cman.
+ Recognise iseries/vd devices.
+ Use 'make install_cluster' to install cluster extensions only.
+ Cope with DT_UNKNOWN in sysfs.
+ Fix extents_moved metadata size comment.
+ Remove duplicate line in pvremove help text.
+ Support variable mirror region size.
+ Support PE ranges in pvmove source PV.
+ Fixes to as-yet-unused LV segment splitting code.
+ Change alloc_areas to pe_ranges and allow suppression of availability checks.
+ Add dev_size column to pvs.
+ Add report columns for in-kernel device number.
+
+Version 2.00.20 - 3 July 2004
+=============================
+ More autoconf fixes.
+ Fix device number handling for 2.6 kernels.
+
+Version 2.00.19 - 29 June 2004
+==============================
+ Reduce severity of setlocale failure message.
+ Recognise argv[0] "initrd-lvm" (pld-linux).
+ Make -O2 configurable.
+ Added --disable-selinux to configure script.
+ LD_FLAGS->LDFLAGS & LD_DEPS->LDDEPS in configure script.
+ Add init_debug to clvmd.
+
+Version 2.00.18 - 24 June 2004
+==============================
+ Fix vgchange activation.
+ Add cluster support.
+
+Version 2.00.17 - 20 June 2004
+==============================
+ configure --enable-fsadm to try out fsadm. fsadm is not tested yet.
+ Display all filtered devices, not just PVs, with pvs -a.
+ Fix sync_dir() when no / in filename
+ vgcfgbackup -f accepts template with %s for VG name.
+ Extend hash functions to handle non-null-terminated data.
+ Add local activation support.
+ Tidy relative paths in makefile includes.
+ fsadm support for fsck and resizing - needs testing.
+ Add read-only GFS pool support.
+ Add lvm2create_initrd script from http://poochiereds.net/svn/lvm2/
+ Fix rounding of large diplayed sizes.
+ Suppress decimal point when using units of sectors/bytes.
+ Additional kernel target checks before pvmove & snapshot creation.
+ Add i2o_block.
+
+Version 2.00.16 - 24 May 2004
+=============================
+ Set area_count within alloc_lv_segment.
+ Remove error labels from lvresize.
+ Fix a pvs error path.
+ xxchange -ae for exclusive activation.
+ Don't return non-zero status if there aren't any volume groups.
+ Add --alloc argument to tools.
+ Rename allocation policies to contiguous, normal, anywhere, inherit.
+ nextfree becomes normal; anywhere isn't implemented yet.
+ LV inherits allocation policy from VG. Defaults: LV - inherit; VG - normal
+ Additional status character added to vgs to indicate allocation policy.
+ Add reset_fn to external_locking.
+ Ensure presence of virtual targets before attempting activating.
+ Attempt to fix resizing of snapshot origins.
+ Restructure lvresize, bringing it closer to lvcreate.
+ A quick sanity check on vg_disk struct when read in. More checks needed.
+ Only include visible LVs in active/open counts.
+ Add virtual segment types, zero and error. A large sparse device can be
+constructed as a writeable snapshot of a large zero segment.
+ Add --type to lvcreate/resize.
+ Push lv_create & alloc policy up to tool level.
+ Fix pvdisplay return code.
+ Detect invalid LV names in arg lists.
+ Reporting uses line-at-a-time output.
+ lvm2 format sets unlimited_vols format flag.
+ Internal-only metadata flag support.
+ Basic checking for presence of device-mapper targets.
+ Separate out polldaemon.
+ Revise internal locking semantics.
+ Move find_pv_by_name to library.
+ Rename move->copy.
+ Add devices to segments report.
+ Begin separating out segment code. There's a lot of change here.
+ Compress any (obsolete) long LVM1 pvids encountered.
+ Support for tagged config files.
+ Don't abort operations if selinux present but disabled.
+ Fix typo in configure which left HAVE_LIBDL unset.
+
+Version 2.00.15 - 19 Apr 2004
+=============================
+ configure --with-owner= --with-group= to avoid -o and -g args to 'install'
+
+Version 2.00.14 - 16 Apr 2004
+=============================
+ Use 64-bit file functions by default.
+
+Version 2.00.13 - 16 Apr 2004
+=============================
+ Set devices/md_component_detection = 1 to ignore devices containing md
+ superblocks. [Luca Berra]
+ Ignore error setting selinux file context if fs doesn't support it.
+
+Version 2.00.12 - 14 Apr 2004
+=============================
+ Install a default lvm.conf into /etc/lvm if there isn't one already.
+ Allow different installation dir for lvm.static (configure --staticdir=)
+ Fix inverted selinux error check.
+ Recognise power2 in /proc/devices.
+ Fix counting in lvs_in_vg_opened. [It ignored devices open more than once.]
+
+Version 2.00.11 - 8 Apr 2004
+============================
+ Set fallback_to_lvm1 in lvm.conf (or configure --enable-lvm1_fallback)
+ to run lvm1 binaries if running a 2.4 kernel without device-mapper.
+
+Version 2.00.10 - 7 Apr 2004
+============================
+ More fixes for static build.
+ Add basic selinux support.
+ Fix sysfs detection.
+
+Version 2.00.09 - 31 Mar 2004
+=============================
+ Update copyright notices for Red Hat.
+ Fix vgmknodes to remove dud /dev/mapper entries. (libdevmapper update reqd).
+ Add LVM1-style colon output to vgdisplay.
+ lvchange --refresh to reload active LVs.
+ Add string display to memory leak dump.
+ Add locking flags & memlock option.
+ Add list_versions to library.
+ Ignore open hidden LVs when checking if deactivation is OK.
+ Suppress move percentage when device inactive.
+ Add lv_info_by_lvid.
+ Various tidy-ups to the build process.
+ Rebaseline internal verbose level.
+ Add --nolocking option for read operations if locking is failing.
+ Add option to compile into a library.
+ When compiled without libdevmapper, only print warning message once.
+ Fix lvreduce PV extent calculations.
+ Fix DESTDIR to work with configure path overrides.
+ Always use / as config file separator & rename internal config file variables.
+ Add support for tagging PV/VG/LVs and hosts.
+ Fix rare bug in recognition of long cmdline argument forms.
+ Add basic internationalisation infrastructure.
+ Don't recurse symlinked dirs such as /dev/fd on 2.6 kernels.
+ Update autoconf files.
+ Add sysfs block device filtering for 2.6 kernels.
+ Update refs for move to sources.redhat.com.
+
+Friday 14th November 2003
+=========================
+Some bug fixes & minor enhancements, including:
+ Backwards compatibility with LVM1 metadata improved.
+ Missing man pages written.
+ Tool error codes made more consistent.
+ vgmknodes written.
+ O_DIRECT can be turned off if it doesn't work in your kernel.
+ dumpconfig to display the active configuration file
+
+You need to update libdevmapper before using 'vgmknodes' or 'vgscan --mknodes'.
+If your root filesystem is on an LV, you should run one of those two
+commands to fix up the special files in /dev in your real root filesystem
+after finishing with your initrd. Also, remember you can use
+'vgchange --ignorelockingfailure' on your initrd if the tool fails because
+it can't write a lock file to a read-only filesystem.
+
+Wednesday 30th April 2003
+=========================
+A pvmove implementation is now available for the new metadata format.
+
+When running a command that allocates space (e.g. lvcreate), you can now
+restrict not only which disk(s) may be used but also the Physical Extents
+on those disks. e.g. lvcreate -L 10 vg1 /dev/hda6:1000-2000:3000-4000
+
+
+Monday 18th November 2002
+========================
+
+The new format of LVM metadata is ready for you to test!
+ We expect it to be more efficient and more robust than the original format.
+ It's more compact and supports transactional changes and replication.
+ Should things go wrong on a system, it's human-readable (and editable).
+
+Please report any problems you find to the mailing list,
+linux-lvm@sistina.com. The software has NOT yet been thoroughly
+tested and so quite possibly there'll still be some bugs in it.
+Be aware of the disclaimer in the COPYING file.
+
+While testing, we recommend turning logging on in the configuration file
+to provide us with diagnostic information:
+ log {
+ file="/tmp/lvm2.log"
+ level=7
+ activation=1
+ }
+
+You should schedule regular backups of your configuration file and
+metadata backups and archives (normally kept under /etc/lvm).
+
+Please read docs/example.conf and "man lvm.conf" to find out more about
+the configuration file.
+
+To convert an existing volume group called vg1 to the new format using
+the default settings, use "vgconvert -M2 vg1". See "man vgconvert".
+
+-M (or --metadatatype in its long form) is a new flag to indicate which
+format of metadata the command should use for anything it creates.
+Currently, the valid types are "lvm1" and "lvm2" and they can be
+abbreviated to "1" and "2" respectively. The default value for this
+flag can be changed in the global section in the config file.
+
+Backwards-compatible support for the original LVM1 metadata format is
+maintained, but it can be moved into a shared library or removed
+completely with configure's --with-lvm1 option.
+
+Under LVM2, the basic unit of metadata is the volume group. Different
+volume groups can use different formats of metadata - vg1 could use
+the original LVM1 format while vg2 used the new format - but you can't
+mix formats within a volume group. So to add a PV to an LVM2-format
+volume group you must run "pvcreate -M2" on it, followed by "vgextend".
+
+With LVM2-format metadata, lvextend will let you specify striping
+parameters. So an LV could consist of two or more "segments" - the
+first segment could have 3 stripes while the second segment has just 2.
+
+LVM2 maintains a backup of the current metadata for each volume group
+in /etc/lvm/backup, and puts copies of previous versions in
+/etc/lvm/archive. "vgcfgbackup" and "vgcfgrestore" can be used to
+create and restore from these files. If you fully understand what
+you're doing, metadata can be changed by editing a copy of a current
+backup file and using vgcfgrestore to reload it.
+
+Please read the pvcreate man page for more information on the new
+format for metadata.
+
+All tools that can change things have a --test flag which can be used
+to check the effect of a set of cmdline args without really making the
+changes.
+
+
+What's not finished?
+====================
+The internal cache. If you turn on debugging output you'll see lots of
+repeated messages, many of which will eventually get optimised out.
+
+--test sometimes causes a command to fail (e.g. vgconvert --test) even
+though the real command would work: again, fixing this is waiting for
+the work on the cache.
+
+Several of the tools do not yet contain the logic to handle full
+recovery: combinations of pvcreate and vgcfgrestore may sometimes be
+needed to restore metadata if a tool gets interrupted or crashes or
+finds something unexpected. This applies particularly to tools that
+work on more than one volume group at once (e.g. vgsplit).
+
+Display output. Some metadata information cannot yet be displayed.
+
+Recovery tools to salvage "lost" metadata directly from the disks:
+but we hope the new format will mean such tools are hardly ever needed!
--- /dev/null
+Version 1.02.40 - 19th November 2009
+====================================
+ Fix install_device-mapper Makefile target to not build dmeventd plugins.
+ Support udev flags even when udev_sync is disabled or not compiled in.
+ Remove 'last_rule' from udev rules: honour DM_UDEV_DISABLE_OTHER_RULES_FLAG.
+ Add dmsetup --inactive support.
+ Add dm_task_query_inactive_table to libdevmapper for kernel driver >= 4.16.
+ Fix hash lookup segfault when keys compared are different lengths.
+
+Version 1.02.39 - 26th October 2009
+===================================
+ Remove strict default permissions for DM devices from 95-dm-notify.rules.
+ Add dmsetup udevflags command to decode udev flags in given cookie value.
+ Support udev flags in libdevmapper incl. dm_tree_add_new_dev_with_udev_flags.
+ Make libdm ABI consistent when built with/without selinux support.
+
+Version 1.02.38 - 25th September 2009
+=====================================
+ Export DM_DEV_DIR_UMASK, the default umask for /dev directories created.
+ Handle any path supplied to dm_task_set_name by looking up in /dev/mapper.
+ Add several examples to 12-dm-permissions.rules.
+ Add splitname and --yes to dmsetup man page.
+ Fix _mirror_emit_segment_line return code.
+ Fix dmeventd _temporary_log_fn parameters. (2.02.50)
+
+Version 1.02.37 - 15th September 2009
+=====================================
+ Add dmsetup manpage entries for udevcomplete_all and udevcookies.
+ Check udev is running when processing cookies and retain state internally.
+ Add y|--yes option to dmsetup for default 'yes' answer to prompts.
+ Fix tools Makefile to process dmsetup sources separately.
+ Restore umask when device node creation fails.
+ Check kernel vsn to use 'block_on_error' or 'handle_errors' in mirror table.
+ Add dm-log-userspace.h to tree for cmirrord builds.
+
+Version 1.02.36 - 6th August 2009
+=================================
+ Add udevcookies, udevcomplete, udevcomplete_all and --noudevwait to dmsetup.
+ Add libdevmapper functions to support synchronisation with udev.
+
+Version 1.02.35 - 28th July 2009
+================================
+ Add LOG_LINE_WITH_ERRNO macro.
+ Use log_error macro consistently throughout in place of log_err.
+
+Version 1.02.34 - 15th July 2009
+================================
+ Use _exit() not exit() after forking to avoid flushing libc buffers twice.
+ Rename plog macro to LOG_LINE & add LOG_MESG variant for dm_dump_memory_debug.
+ Change plog to use dm_log_with_errno unless deprecated dm_log_init was used.
+ Add dm_log_with_errno and dm_log_with_errno_init, deprecating the old fns.
+ Fix whitespace in linear target line to fix identical table line detection.
+ Add device number to more log messages during activation.
+
+Version 1.02.33 - 30th June 2009
+================================
+ Don't fallback to default major number: use dm_task_set_major_minor. (1.02.31)
+ Do not fork daemon when dmeventd cannot be found.
+ Add crypt target handling to libdevmapper tree nodes.
+ Add splitname command to dmsetup.
+ Add subsystem, vg_name, lv_name, lv_layer fields to dmsetup reports.
+ Make mempool optional in dm_split_lvm_name().
+
+Version 1.02.32 - 21st May 2009
+===============================
+ Only generate libdevmapper.a when configured to link statically.
+ Export dm_tree_node_size_changed() from libdevmapper.
+ Propagate the table size_changed property up the dm device tree.
+ Detect failure to free memory pools when releasing the library.
+ Fix segfault when getopt processes dmsetup -U, -G and -M options.
+
+Version 1.02.31 - 3rd March 2009
+================================
+ If kernel supports only one dm major number, use in place of any supplied.
+
+Version 1.02.30 - 26th January 2009
+====================================
+ Add "all" field to reports expanding to all fields of report type.
+ Enforce device name length and character limitations in libdm.
+ Replace _dm_snprintf with EMIT_PARAMS macro for creating target lines.
+
+Version 1.02.29 - 10th November 2008
+====================================
+ Merge device-mapper into the LVM2 tree.
+ Split out dm-logging.h from log.h.
+ Use lvm-types.h.
+ Add usrsbindir to configure.
+
+Version 1.02.28 - 18th September 2008
+=====================================
+ Only resume devices in dm_tree_preload_children if size changes.
+ Extend deptree buffers so the largest possible device numbers fit.
+ Generate versioned libdevmapper-event.so.
+ Underline longer report help text headings.
+
+Version 1.02.27 - 25th June 2008
+================================
+ Align struct memblock in dbg_malloc for sparc.
+ Add --unquoted and --rows to dmsetup.
+ Avoid compiler warning about cast in dmsetup.c's OFFSET_OF macro.
+ Fix inverted no_flush debug message.
+ Remove --enable-jobs from configure. (Set at runtime instead.)
+ Bring configure.in and list.h into line with the lvm2 versions.
+
+Version 1.02.26 - 6th June 2008
+===============================
+ Initialise params buffer to empty string in _emit_segment.
+ Skip add_dev_node when ioctls disabled.
+ Make dm_hash_iter safe against deletion.
+ Accept a NULL pointer to dm_free silently.
+ Add tables_loaded, readonly and suspended columns to reports.
+ Add --nameprefixes to dmsetup.
+ Add field name prefix option to reporting functions.
+ Calculate string size within dm_pool_grow_object.
+
+Version 1.02.25 - 10th April 2008
+=================================
+ Remove redundant if-before-free tests.
+ Use log_warn for reporting field help text instead of log_print.
+ Change cluster mirror log type name (s/clustered_/clustered-/)
+
+Version 1.02.24 - 20th December 2007
+====================================
+ Fix deptree to pass new name to _resume_node after a rename.
+ Suppress other node operations if node is deleted.
+ Add node operation stack debug messages.
+ Report error when empty device name passed to readahead functions.
+ Fix minimum readahead debug message.
+
+Version 1.02.23 - 5th December 2007
+===================================
+ Update dm-ioctl.h after removal of compat code.
+ Add readahead support to libdevmapper and dmsetup.
+ Fix double free in a libdevmapper-event error path.
+ Fix configure --with-dmeventd-path substitution.
+ Allow a DM_DEV_DIR environment variable to override /dev in dmsetup.
+ Create a libdevmapper.so.$LIB_VERSION symlink within the build tree.
+ Avoid static link failure with some SELinux libraries that require libpthread.
+ Remove obsolete dmfs code from tree and update INSTALL.
+
+Version 1.02.22 - 21st August 2007
+==================================
+ Fix inconsistent licence notices: executables are GPLv2; libraries LGPLv2.1.
+ Update to use autoconf 2.61, while still supporting 2.57.
+ Avoid repeated dm_task free on some dm_event_get_registered_device errors.
+ Introduce log_sys_* macros from LVM2.
+ Export dm_fclose and dm_create_dir; remove libdm-file.h.
+ Don't log EROFS mkdir failures in _create_dir_recursive (for LVM2).
+ Add fclose wrapper dm_fclose that catches write failures (using ferror).
+
+Version 1.02.21 - 13th July 2007
+================================
+ Introduce _LOG_STDERR to send log_warn() messages to stderr not stdout.
+ Fix dmsetup -o devno string termination. (1.02.20)
+
+Version 1.02.20 - 15th June 2007
+================================
+ Fix default dmsetup report buffering and add --unbuffered.
+ Add tree-based and dependency fields to dmsetup reports.
+
+Version 1.02.19 - 27th April 2007
+=================================
+ Standardise protective include file #defines.
+ Add regex functions to library.
+ Avoid trailing separator in reports when there are hidden sort fields.
+ Fix segfault in 'dmsetup status' without --showkeys against crypt target.
+ Deal with some more compiler warnings.
+ Introduce _add_field() and _is_same_field() to libdm-report.c.
+ Fix some libdevmapper-event and dmeventd memory leaks.
+ Remove unnecessary memset() return value checks.
+ Fix a few leaks in reporting error paths. [1.02.15+]
+
+Version 1.02.18 - 13th February 2007
+====================================
+ Improve dmeventd messaging protocol: drain pipe and tag messages.
+
+Version 1.02.17 - 29th January 2007
+===================================
+ Add recent reporting options to dmsetup man page.
+ Revise some report fields names.
+ Add dmsetup 'help' command and update usage text.
+ Use fixed-size fields in report interface and reorder.
+
+Version 1.02.16 - 25th January 2007
+===================================
+ Add some missing close() and fclose() return value checks.
+ Migrate dmsetup column-based output over to new libdevmapper report framework.
+ Add descriptions to reporting field definitions.
+ Add a dso-private variable to dmeventd dso interface.
+ Add dm_event_handler_[gs]et_timeout functions.
+ Streamline dm_report_field_* interface.
+ Add cmdline debug & version options to dmeventd.
+ Add DM_LIB_VERSION definition to configure.h.
+ Suppress 'Unrecognised field' error if report field is 'help'.
+ Add --separator and --sort to dmsetup (unused).
+ Make alignment flag optional when specifying report fields.
+
+Version 1.02.15 - 17th January 2007
+===================================
+ Add basic reporting functions to libdevmapper.
+ Fix a malloc error path in dmsetup message.
+ More libdevmapper-event interface changes and fixes.
+ Rename dm_saprintf() to dm_asprintf().
+ Report error if NULL pointer is supplied to dm_strdup_aux().
+ Reinstate dm_event_get_registered_device.
+
+Version 1.02.14 - 11th January 2007
+===================================
+ Add dm_saprintf().
+ Use CFLAGS when linking so mixed sparc builds can supply -m64.
+ Add dm_tree_use_no_flush_suspend().
+ Lots of dmevent changes including revised interface.
+ Export dm_basename().
+ Cope with a trailing space when comparing tables prior to possible reload.
+ Fix dmeventd to cope if monitored device disappears.
+
+Version 1.02.13 - 28 Nov 2006
+=============================
+ Update dmsetup man page (setgeometry & message).
+ Fix dmsetup free after getline with debug.
+ Suppress encryption key in 'dmsetup table' output unless --showkeys supplied.
+
+Version 1.02.12 - 13 Oct 2006
+=============================
+ Avoid deptree attempting to suspend a device that's already suspended.
+
+Version 1.02.11 - 12 Oct 2006
+==============================
+ Add suspend noflush support.
+ Add basic dmsetup loop support.
+ Switch dmsetup to use dm_malloc and dm_free.
+
+Version 1.02.10 - 19 Sep 2006
+=============================
+ Add dm_snprintf(), dm_split_words() and dm_split_lvm_name() to libdevmapper.
+ Reorder mm bounds_check code to reduce window for a dmeventd race.
+
+Version 1.02.09 - 15 Aug 2006
+=============================
+ Add --table argument to dmsetup for a one-line table.
+ Abort if errors are found during cmdline option processing.
+ Add lockfs indicator to debug output.
+
+Version 1.02.08 - 17 July 2006
+==============================
+ Append full patch to check in emails.
+ Avoid duplicate dmeventd subdir with 'make distclean'.
+ Update dmsetup man page.
+ Add --force to dmsetup remove* to load error target.
+ dmsetup remove_all also performs mknodes.
+ Don't suppress identical table reloads if permission changes.
+ Fix corelog segment line.
+ Suppress some compiler warnings.
+
+Version 1.02.07 - 11 May 2006
+=============================
+ Add DM_CORELOG flag to dm_tree_node_add_mirror_target().
+ Avoid a dmeventd compiler warning.
+
+Version 1.02.06 - 10 May 2006
+=============================
+ Move DEFS into configure.h.
+ Fix leaks in error paths found by coverity.
+ Remove dmsetup line buffer limitation.
+
+Version 1.02.05 - 19 Apr 2006
+=============================
+ Separate install_include target in makefiles.
+ Separate out DEFS from CFLAGS.
+ Support pkg-config.
+ Check for libsepol.
+
+Version 1.02.04 - 14 Apr 2006
+=============================
+ Bring dmsetup man page up-to-date.
+ Use name-based device refs if kernel doesn't support device number refs.
+ Fix memory leak (struct dm_ioctl) when struct dm_task is reused.
+ If _create_and_load_v4 fails part way through, revert the creation.
+ dmeventd thread/fifo fixes.
+ Add file & line to dm_strdup_aux().
+ Add setgeometry.
+
+Version 1.02.03 - 7 Feb 2006
+============================
+ Add exported functions to set uid, gid and mode.
+ Rename _log to dm_log and export.
+ Add dm_tree_skip_lockfs.
+ Fix dm_strdup debug definition.
+ Fix hash function to avoid using a negative array offset.
+ Don't inline _find in hash.c and tidy signed/unsigned etc.
+ Fix libdevmapper.h #endif.
+ Fix dmsetup version driver version.
+ Add sync, nosync and block_on_error mirror log parameters.
+ Add hweight32.
+ Fix dmeventd build.
+
+Version 1.02.02 - 2 Dec 2005
+============================
+ dmeventd added.
+ Export dm_task_update_nodes.
+ Use names instead of numbers in messages when ioctls fail.
+
+Version 1.02.01 - 23 Nov 2005
+=============================
+ Resume snapshot-origins last.
+ Drop leading zeros from dm_format_dev.
+ Suppress attempt to reload identical table.
+ Additional LVM- prefix matching for transitional period.
+
+Version 1.02.00 - 10 Nov 2005
+=============================
+ Added activation functions to library.
+ Added return macros.
+ Also suppress error if device doesn't exist with DM_DEVICE_STATUS.
+ Export dm_set_selinux_context().
+ Add dm_driver_version().
+ Added dependency tree functions to library.
+ Added hash, bitset, pool, dbg_malloc to library.
+ Added ls --tree to dmsetup.
+ Added dmsetup --nolockfs support for suspend/reload.
+
+Version 1.01.05 - 26 Sep 2005
+=============================
+ Resync list.h with LVM2.
+ Remember increased buffer size and use for subsequent calls.
+ On 'buffer full' condition, double buffer size and repeat ioctl.
+ Fix termination of getopt_long() option array.
+ Report 'buffer full' condition with v4 ioctl as well as with v1.
+
+Version 1.01.04 - 2 Aug 2005
+============================
+ Fix dmsetup ls -j and status --target with empty table.
+
+Version 1.01.03 - 13 Jun 2005
+=============================
+ Use matchpathcon mode parameter.
+ Fix configure script to re-enable selinux.
+
+Version 1.01.02 - 17 May 2005
+=============================
+ Call dm_lib_exit() and dm_lib_release() automatically now.
+ Add --target <target_type> filter to dmsetup table/status/ls.
+ Add --exec <command> to dmsetup ls.
+ Fix dmsetup getopt_long usage.
+
+Version 1.01.01 - 29 Mar 2005
+=============================
+ Update dmsetup man page.
+ Drop-in devmap_name replacement.
+ Add option to compile without ioctl for testing.
+ Fix DM_LIB_VERSION sed.
+
+Version 1.01.00 - 17 Jan 2005
+=============================
+ Add dm_task_no_open_count() to skip getting open_count.
+
+Version 1.00.21 - 7 Jan 2005
+============================
+ Fix /proc/devices parsing.
+
+Version 1.00.20 - 6 Jan 2005
+============================
+ Attempt to fix /dev/mapper/control transparently if it's wrong.
+ Configuration-time option for setting uid/gid/mode for /dev/mapper nodes.
+ Update kernel patches for 2.4.27/2.4.28-pre-4 (includes minor fixes).
+ Add --noheadings columns option for colon-separated dmsetup output.
+ Support device referencing by uuid or major/minor.
+ Warn if kernel data didn't fit in buffer.
+ Fix a printf.
+
+Version 1.00.19 - 3 July 2004
+=============================
+ More autoconf fixes.
+ Fix a dmsetup newline.
+ Fix device number handling for 2.6 kernels.
+
+Version 1.00.18 - 20 Jun 2004
+=============================
+ Fix a uuid free in libdm-iface.
+ Fix a targets string size calc in driver.
+ Add -c to dmsetup for column-based output.
+ Add target message-passing ioctl.
+
+Version 1.00.17 - 17 Apr 2004
+=============================
+ configure --with-owner= --with-group= to avoid -o and -g args to 'install'
+ Fix library selinux linking.
+
+Version 1.00.16 - 16 Apr 2004
+=============================
+ Ignore error setting selinux file context if fs doesn't support it.
+
+Version 1.00.15 - 7 Apr 2004
+============================
+ Fix status overflow check in kernel patches.
+
+Version 1.00.14 - 6 Apr 2004
+============================
+ Fix static selinux build.
+
+Version 1.00.13 - 6 Apr 2004
+============================
+ Add some basic selinux support.
+
+Version 1.00.12 - 6 Apr 2004
+============================
+ Fix dmsetup.static install.
+
+Version 1.00.11 - 5 Apr 2004
+============================
+ configure --enable-static_link does static build in addition to dynamic.
+ Moved Makefile library targets definition into template.
+
+Version 1.00.10 - 2 Apr 2004
+============================
+ Fix DESTDIR handling.
+ Static build installs to dmsetup.static.
+ Basic support for internationalisation.
+ Minor Makefile tidy-ups/fixes.
+
+Version 1.00.09 - 31 Mar 2004
+=============================
+ Update copyright notices to Red Hat.
+ Move full mknodes functionality from dmsetup into libdevmapper.
+ Avoid sscanf %as for uClibc compatibility.
+ Cope if DM_LIST_VERSIONS is not defined.
+ Add DM_LIST_VERSIONS functionality to kernel patches.
+ Generate new kernel patches for 2.4.26-rc1.
+
+Version 1.00.08 - 27 Feb 2004
+=============================
+ Added 'dmsetup targets'.
+ Added event_nr support to 'dmsetup wait'.
+ Updated dmsetup man page.
+ Allow logging function to be reset to use internal one.
+ Bring log macros in line with LVM2 ones.
+ Added 'make install_static_lib' which installs libdevmapper.a.
+ Made configure/makefiles closer to LVM2 versions.
+ Fixed DESTDIR for make install/install_static_lib.
+ Updated README/INSTALL to reflect move to sources.redhat.com.
+ Updated autoconf files to 2003-06-17.
--- /dev/null
+/config.guess/1.1.1.1/Mon Dec 22 00:18:26 2008//
+/config.sub/1.1.1.1/Mon Dec 22 00:18:27 2008//
+/install-sh/1.1.1.1/Mon Dec 22 00:18:27 2008//
+D
--- /dev/null
+src/external/gpl2/lvm2/dist/autoconf
--- /dev/null
+/archive/NetBSD-CVS
--- /dev/null
+#! /bin/sh
+# Attempt to guess a canonical system name.
+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
+# Free Software Foundation, Inc.
+
+timestamp='2008-01-23'
+
+# This file is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
+# 02110-1301, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+
+# Originally written by Per Bothner <per@bothner.com>.
+# Please send patches to <config-patches@gnu.org>. Submit a context
+# diff and a properly formatted ChangeLog entry.
+#
+# This script attempts to guess a canonical system name similar to
+# config.sub. If it succeeds, it prints the system name on stdout, and
+# exits with 0. Otherwise, it exits with 1.
+#
+# The plan is that this can be called by configure scripts if you
+# don't specify an explicit build system type.
+
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION]
+
+Output the configuration name of the system \`$me' is run on.
+
+Operation modes:
+ -h, --help print this help, then exit
+ -t, --time-stamp print date of last modification, then exit
+ -v, --version print version number, then exit
+
+Report bugs and patches to <config-patches@gnu.org>."
+
+version="\
+GNU config.guess ($timestamp)
+
+Originally written by Per Bothner.
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
+2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+
+This is free software; see the source for copying conditions. There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+ case $1 in
+ --time-stamp | --time* | -t )
+ echo "$timestamp" ; exit ;;
+ --version | -v )
+ echo "$version" ; exit ;;
+ --help | --h* | -h )
+ echo "$usage"; exit ;;
+ -- ) # Stop option processing
+ shift; break ;;
+ - ) # Use stdin as input.
+ break ;;
+ -* )
+ echo "$me: invalid option $1$help" >&2
+ exit 1 ;;
+ * )
+ break ;;
+ esac
+done
+
+if test $# != 0; then
+ echo "$me: too many arguments$help" >&2
+ exit 1
+fi
+
+trap 'exit 1' 1 2 15
+
+# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
+# compiler to aid in system detection is discouraged as it requires
+# temporary files to be created and, as you can see below, it is a
+# headache to deal with in a portable fashion.
+
+# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
+# use `HOST_CC' if defined, but it is deprecated.
+
+# Portable tmp directory creation inspired by the Autoconf team.
+
+set_cc_for_build='
+trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
+trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
+: ${TMPDIR=/tmp} ;
+ { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
+ { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
+ { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
+ { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
+dummy=$tmp/dummy ;
+tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
+case $CC_FOR_BUILD,$HOST_CC,$CC in
+ ,,) echo "int x;" > $dummy.c ;
+ for c in cc gcc c89 c99 ; do
+ if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then
+ CC_FOR_BUILD="$c"; break ;
+ fi ;
+ done ;
+ if test x"$CC_FOR_BUILD" = x ; then
+ CC_FOR_BUILD=no_compiler_found ;
+ fi
+ ;;
+ ,,*) CC_FOR_BUILD=$CC ;;
+ ,*,*) CC_FOR_BUILD=$HOST_CC ;;
+esac ; set_cc_for_build= ;'
+
+# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
+# (ghazi@noc.rutgers.edu 1994-08-24)
+if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
+ PATH=$PATH:/.attbin ; export PATH
+fi
+
+UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
+UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
+UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
+UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
+
+# Note: order is significant - the case branches are not exclusive.
+
+case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
+ *:NetBSD:*:*)
+ # NetBSD (nbsd) targets should (where applicable) match one or
+ # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*,
+ # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently
+ # switched to ELF, *-*-netbsd* would select the old
+ # object file format. This provides both forward
+ # compatibility and a consistent mechanism for selecting the
+ # object file format.
+ #
+ # Note: NetBSD doesn't particularly care about the vendor
+ # portion of the name. We always set it to "unknown".
+ sysctl="sysctl -n hw.machine_arch"
+ UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \
+ /usr/sbin/$sysctl 2>/dev/null || echo unknown)`
+ case "${UNAME_MACHINE_ARCH}" in
+ armeb) machine=armeb-unknown ;;
+ arm*) machine=arm-unknown ;;
+ sh3el) machine=shl-unknown ;;
+ sh3eb) machine=sh-unknown ;;
+ sh5el) machine=sh5le-unknown ;;
+ *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
+ esac
+ # The Operating System including object format, if it has switched
+ # to ELF recently, or will in the future.
+ case "${UNAME_MACHINE_ARCH}" in
+ arm*|i386|m68k|ns32k|sh3*|sparc|vax)
+ eval $set_cc_for_build
+ if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
+ | grep __ELF__ >/dev/null
+ then
+ # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
+ # Return netbsd for either. FIX?
+ os=netbsd
+ else
+ os=netbsdelf
+ fi
+ ;;
+ *)
+ os=netbsd
+ ;;
+ esac
+ # The OS release
+ # Debian GNU/NetBSD machines have a different userland, and
+ # thus, need a distinct triplet. However, they do not need
+ # kernel version information, so it can be replaced with a
+ # suitable tag, in the style of linux-gnu.
+ case "${UNAME_VERSION}" in
+ Debian*)
+ release='-gnu'
+ ;;
+ *)
+ release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
+ ;;
+ esac
+ # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
+ # contains redundant information, the shorter form:
+ # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
+ echo "${machine}-${os}${release}"
+ exit ;;
+ *:OpenBSD:*:*)
+ UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
+ echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
+ exit ;;
+ *:ekkoBSD:*:*)
+ echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
+ exit ;;
+ *:SolidBSD:*:*)
+ echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE}
+ exit ;;
+ macppc:MirBSD:*:*)
+ echo powerpc-unknown-mirbsd${UNAME_RELEASE}
+ exit ;;
+ *:MirBSD:*:*)
+ echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
+ exit ;;
+ alpha:OSF1:*:*)
+ case $UNAME_RELEASE in
+ *4.0)
+ UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
+ ;;
+ *5.*)
+ UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
+ ;;
+ esac
+ # According to Compaq, /usr/sbin/psrinfo has been available on
+ # OSF/1 and Tru64 systems produced since 1995. I hope that
+ # covers most systems running today. This code pipes the CPU
+ # types through head -n 1, so we only detect the type of CPU 0.
+ ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1`
+ case "$ALPHA_CPU_TYPE" in
+ "EV4 (21064)")
+ UNAME_MACHINE="alpha" ;;
+ "EV4.5 (21064)")
+ UNAME_MACHINE="alpha" ;;
+ "LCA4 (21066/21068)")
+ UNAME_MACHINE="alpha" ;;
+ "EV5 (21164)")
+ UNAME_MACHINE="alphaev5" ;;
+ "EV5.6 (21164A)")
+ UNAME_MACHINE="alphaev56" ;;
+ "EV5.6 (21164PC)")
+ UNAME_MACHINE="alphapca56" ;;
+ "EV5.7 (21164PC)")
+ UNAME_MACHINE="alphapca57" ;;
+ "EV6 (21264)")
+ UNAME_MACHINE="alphaev6" ;;
+ "EV6.7 (21264A)")
+ UNAME_MACHINE="alphaev67" ;;
+ "EV6.8CB (21264C)")
+ UNAME_MACHINE="alphaev68" ;;
+ "EV6.8AL (21264B)")
+ UNAME_MACHINE="alphaev68" ;;
+ "EV6.8CX (21264D)")
+ UNAME_MACHINE="alphaev68" ;;
+ "EV6.9A (21264/EV69A)")
+ UNAME_MACHINE="alphaev69" ;;
+ "EV7 (21364)")
+ UNAME_MACHINE="alphaev7" ;;
+ "EV7.9 (21364A)")
+ UNAME_MACHINE="alphaev79" ;;
+ esac
+ # A Pn.n version is a patched version.
+ # A Vn.n version is a released version.
+ # A Tn.n version is a released field test version.
+ # A Xn.n version is an unreleased experimental baselevel.
+ # 1.2 uses "1.2" for uname -r.
+ echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ exit ;;
+ Alpha\ *:Windows_NT*:*)
+ # How do we know it's Interix rather than the generic POSIX subsystem?
+ # Should we change UNAME_MACHINE based on the output of uname instead
+ # of the specific Alpha model?
+ echo alpha-pc-interix
+ exit ;;
+ 21064:Windows_NT:50:3)
+ echo alpha-dec-winnt3.5
+ exit ;;
+ Amiga*:UNIX_System_V:4.0:*)
+ echo m68k-unknown-sysv4
+ exit ;;
+ *:[Aa]miga[Oo][Ss]:*:*)
+ echo ${UNAME_MACHINE}-unknown-amigaos
+ exit ;;
+ *:[Mm]orph[Oo][Ss]:*:*)
+ echo ${UNAME_MACHINE}-unknown-morphos
+ exit ;;
+ *:OS/390:*:*)
+ echo i370-ibm-openedition
+ exit ;;
+ *:z/VM:*:*)
+ echo s390-ibm-zvmoe
+ exit ;;
+ *:OS400:*:*)
+ echo powerpc-ibm-os400
+ exit ;;
+ arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
+ echo arm-acorn-riscix${UNAME_RELEASE}
+ exit ;;
+ arm:riscos:*:*|arm:RISCOS:*:*)
+ echo arm-unknown-riscos
+ exit ;;
+ SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
+ echo hppa1.1-hitachi-hiuxmpp
+ exit ;;
+ Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
+ # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
+ if test "`(/bin/universe) 2>/dev/null`" = att ; then
+ echo pyramid-pyramid-sysv3
+ else
+ echo pyramid-pyramid-bsd
+ fi
+ exit ;;
+ NILE*:*:*:dcosx)
+ echo pyramid-pyramid-svr4
+ exit ;;
+ DRS?6000:unix:4.0:6*)
+ echo sparc-icl-nx6
+ exit ;;
+ DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
+ case `/usr/bin/uname -p` in
+ sparc) echo sparc-icl-nx7; exit ;;
+ esac ;;
+ sun4H:SunOS:5.*:*)
+ echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit ;;
+ sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
+ echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit ;;
+ i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
+ echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit ;;
+ sun4*:SunOS:6*:*)
+ # According to config.sub, this is the proper way to canonicalize
+ # SunOS6. Hard to guess exactly what SunOS6 will be like, but
+ # it's likely to be more like Solaris than SunOS4.
+ echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit ;;
+ sun4*:SunOS:*:*)
+ case "`/usr/bin/arch -k`" in
+ Series*|S4*)
+ UNAME_RELEASE=`uname -v`
+ ;;
+ esac
+ # Japanese Language versions have a version number like `4.1.3-JL'.
+ echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
+ exit ;;
+ sun3*:SunOS:*:*)
+ echo m68k-sun-sunos${UNAME_RELEASE}
+ exit ;;
+ sun*:*:4.2BSD:*)
+ UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
+ test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
+ case "`/bin/arch`" in
+ sun3)
+ echo m68k-sun-sunos${UNAME_RELEASE}
+ ;;
+ sun4)
+ echo sparc-sun-sunos${UNAME_RELEASE}
+ ;;
+ esac
+ exit ;;
+ aushp:SunOS:*:*)
+ echo sparc-auspex-sunos${UNAME_RELEASE}
+ exit ;;
+ # The situation for MiNT is a little confusing. The machine name
+ # can be virtually everything (everything which is not
+ # "atarist" or "atariste" at least should have a processor
+ # > m68000). The system name ranges from "MiNT" over "FreeMiNT"
+ # to the lowercase version "mint" (or "freemint"). Finally
+ # the system name "TOS" denotes a system which is actually not
+ # MiNT. But MiNT is downward compatible to TOS, so this should
+ # be no problem.
+ atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
+ echo m68k-atari-mint${UNAME_RELEASE}
+ exit ;;
+ atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
+ echo m68k-atari-mint${UNAME_RELEASE}
+ exit ;;
+ *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
+ echo m68k-atari-mint${UNAME_RELEASE}
+ exit ;;
+ milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
+ echo m68k-milan-mint${UNAME_RELEASE}
+ exit ;;
+ hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
+ echo m68k-hades-mint${UNAME_RELEASE}
+ exit ;;
+ *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
+ echo m68k-unknown-mint${UNAME_RELEASE}
+ exit ;;
+ m68k:machten:*:*)
+ echo m68k-apple-machten${UNAME_RELEASE}
+ exit ;;
+ powerpc:machten:*:*)
+ echo powerpc-apple-machten${UNAME_RELEASE}
+ exit ;;
+ RISC*:Mach:*:*)
+ echo mips-dec-mach_bsd4.3
+ exit ;;
+ RISC*:ULTRIX:*:*)
+ echo mips-dec-ultrix${UNAME_RELEASE}
+ exit ;;
+ VAX*:ULTRIX*:*:*)
+ echo vax-dec-ultrix${UNAME_RELEASE}
+ exit ;;
+ 2020:CLIX:*:* | 2430:CLIX:*:*)
+ echo clipper-intergraph-clix${UNAME_RELEASE}
+ exit ;;
+ mips:*:*:UMIPS | mips:*:*:RISCos)
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+#ifdef __cplusplus
+#include <stdio.h> /* for printf() prototype */
+ int main (int argc, char *argv[]) {
+#else
+ int main (argc, argv) int argc; char *argv[]; {
+#endif
+ #if defined (host_mips) && defined (MIPSEB)
+ #if defined (SYSTYPE_SYSV)
+ printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
+ #endif
+ #if defined (SYSTYPE_SVR4)
+ printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
+ #endif
+ #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
+ printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
+ #endif
+ #endif
+ exit (-1);
+ }
+EOF
+ $CC_FOR_BUILD -o $dummy $dummy.c &&
+ dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` &&
+ SYSTEM_NAME=`$dummy $dummyarg` &&
+ { echo "$SYSTEM_NAME"; exit; }
+ echo mips-mips-riscos${UNAME_RELEASE}
+ exit ;;
+ Motorola:PowerMAX_OS:*:*)
+ echo powerpc-motorola-powermax
+ exit ;;
+ Motorola:*:4.3:PL8-*)
+ echo powerpc-harris-powermax
+ exit ;;
+ Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
+ echo powerpc-harris-powermax
+ exit ;;
+ Night_Hawk:Power_UNIX:*:*)
+ echo powerpc-harris-powerunix
+ exit ;;
+ m88k:CX/UX:7*:*)
+ echo m88k-harris-cxux7
+ exit ;;
+ m88k:*:4*:R4*)
+ echo m88k-motorola-sysv4
+ exit ;;
+ m88k:*:3*:R3*)
+ echo m88k-motorola-sysv3
+ exit ;;
+ AViiON:dgux:*:*)
+ # DG/UX returns AViiON for all architectures
+ UNAME_PROCESSOR=`/usr/bin/uname -p`
+ if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
+ then
+ if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
+ [ ${TARGET_BINARY_INTERFACE}x = x ]
+ then
+ echo m88k-dg-dgux${UNAME_RELEASE}
+ else
+ echo m88k-dg-dguxbcs${UNAME_RELEASE}
+ fi
+ else
+ echo i586-dg-dgux${UNAME_RELEASE}
+ fi
+ exit ;;
+ M88*:DolphinOS:*:*) # DolphinOS (SVR3)
+ echo m88k-dolphin-sysv3
+ exit ;;
+ M88*:*:R3*:*)
+ # Delta 88k system running SVR3
+ echo m88k-motorola-sysv3
+ exit ;;
+ XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
+ echo m88k-tektronix-sysv3
+ exit ;;
+ Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
+ echo m68k-tektronix-bsd
+ exit ;;
+ *:IRIX*:*:*)
+ echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
+ exit ;;
+ ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
+ echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id
+ exit ;; # Note that: echo "'`uname -s`'" gives 'AIX '
+ i*86:AIX:*:*)
+ echo i386-ibm-aix
+ exit ;;
+ ia64:AIX:*:*)
+ if [ -x /usr/bin/oslevel ] ; then
+ IBM_REV=`/usr/bin/oslevel`
+ else
+ IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+ fi
+ echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
+ exit ;;
+ *:AIX:2:3)
+ if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+ #include <sys/systemcfg.h>
+
+ main()
+ {
+ if (!__power_pc())
+ exit(1);
+ puts("powerpc-ibm-aix3.2.5");
+ exit(0);
+ }
+EOF
+ if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy`
+ then
+ echo "$SYSTEM_NAME"
+ else
+ echo rs6000-ibm-aix3.2.5
+ fi
+ elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
+ echo rs6000-ibm-aix3.2.4
+ else
+ echo rs6000-ibm-aix3.2
+ fi
+ exit ;;
+ *:AIX:*:[456])
+ IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
+ if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
+ IBM_ARCH=rs6000
+ else
+ IBM_ARCH=powerpc
+ fi
+ if [ -x /usr/bin/oslevel ] ; then
+ IBM_REV=`/usr/bin/oslevel`
+ else
+ IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+ fi
+ echo ${IBM_ARCH}-ibm-aix${IBM_REV}
+ exit ;;
+ *:AIX:*:*)
+ echo rs6000-ibm-aix
+ exit ;;
+ ibmrt:4.4BSD:*|romp-ibm:BSD:*)
+ echo romp-ibm-bsd4.4
+ exit ;;
+ ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and
+ echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to
+ exit ;; # report: romp-ibm BSD 4.3
+ *:BOSX:*:*)
+ echo rs6000-bull-bosx
+ exit ;;
+ DPX/2?00:B.O.S.:*:*)
+ echo m68k-bull-sysv3
+ exit ;;
+ 9000/[34]??:4.3bsd:1.*:*)
+ echo m68k-hp-bsd
+ exit ;;
+ hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
+ echo m68k-hp-bsd4.4
+ exit ;;
+ 9000/[34678]??:HP-UX:*:*)
+ HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+ case "${UNAME_MACHINE}" in
+ 9000/31? ) HP_ARCH=m68000 ;;
+ 9000/[34]?? ) HP_ARCH=m68k ;;
+ 9000/[678][0-9][0-9])
+ if [ -x /usr/bin/getconf ]; then
+ sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
+ sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
+ case "${sc_cpu_version}" in
+ 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
+ 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
+ 532) # CPU_PA_RISC2_0
+ case "${sc_kernel_bits}" in
+ 32) HP_ARCH="hppa2.0n" ;;
+ 64) HP_ARCH="hppa2.0w" ;;
+ '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20
+ esac ;;
+ esac
+ fi
+ if [ "${HP_ARCH}" = "" ]; then
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+
+ #define _HPUX_SOURCE
+ #include <stdlib.h>
+ #include <unistd.h>
+
+ int main ()
+ {
+ #if defined(_SC_KERNEL_BITS)
+ long bits = sysconf(_SC_KERNEL_BITS);
+ #endif
+ long cpu = sysconf (_SC_CPU_VERSION);
+
+ switch (cpu)
+ {
+ case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
+ case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
+ case CPU_PA_RISC2_0:
+ #if defined(_SC_KERNEL_BITS)
+ switch (bits)
+ {
+ case 64: puts ("hppa2.0w"); break;
+ case 32: puts ("hppa2.0n"); break;
+ default: puts ("hppa2.0"); break;
+ } break;
+ #else /* !defined(_SC_KERNEL_BITS) */
+ puts ("hppa2.0"); break;
+ #endif
+ default: puts ("hppa1.0"); break;
+ }
+ exit (0);
+ }
+EOF
+ (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
+ test -z "$HP_ARCH" && HP_ARCH=hppa
+ fi ;;
+ esac
+ if [ ${HP_ARCH} = "hppa2.0w" ]
+ then
+ eval $set_cc_for_build
+
+ # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
+ # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler
+ # generating 64-bit code. GNU and HP use different nomenclature:
+ #
+ # $ CC_FOR_BUILD=cc ./config.guess
+ # => hppa2.0w-hp-hpux11.23
+ # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
+ # => hppa64-hp-hpux11.23
+
+ if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
+ grep __LP64__ >/dev/null
+ then
+ HP_ARCH="hppa2.0w"
+ else
+ HP_ARCH="hppa64"
+ fi
+ fi
+ echo ${HP_ARCH}-hp-hpux${HPUX_REV}
+ exit ;;
+ ia64:HP-UX:*:*)
+ HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+ echo ia64-hp-hpux${HPUX_REV}
+ exit ;;
+ 3050*:HI-UX:*:*)
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+ #include <unistd.h>
+ int
+ main ()
+ {
+ long cpu = sysconf (_SC_CPU_VERSION);
+ /* The order matters, because CPU_IS_HP_MC68K erroneously returns
+ true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct
+ results, however. */
+ if (CPU_IS_PA_RISC (cpu))
+ {
+ switch (cpu)
+ {
+ case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
+ case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
+ case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
+ default: puts ("hppa-hitachi-hiuxwe2"); break;
+ }
+ }
+ else if (CPU_IS_HP_MC68K (cpu))
+ puts ("m68k-hitachi-hiuxwe2");
+ else puts ("unknown-hitachi-hiuxwe2");
+ exit (0);
+ }
+EOF
+ $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` &&
+ { echo "$SYSTEM_NAME"; exit; }
+ echo unknown-hitachi-hiuxwe2
+ exit ;;
+ 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
+ echo hppa1.1-hp-bsd
+ exit ;;
+ 9000/8??:4.3bsd:*:*)
+ echo hppa1.0-hp-bsd
+ exit ;;
+ *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
+ echo hppa1.0-hp-mpeix
+ exit ;;
+ hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
+ echo hppa1.1-hp-osf
+ exit ;;
+ hp8??:OSF1:*:*)
+ echo hppa1.0-hp-osf
+ exit ;;
+ i*86:OSF1:*:*)
+ if [ -x /usr/sbin/sysversion ] ; then
+ echo ${UNAME_MACHINE}-unknown-osf1mk
+ else
+ echo ${UNAME_MACHINE}-unknown-osf1
+ fi
+ exit ;;
+ parisc*:Lites*:*:*)
+ echo hppa1.1-hp-lites
+ exit ;;
+ C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
+ echo c1-convex-bsd
+ exit ;;
+ C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
+ if getsysinfo -f scalar_acc
+ then echo c32-convex-bsd
+ else echo c2-convex-bsd
+ fi
+ exit ;;
+ C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
+ echo c34-convex-bsd
+ exit ;;
+ C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
+ echo c38-convex-bsd
+ exit ;;
+ C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
+ echo c4-convex-bsd
+ exit ;;
+ CRAY*Y-MP:*:*:*)
+ echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit ;;
+ CRAY*[A-Z]90:*:*:*)
+ echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
+ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
+ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
+ -e 's/\.[^.]*$/.X/'
+ exit ;;
+ CRAY*TS:*:*:*)
+ echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit ;;
+ CRAY*T3E:*:*:*)
+ echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit ;;
+ CRAY*SV1:*:*:*)
+ echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit ;;
+ *:UNICOS/mp:*:*)
+ echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit ;;
+ F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
+ FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+ FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
+ echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+ exit ;;
+ 5000:UNIX_System_V:4.*:*)
+ FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+ FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
+ echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+ exit ;;
+ i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
+ echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
+ exit ;;
+ sparc*:BSD/OS:*:*)
+ echo sparc-unknown-bsdi${UNAME_RELEASE}
+ exit ;;
+ *:BSD/OS:*:*)
+ echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
+ exit ;;
+ *:FreeBSD:*:*)
+ case ${UNAME_MACHINE} in
+ pc98)
+ echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+ amd64)
+ echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+ *)
+ echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+ esac
+ exit ;;
+ i*:CYGWIN*:*)
+ echo ${UNAME_MACHINE}-pc-cygwin
+ exit ;;
+ *:MINGW*:*)
+ echo ${UNAME_MACHINE}-pc-mingw32
+ exit ;;
+ i*:windows32*:*)
+ # uname -m includes "-pc" on this system.
+ echo ${UNAME_MACHINE}-mingw32
+ exit ;;
+ i*:PW*:*)
+ echo ${UNAME_MACHINE}-pc-pw32
+ exit ;;
+ *:Interix*:[3456]*)
+ case ${UNAME_MACHINE} in
+ x86)
+ echo i586-pc-interix${UNAME_RELEASE}
+ exit ;;
+ EM64T | authenticamd)
+ echo x86_64-unknown-interix${UNAME_RELEASE}
+ exit ;;
+ IA64)
+ echo ia64-unknown-interix${UNAME_RELEASE}
+ exit ;;
+ esac ;;
+ [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
+ echo i${UNAME_MACHINE}-pc-mks
+ exit ;;
+ i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
+ # How do we know it's Interix rather than the generic POSIX subsystem?
+ # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
+ # UNAME_MACHINE based on the output of uname instead of i386?
+ echo i586-pc-interix
+ exit ;;
+ i*:UWIN*:*)
+ echo ${UNAME_MACHINE}-pc-uwin
+ exit ;;
+ amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
+ echo x86_64-unknown-cygwin
+ exit ;;
+ p*:CYGWIN*:*)
+ echo powerpcle-unknown-cygwin
+ exit ;;
+ prep*:SunOS:5.*:*)
+ echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit ;;
+ *:GNU:*:*)
+ # the GNU system
+ echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
+ exit ;;
+ *:GNU/*:*:*)
+ # other systems with GNU libc and userland
+ echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
+ exit ;;
+ i*86:Minix:*:*)
+ echo ${UNAME_MACHINE}-pc-minix
+ exit ;;
+ arm*:Linux:*:*)
+ eval $set_cc_for_build
+ if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
+ | grep -q __ARM_EABI__
+ then
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ else
+ echo ${UNAME_MACHINE}-unknown-linux-gnueabi
+ fi
+ exit ;;
+ avr32*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ cris:Linux:*:*)
+ echo cris-axis-linux-gnu
+ exit ;;
+ crisv32:Linux:*:*)
+ echo crisv32-axis-linux-gnu
+ exit ;;
+ frv:Linux:*:*)
+ echo frv-unknown-linux-gnu
+ exit ;;
+ ia64:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ m32r*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ m68*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ mips:Linux:*:*)
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+ #undef CPU
+ #undef mips
+ #undef mipsel
+ #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
+ CPU=mipsel
+ #else
+ #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
+ CPU=mips
+ #else
+ CPU=
+ #endif
+ #endif
+EOF
+ eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
+ /^CPU/{
+ s: ::g
+ p
+ }'`"
+ test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
+ ;;
+ mips64:Linux:*:*)
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+ #undef CPU
+ #undef mips64
+ #undef mips64el
+ #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
+ CPU=mips64el
+ #else
+ #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
+ CPU=mips64
+ #else
+ CPU=
+ #endif
+ #endif
+EOF
+ eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
+ /^CPU/{
+ s: ::g
+ p
+ }'`"
+ test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
+ ;;
+ or32:Linux:*:*)
+ echo or32-unknown-linux-gnu
+ exit ;;
+ ppc:Linux:*:*)
+ echo powerpc-unknown-linux-gnu
+ exit ;;
+ ppc64:Linux:*:*)
+ echo powerpc64-unknown-linux-gnu
+ exit ;;
+ alpha:Linux:*:*)
+ case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
+ EV5) UNAME_MACHINE=alphaev5 ;;
+ EV56) UNAME_MACHINE=alphaev56 ;;
+ PCA56) UNAME_MACHINE=alphapca56 ;;
+ PCA57) UNAME_MACHINE=alphapca56 ;;
+ EV6) UNAME_MACHINE=alphaev6 ;;
+ EV67) UNAME_MACHINE=alphaev67 ;;
+ EV68*) UNAME_MACHINE=alphaev68 ;;
+ esac
+ objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null
+ if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
+ echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
+ exit ;;
+ parisc:Linux:*:* | hppa:Linux:*:*)
+ # Look for CPU level
+ case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
+ PA7*) echo hppa1.1-unknown-linux-gnu ;;
+ PA8*) echo hppa2.0-unknown-linux-gnu ;;
+ *) echo hppa-unknown-linux-gnu ;;
+ esac
+ exit ;;
+ parisc64:Linux:*:* | hppa64:Linux:*:*)
+ echo hppa64-unknown-linux-gnu
+ exit ;;
+ s390:Linux:*:* | s390x:Linux:*:*)
+ echo ${UNAME_MACHINE}-ibm-linux
+ exit ;;
+ sh64*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ sh*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ sparc:Linux:*:* | sparc64:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ vax:Linux:*:*)
+ echo ${UNAME_MACHINE}-dec-linux-gnu
+ exit ;;
+ x86_64:Linux:*:*)
+ echo x86_64-unknown-linux-gnu
+ exit ;;
+ xtensa*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ i*86:Linux:*:*)
+ # The BFD linker knows what the default object file format is, so
+ # first see if it will tell us. cd to the root directory to prevent
+ # problems with other programs or directories called `ld' in the path.
+ # Set LC_ALL=C to ensure ld outputs messages in English.
+ ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \
+ | sed -ne '/supported targets:/!d
+ s/[ ][ ]*/ /g
+ s/.*supported targets: *//
+ s/ .*//
+ p'`
+ case "$ld_supported_targets" in
+ elf32-i386)
+ TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu"
+ ;;
+ a.out-i386-linux)
+ echo "${UNAME_MACHINE}-pc-linux-gnuaout"
+ exit ;;
+ coff-i386)
+ echo "${UNAME_MACHINE}-pc-linux-gnucoff"
+ exit ;;
+ "")
+ # Either a pre-BFD a.out linker (linux-gnuoldld) or
+ # one that does not give us useful --help.
+ echo "${UNAME_MACHINE}-pc-linux-gnuoldld"
+ exit ;;
+ esac
+ # Determine whether the default compiler is a.out or elf
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+ #include <features.h>
+ #ifdef __ELF__
+ # ifdef __GLIBC__
+ # if __GLIBC__ >= 2
+ LIBC=gnu
+ # else
+ LIBC=gnulibc1
+ # endif
+ # else
+ LIBC=gnulibc1
+ # endif
+ #else
+ #if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__SUNPRO_C) || defined(__SUNPRO_CC)
+ LIBC=gnu
+ #else
+ LIBC=gnuaout
+ #endif
+ #endif
+ #ifdef __dietlibc__
+ LIBC=dietlibc
+ #endif
+EOF
+ eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
+ /^LIBC/{
+ s: ::g
+ p
+ }'`"
+ test x"${LIBC}" != x && {
+ echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
+ exit
+ }
+ test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; }
+ ;;
+ i*86:DYNIX/ptx:4*:*)
+ # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
+ # earlier versions are messed up and put the nodename in both
+ # sysname and nodename.
+ echo i386-sequent-sysv4
+ exit ;;
+ i*86:UNIX_SV:4.2MP:2.*)
+ # Unixware is an offshoot of SVR4, but it has its own version
+ # number series starting with 2...
+ # I am not positive that other SVR4 systems won't match this,
+ # I just have to hope. -- rms.
+ # Use sysv4.2uw... so that sysv4* matches it.
+ echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
+ exit ;;
+ i*86:OS/2:*:*)
+ # If we were able to find `uname', then EMX Unix compatibility
+ # is probably installed.
+ echo ${UNAME_MACHINE}-pc-os2-emx
+ exit ;;
+ i*86:XTS-300:*:STOP)
+ echo ${UNAME_MACHINE}-unknown-stop
+ exit ;;
+ i*86:atheos:*:*)
+ echo ${UNAME_MACHINE}-unknown-atheos
+ exit ;;
+ i*86:syllable:*:*)
+ echo ${UNAME_MACHINE}-pc-syllable
+ exit ;;
+ i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
+ echo i386-unknown-lynxos${UNAME_RELEASE}
+ exit ;;
+ i*86:*DOS:*:*)
+ echo ${UNAME_MACHINE}-pc-msdosdjgpp
+ exit ;;
+ i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
+ UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
+ if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
+ echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
+ else
+ echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
+ fi
+ exit ;;
+ i*86:*:5:[678]*)
+ # UnixWare 7.x, OpenUNIX and OpenServer 6.
+ case `/bin/uname -X | grep "^Machine"` in
+ *486*) UNAME_MACHINE=i486 ;;
+ *Pentium) UNAME_MACHINE=i586 ;;
+ *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
+ esac
+ echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
+ exit ;;
+ i*86:*:3.2:*)
+ if test -f /usr/options/cb.name; then
+ UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
+ echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
+ elif /bin/uname -X 2>/dev/null >/dev/null ; then
+ UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
+ (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
+ (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
+ && UNAME_MACHINE=i586
+ (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \
+ && UNAME_MACHINE=i686
+ (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
+ && UNAME_MACHINE=i686
+ echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
+ else
+ echo ${UNAME_MACHINE}-pc-sysv32
+ fi
+ exit ;;
+ pc:*:*:*)
+ # Left here for compatibility:
+ # uname -m prints for DJGPP always 'pc', but it prints nothing about
+ # the processor, so we play safe by assuming i386.
+ echo i386-pc-msdosdjgpp
+ exit ;;
+ Intel:Mach:3*:*)
+ echo i386-pc-mach3
+ exit ;;
+ paragon:*:*:*)
+ echo i860-intel-osf1
+ exit ;;
+ i860:*:4.*:*) # i860-SVR4
+ if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
+ echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
+ else # Add other i860-SVR4 vendors below as they are discovered.
+ echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4
+ fi
+ exit ;;
+ mini*:CTIX:SYS*5:*)
+ # "miniframe"
+ echo m68010-convergent-sysv
+ exit ;;
+ mc68k:UNIX:SYSTEM5:3.51m)
+ echo m68k-convergent-sysv
+ exit ;;
+ M680?0:D-NIX:5.3:*)
+ echo m68k-diab-dnix
+ exit ;;
+ M68*:*:R3V[5678]*:*)
+ test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
+ 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
+ OS_REL=''
+ test -r /etc/.relid \
+ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
+ /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+ && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
+ /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
+ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
+ 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
+ /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+ && { echo i486-ncr-sysv4; exit; } ;;
+ m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
+ echo m68k-unknown-lynxos${UNAME_RELEASE}
+ exit ;;
+ mc68030:UNIX_System_V:4.*:*)
+ echo m68k-atari-sysv4
+ exit ;;
+ TSUNAMI:LynxOS:2.*:*)
+ echo sparc-unknown-lynxos${UNAME_RELEASE}
+ exit ;;
+ rs6000:LynxOS:2.*:*)
+ echo rs6000-unknown-lynxos${UNAME_RELEASE}
+ exit ;;
+ PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*)
+ echo powerpc-unknown-lynxos${UNAME_RELEASE}
+ exit ;;
+ SM[BE]S:UNIX_SV:*:*)
+ echo mips-dde-sysv${UNAME_RELEASE}
+ exit ;;
+ RM*:ReliantUNIX-*:*:*)
+ echo mips-sni-sysv4
+ exit ;;
+ RM*:SINIX-*:*:*)
+ echo mips-sni-sysv4
+ exit ;;
+ *:SINIX-*:*:*)
+ if uname -p 2>/dev/null >/dev/null ; then
+ UNAME_MACHINE=`(uname -p) 2>/dev/null`
+ echo ${UNAME_MACHINE}-sni-sysv4
+ else
+ echo ns32k-sni-sysv
+ fi
+ exit ;;
+ PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
+ # says <Richard.M.Bartel@ccMail.Census.GOV>
+ echo i586-unisys-sysv4
+ exit ;;
+ *:UNIX_System_V:4*:FTX*)
+ # From Gerald Hewes <hewes@openmarket.com>.
+ # How about differentiating between stratus architectures? -djm
+ echo hppa1.1-stratus-sysv4
+ exit ;;
+ *:*:*:FTX*)
+ # From seanf@swdc.stratus.com.
+ echo i860-stratus-sysv4
+ exit ;;
+ i*86:VOS:*:*)
+ # From Paul.Green@stratus.com.
+ echo ${UNAME_MACHINE}-stratus-vos
+ exit ;;
+ *:VOS:*:*)
+ # From Paul.Green@stratus.com.
+ echo hppa1.1-stratus-vos
+ exit ;;
+ mc68*:A/UX:*:*)
+ echo m68k-apple-aux${UNAME_RELEASE}
+ exit ;;
+ news*:NEWS-OS:6*:*)
+ echo mips-sony-newsos6
+ exit ;;
+ R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
+ if [ -d /usr/nec ]; then
+ echo mips-nec-sysv${UNAME_RELEASE}
+ else
+ echo mips-unknown-sysv${UNAME_RELEASE}
+ fi
+ exit ;;
+ BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only.
+ echo powerpc-be-beos
+ exit ;;
+ BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only.
+ echo powerpc-apple-beos
+ exit ;;
+ BePC:BeOS:*:*) # BeOS running on Intel PC compatible.
+ echo i586-pc-beos
+ exit ;;
+ SX-4:SUPER-UX:*:*)
+ echo sx4-nec-superux${UNAME_RELEASE}
+ exit ;;
+ SX-5:SUPER-UX:*:*)
+ echo sx5-nec-superux${UNAME_RELEASE}
+ exit ;;
+ SX-6:SUPER-UX:*:*)
+ echo sx6-nec-superux${UNAME_RELEASE}
+ exit ;;
+ SX-7:SUPER-UX:*:*)
+ echo sx7-nec-superux${UNAME_RELEASE}
+ exit ;;
+ SX-8:SUPER-UX:*:*)
+ echo sx8-nec-superux${UNAME_RELEASE}
+ exit ;;
+ SX-8R:SUPER-UX:*:*)
+ echo sx8r-nec-superux${UNAME_RELEASE}
+ exit ;;
+ Power*:Rhapsody:*:*)
+ echo powerpc-apple-rhapsody${UNAME_RELEASE}
+ exit ;;
+ *:Rhapsody:*:*)
+ echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
+ exit ;;
+ *:Darwin:*:*)
+ UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
+ case $UNAME_PROCESSOR in
+ unknown) UNAME_PROCESSOR=powerpc ;;
+ esac
+ echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
+ exit ;;
+ *:procnto*:*:* | *:QNX:[0123456789]*:*)
+ UNAME_PROCESSOR=`uname -p`
+ if test "$UNAME_PROCESSOR" = "x86"; then
+ UNAME_PROCESSOR=i386
+ UNAME_MACHINE=pc
+ fi
+ echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
+ exit ;;
+ *:QNX:*:4*)
+ echo i386-pc-qnx
+ exit ;;
+ NSE-?:NONSTOP_KERNEL:*:*)
+ echo nse-tandem-nsk${UNAME_RELEASE}
+ exit ;;
+ NSR-?:NONSTOP_KERNEL:*:*)
+ echo nsr-tandem-nsk${UNAME_RELEASE}
+ exit ;;
+ *:NonStop-UX:*:*)
+ echo mips-compaq-nonstopux
+ exit ;;
+ BS2000:POSIX*:*:*)
+ echo bs2000-siemens-sysv
+ exit ;;
+ DS/*:UNIX_System_V:*:*)
+ echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
+ exit ;;
+ *:Plan9:*:*)
+ # "uname -m" is not consistent, so use $cputype instead. 386
+ # is converted to i386 for consistency with other x86
+ # operating systems.
+ if test "$cputype" = "386"; then
+ UNAME_MACHINE=i386
+ else
+ UNAME_MACHINE="$cputype"
+ fi
+ echo ${UNAME_MACHINE}-unknown-plan9
+ exit ;;
+ *:TOPS-10:*:*)
+ echo pdp10-unknown-tops10
+ exit ;;
+ *:TENEX:*:*)
+ echo pdp10-unknown-tenex
+ exit ;;
+ KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
+ echo pdp10-dec-tops20
+ exit ;;
+ XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
+ echo pdp10-xkl-tops20
+ exit ;;
+ *:TOPS-20:*:*)
+ echo pdp10-unknown-tops20
+ exit ;;
+ *:ITS:*:*)
+ echo pdp10-unknown-its
+ exit ;;
+ SEI:*:*:SEIUX)
+ echo mips-sei-seiux${UNAME_RELEASE}
+ exit ;;
+ *:DragonFly:*:*)
+ echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
+ exit ;;
+ *:*VMS:*:*)
+ UNAME_MACHINE=`(uname -p) 2>/dev/null`
+ case "${UNAME_MACHINE}" in
+ A*) echo alpha-dec-vms ; exit ;;
+ I*) echo ia64-dec-vms ; exit ;;
+ V*) echo vax-dec-vms ; exit ;;
+ esac ;;
+ *:XENIX:*:SysV)
+ echo i386-pc-xenix
+ exit ;;
+ i*86:skyos:*:*)
+ echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//'
+ exit ;;
+ i*86:rdos:*:*)
+ echo ${UNAME_MACHINE}-pc-rdos
+ exit ;;
+esac
+
+#echo '(No uname command or uname output not recognized.)' 1>&2
+#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
+
+eval $set_cc_for_build
+cat >$dummy.c <<EOF
+#ifdef _SEQUENT_
+# include <sys/types.h>
+# include <sys/utsname.h>
+#endif
+main ()
+{
+#if defined (sony)
+#if defined (MIPSEB)
+ /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed,
+ I don't know.... */
+ printf ("mips-sony-bsd\n"); exit (0);
+#else
+#include <sys/param.h>
+ printf ("m68k-sony-newsos%s\n",
+#ifdef NEWSOS4
+ "4"
+#else
+ ""
+#endif
+ ); exit (0);
+#endif
+#endif
+
+#if defined (__arm) && defined (__acorn) && defined (__unix)
+ printf ("arm-acorn-riscix\n"); exit (0);
+#endif
+
+#if defined (hp300) && !defined (hpux)
+ printf ("m68k-hp-bsd\n"); exit (0);
+#endif
+
+#if defined (NeXT)
+#if !defined (__ARCHITECTURE__)
+#define __ARCHITECTURE__ "m68k"
+#endif
+ int version;
+ version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
+ if (version < 4)
+ printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
+ else
+ printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
+ exit (0);
+#endif
+
+#if defined (MULTIMAX) || defined (n16)
+#if defined (UMAXV)
+ printf ("ns32k-encore-sysv\n"); exit (0);
+#else
+#if defined (CMU)
+ printf ("ns32k-encore-mach\n"); exit (0);
+#else
+ printf ("ns32k-encore-bsd\n"); exit (0);
+#endif
+#endif
+#endif
+
+#if defined (__386BSD__)
+ printf ("i386-pc-bsd\n"); exit (0);
+#endif
+
+#if defined (sequent)
+#if defined (i386)
+ printf ("i386-sequent-dynix\n"); exit (0);
+#endif
+#if defined (ns32000)
+ printf ("ns32k-sequent-dynix\n"); exit (0);
+#endif
+#endif
+
+#if defined (_SEQUENT_)
+ struct utsname un;
+
+ uname(&un);
+
+ if (strncmp(un.version, "V2", 2) == 0) {
+ printf ("i386-sequent-ptx2\n"); exit (0);
+ }
+ if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
+ printf ("i386-sequent-ptx1\n"); exit (0);
+ }
+ printf ("i386-sequent-ptx\n"); exit (0);
+
+#endif
+
+#if defined (vax)
+# if !defined (ultrix)
+# include <sys/param.h>
+# if defined (BSD)
+# if BSD == 43
+ printf ("vax-dec-bsd4.3\n"); exit (0);
+# else
+# if BSD == 199006
+ printf ("vax-dec-bsd4.3reno\n"); exit (0);
+# else
+ printf ("vax-dec-bsd\n"); exit (0);
+# endif
+# endif
+# else
+ printf ("vax-dec-bsd\n"); exit (0);
+# endif
+# else
+ printf ("vax-dec-ultrix\n"); exit (0);
+# endif
+#endif
+
+#if defined (alliant) && defined (i860)
+ printf ("i860-alliant-bsd\n"); exit (0);
+#endif
+
+ exit (1);
+}
+EOF
+
+$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` &&
+ { echo "$SYSTEM_NAME"; exit; }
+
+# Apollos put the system type in the environment.
+
+test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; }
+
+# Convex versions that predate uname can use getsysinfo(1)
+
+if [ -x /usr/convex/getsysinfo ]
+then
+ case `getsysinfo -f cpu_type` in
+ c1*)
+ echo c1-convex-bsd
+ exit ;;
+ c2*)
+ if getsysinfo -f scalar_acc
+ then echo c32-convex-bsd
+ else echo c2-convex-bsd
+ fi
+ exit ;;
+ c34*)
+ echo c34-convex-bsd
+ exit ;;
+ c38*)
+ echo c38-convex-bsd
+ exit ;;
+ c4*)
+ echo c4-convex-bsd
+ exit ;;
+ esac
+fi
+
+cat >&2 <<EOF
+$0: unable to guess system type
+
+This script, last modified $timestamp, has failed to recognize
+the operating system you are using. It is advised that you
+download the most up to date version of the config scripts from
+
+ http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
+and
+ http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
+
+If the version you run ($0) is already up to date, please
+send the following data and any information you think might be
+pertinent to <config-patches@gnu.org> in order to provide the needed
+information to handle your system.
+
+config.guess timestamp = $timestamp
+
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
+/bin/uname -X = `(/bin/uname -X) 2>/dev/null`
+
+hostinfo = `(hostinfo) 2>/dev/null`
+/bin/universe = `(/bin/universe) 2>/dev/null`
+/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null`
+/bin/arch = `(/bin/arch) 2>/dev/null`
+/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
+
+UNAME_MACHINE = ${UNAME_MACHINE}
+UNAME_RELEASE = ${UNAME_RELEASE}
+UNAME_SYSTEM = ${UNAME_SYSTEM}
+UNAME_VERSION = ${UNAME_VERSION}
+EOF
+
+exit 1
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
--- /dev/null
+#! /bin/sh
+# Configuration validation subroutine script.
+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
+# Free Software Foundation, Inc.
+
+timestamp='2008-01-16'
+
+# This file is (in principle) common to ALL GNU software.
+# The presence of a machine in this file suggests that SOME GNU software
+# can handle that machine. It does not imply ALL GNU software can.
+#
+# This file is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
+# 02110-1301, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+
+# Please send patches to <config-patches@gnu.org>. Submit a context
+# diff and a properly formatted ChangeLog entry.
+#
+# Configuration subroutine to validate and canonicalize a configuration type.
+# Supply the specified configuration type as an argument.
+# If it is invalid, we print an error message on stderr and exit with code 1.
+# Otherwise, we print the canonical config type on stdout and succeed.
+
+# This file is supposed to be the same for all GNU packages
+# and recognize all the CPU types, system types and aliases
+# that are meaningful with *any* GNU software.
+# Each package is responsible for reporting which valid configurations
+# it does not support. The user should be able to distinguish
+# a failure to support a valid configuration from a meaningless
+# configuration.
+
+# The goal of this file is to map all the various variations of a given
+# machine specification into a single specification in the form:
+# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
+# or in some cases, the newer four-part form:
+# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
+# It is wrong to echo any other type of specification.
+
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION] CPU-MFR-OPSYS
+ $0 [OPTION] ALIAS
+
+Canonicalize a configuration name.
+
+Operation modes:
+ -h, --help print this help, then exit
+ -t, --time-stamp print date of last modification, then exit
+ -v, --version print version number, then exit
+
+Report bugs and patches to <config-patches@gnu.org>."
+
+version="\
+GNU config.sub ($timestamp)
+
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
+2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+
+This is free software; see the source for copying conditions. There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+ case $1 in
+ --time-stamp | --time* | -t )
+ echo "$timestamp" ; exit ;;
+ --version | -v )
+ echo "$version" ; exit ;;
+ --help | --h* | -h )
+ echo "$usage"; exit ;;
+ -- ) # Stop option processing
+ shift; break ;;
+ - ) # Use stdin as input.
+ break ;;
+ -* )
+ echo "$me: invalid option $1$help"
+ exit 1 ;;
+
+ *local*)
+ # First pass through any local machine types.
+ echo $1
+ exit ;;
+
+ * )
+ break ;;
+ esac
+done
+
+case $# in
+ 0) echo "$me: missing argument$help" >&2
+ exit 1;;
+ 1) ;;
+ *) echo "$me: too many arguments$help" >&2
+ exit 1;;
+esac
+
+# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
+# Here we must recognize all the valid KERNEL-OS combinations.
+maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
+case $maybe_os in
+ nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \
+ uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \
+ storm-chaos* | os2-emx* | rtmk-nova*)
+ os=-$maybe_os
+ basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
+ ;;
+ *)
+ basic_machine=`echo $1 | sed 's/-[^-]*$//'`
+ if [ $basic_machine != $1 ]
+ then os=`echo $1 | sed 's/.*-/-/'`
+ else os=; fi
+ ;;
+esac
+
+### Let's recognize common machines as not being operating systems so
+### that things like config.sub decstation-3100 work. We also
+### recognize some manufacturers as not being operating systems, so we
+### can provide default operating systems below.
+case $os in
+ -sun*os*)
+ # Prevent following clause from handling this invalid input.
+ ;;
+ -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
+ -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
+ -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
+ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
+ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
+ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
+ -apple | -axis | -knuth | -cray)
+ os=
+ basic_machine=$1
+ ;;
+ -sim | -cisco | -oki | -wec | -winbond)
+ os=
+ basic_machine=$1
+ ;;
+ -scout)
+ ;;
+ -wrs)
+ os=-vxworks
+ basic_machine=$1
+ ;;
+ -chorusos*)
+ os=-chorusos
+ basic_machine=$1
+ ;;
+ -chorusrdb)
+ os=-chorusrdb
+ basic_machine=$1
+ ;;
+ -hiux*)
+ os=-hiuxwe2
+ ;;
+ -sco6)
+ os=-sco5v6
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -sco5)
+ os=-sco3.2v5
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -sco4)
+ os=-sco3.2v4
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -sco3.2.[4-9]*)
+ os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -sco3.2v[4-9]*)
+ # Don't forget version if it is 3.2v4 or newer.
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -sco5v6*)
+ # Don't forget version if it is 3.2v4 or newer.
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -sco*)
+ os=-sco3.2v2
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -udk*)
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -isc)
+ os=-isc2.2
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -clix*)
+ basic_machine=clipper-intergraph
+ ;;
+ -isc*)
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -lynx*)
+ os=-lynxos
+ ;;
+ -ptx*)
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
+ ;;
+ -windowsnt*)
+ os=`echo $os | sed -e 's/windowsnt/winnt/'`
+ ;;
+ -psos*)
+ os=-psos
+ ;;
+ -mint | -mint[0-9]*)
+