FAQ Search Today's Posts Mark Forums Read
» Video Reviews

» Linux Archive

Linux-archive is a website aiming to archive linux email lists and to make them easily accessible for linux users/developers.


» Sponsor

» Partners

» Sponsor

Go Back   Linux Archive > Ubuntu > Ubuntu Studio User

 
 
LinkBack Thread Tools
 
Old 05-04-2010, 09:40 PM
David Cantrell
 
Default Generate initrd.addr file correctly for LPAR booting (#546422)

The geninitrdsz.c program was originally provided by IBM. An old bug
number is referenced in the source. Apparently this program is not
generating a useful file any more, so IBM has reworked it and it now
generates a load address patch file that can be used when booting an
LPAR directly.
---
utils/geninitrdsz.c | 51 +++++++++++++++++++++++++++++++++++----------------
1 files changed, 35 insertions(+), 16 deletions(-)

diff --git a/utils/geninitrdsz.c b/utils/geninitrdsz.c
index 6dfd976..b8c824a 100644
--- a/utils/geninitrdsz.c
+++ b/utils/geninitrdsz.c
@@ -1,11 +1,12 @@
/*
- * geninitrdsz.c
- * Generate initrd.size file for zSeries platforms.
+ * gen-initrd-addr.c
+ * Generate initrd.addr file for s390x platforms.
* Takes an integer argument and writes out the binary representation of
- * that value to the initrd.size file.
+ * that value to the initrd.addr file.
* https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=197773
+ * https://bugzilla.redhat.com/show_bug.cgi?id=546422
*
- * Copyright (C) 2007 Red Hat, Inc. All rights reserved.
+ * Copyright (C) 2007-2010 Red Hat, Inc. All rights reserved.
*
* 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
@@ -33,27 +34,45 @@
#include <string.h>

int main(int argc,char **argv) {
- unsigned int zero = 0;
- int fd;
- unsigned int size;
- mode_t mode = S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH;
+ struct stat initrd_stat;
+ unsigned int addr = 0, size = 0, zero = 0;
+ int fd, rc;
+ char *tmp = NULL;

if (argc != 3) {
- printf("Usage: %s [integer size] [output file]
", basename(argv[0]));
- printf("Example: %s 12288475 initrd.size
", basename(argv[0]));
- return 0;
+ printf("Generate initrd.addr file used by the .ins LPAR load mechanism
");
+ printf("Usage: %s [address] [output file]
", basename(argv[0]));
+ printf("Example: %s 0x2000000 initrd.size
", basename(argv[0]));
+ return EXIT_SUCCESS;
}

- size = htonl(atoi(argv[1]));
- fd = open(argv[2], O_CREAT | O_RDWR, mode);
+ rc = stat(argv[2], &initrd_stat);
+ if (rc) {
+ perror("Error getting initrd stats ");
+ return rc;
+ }
+
+ addr = htonl(strtoul(argv[1], &tmp, 0));
+ size = initrd_stat.st_size;
+ fd = open(argv[2], O_CREAT | O_RDWR, S_IRUSR | S_IWUSR);
+
+ if (write(fd, &zero, sizeof(int)) == -1) {
+ perror("writing initrd.addr (zero) ");
+ return errno;
+ }
+
+ if (write(fd, &addr, sizeof(int)) == -1) {
+ perror("writing initrd.addr (zero) ");
+ return errno;
+ }

if (write(fd, &zero, sizeof(int)) == -1) {
- perror("writing initrd.size (zero)");
+ perror("writing initrd.addr (zero) ");
return errno;
}

- if (write(fd, &size, sizeof(int)) == -1) {
- perror("writing initrd.size (size)");
+ if (write(fd, &addr, sizeof(int)) == -1) {
+ perror("writing initrd.addr (zero) ");
return errno;
}

--
1.6.6.1

_______________________________________________
Anaconda-devel-list mailing list
Anaconda-devel-list@redhat.com
https://www.redhat.com/mailman/listinfo/anaconda-devel-list
 
Old 05-04-2010, 11:01 PM
Steffen Maier
 
Default Generate initrd.addr file correctly for LPAR booting (#546422)

Sorry, but you screwed it up completely.

On 05/04/2010 11:40 PM, David Cantrell wrote:
> The geninitrdsz.c program was originally provided by IBM. An old bug
> number is referenced in the source. Apparently this program is not
> generating a useful file any more, so IBM has reworked it and it now
> generates a load address patch file that can be used when booting an
> LPAR directly.

geninitrdsz would still generate a working patch file for the initrd
size. However, we now also need to patch the initrd load address.
So IBM provides a new tool geninitrdpatch, which generates a patch
for *both load address and size of initrd* and thus happens to replace
geninitrdsz.

See below for more issues.

> ---
> utils/geninitrdsz.c | 51 +++++++++++++++++++++++++++++++++++----------------
> 1 files changed, 35 insertions(+), 16 deletions(-)
>
> diff --git a/utils/geninitrdsz.c b/utils/geninitrdsz.c
> index 6dfd976..b8c824a 100644
> --- a/utils/geninitrdsz.c
> +++ b/utils/geninitrdsz.c
> @@ -1,11 +1,12 @@
> /*
> - * geninitrdsz.c
> - * Generate initrd.size file for zSeries platforms.
> + * gen-initrd-addr.c

* gen-initrd-patch.c

> + * Generate initrd.addr file for s390x platforms.

* Generate initrd.patch file for s390x platforms.

> * Takes an integer argument and writes out the binary representation of
> - * that value to the initrd.size file.
> + * that value to the initrd.addr file.

* Takes an integer argument as initrd load address,
* a filename of an initrd to determine its size, and
* a filename of the output patch file.
* Writes out the binary representation of load address and size
* as two 64 bit big endian integers.

> * https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=197773
> + * https://bugzilla.redhat.com/show_bug.cgi?id=546422
> *
> - * Copyright (C) 2007 Red Hat, Inc. All rights reserved.
> + * Copyright (C) 2007-2010 Red Hat, Inc. All rights reserved.
> *
> * 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
> @@ -33,27 +34,45 @@
> #include <string.h>
>
> int main(int argc,char **argv) {
> - unsigned int zero = 0;
> - int fd;
> - unsigned int size;
> - mode_t mode = S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH;
> + struct stat initrd_stat;
> + unsigned int addr = 0, size = 0, zero = 0;
> + int fd, rc;
> + char *tmp = NULL;
>
> if (argc != 3) {

if (argc != 4) {

> - printf("Usage: %s [integer size] [output file]
", basename(argv[0]));
> - printf("Example: %s 12288475 initrd.size
", basename(argv[0]));
> - return 0;
> + printf("Generate initrd.addr file used by the .ins LPAR load mechanism
");
> + printf("Usage: %s [address] [output file]
", basename(argv[0]));
> + printf("Example: %s 0x2000000 initrd.size
", basename(argv[0]));

printf("Generate initrd.patch file used by the .ins LPAR load
mechanism
");
printf("Usage: %s [load address] [input initrd file] [output
patch file]
", basename(argv[0]));
printf("Example: %s 0x2000000 initrd.img initrd.patch
",
basename(argv[0]));

> + return EXIT_SUCCESS;

I know our tool had this with zero, but how can calling the tool
incorrectly exit with a successful error level?

> }
>
> - size = htonl(atoi(argv[1]));
> - fd = open(argv[2], O_CREAT | O_RDWR, mode);
> + rc = stat(argv[2], &initrd_stat);
> + if (rc) {
> + perror("Error getting initrd stats ");
> + return rc;

return 1;

> + }
> +
> + addr = htonl(strtoul(argv[1], &tmp, 0));
> + size = initrd_stat.st_size;

size = htonl(initrd_stat.st_size);

https://bugzilla.redhat.com/show_bug.cgi?id=546422#c31
says there is a htonl missing since all those values must be big endian
and a new tool source had been attached.

> + fd = open(argv[2], O_CREAT | O_RDWR, S_IRUSR | S_IWUSR);

fd = open(argv[3], O_CREAT | O_RDWR, S_IRUSR | S_IWUSR);

In order to be able to specify all those funny absolute paths on
mk-images, we want to write to the outfile in the 3rd command line
argument and not overwrite our precious input file initrd.img.

> +
> + if (write(fd, &zero, sizeof(int)) == -1) {
> + perror("writing initrd.addr (zero) ");
> + return errno;

perror("writing output patch file (first zero) ");
return 2;

> + }
> +
> + if (write(fd, &addr, sizeof(int)) == -1) {
> + perror("writing initrd.addr (zero) ");
> + return errno;

perror("writing output patch file (address) ");
return 3;

> + }
>
> if (write(fd, &zero, sizeof(int)) == -1) {
> - perror("writing initrd.size (zero)");
> + perror("writing initrd.addr (zero) ");
> return errno;

perror("writing output patch file (second zero) ");
return 4;

> }
>
> - if (write(fd, &size, sizeof(int)) == -1) {
> - perror("writing initrd.size (size)");
> + if (write(fd, &addr, sizeof(int)) == -1) {
> + perror("writing initrd.addr (zero) ");
> return errno;

if (write(fd, &size, sizeof(int)) == -1) {
perror("writing output patch file (size) ");
return 5;

This really must be the initrd size as in our tool source and not again
the address.

> }
>

Steffen

Linux on System z Development

IBM Deutschland Research & Development GmbH
Vorsitzender des Aufsichtsrats: Martin Jetter
Geschäftsführung: Dirk Wittkopp
Sitz der Gesellschaft: Böblingen
Registergericht: Amtsgericht Stuttgart, HRB 243294


_______________________________________________
Anaconda-devel-list mailing list
Anaconda-devel-list@redhat.com
https://www.redhat.com/mailman/listinfo/anaconda-devel-list
 
Old 05-05-2010, 12:51 AM
David Cantrell
 
Default Generate initrd.addr file correctly for LPAR booting (#546422)

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On Wed, 5 May 2010, Steffen Maier wrote:


Sorry, but you screwed it up completely.


There seem to be some inconsistences with your review vs. what's in the
Bugzilla comments. Please follow along.


On 05/04/2010 11:40 PM, David Cantrell wrote:

The geninitrdsz.c program was originally provided by IBM. An old bug
number is referenced in the source. Apparently this program is not
generating a useful file any more, so IBM has reworked it and it now
generates a load address patch file that can be used when booting an
LPAR directly.


geninitrdsz would still generate a working patch file for the initrd
size. However, we now also need to patch the initrd load address.
So IBM provides a new tool geninitrdpatch, which generates a patch
for *both load address and size of initrd* and thus happens to replace
geninitrdsz.

See below for more issues.


---
utils/geninitrdsz.c | 51 +++++++++++++++++++++++++++++++++++----------------
1 files changed, 35 insertions(+), 16 deletions(-)

diff --git a/utils/geninitrdsz.c b/utils/geninitrdsz.c
index 6dfd976..b8c824a 100644
--- a/utils/geninitrdsz.c
+++ b/utils/geninitrdsz.c
@@ -1,11 +1,12 @@
/*
- * geninitrdsz.c
- * Generate initrd.size file for zSeries platforms.
+ * gen-initrd-addr.c


* gen-initrd-patch.c


+ * Generate initrd.addr file for s390x platforms.


* Generate initrd.patch file for s390x platforms.


Does it really matter if it's called initrd.addr or initrd.patch? Or even
initrd.size for that matter? I used initrd.addr thinking that it might be a
good idea for people to not mistake this file for the output of diff(1).


* Takes an integer argument and writes out the binary representation of
- * that value to the initrd.size file.
+ * that value to the initrd.addr file.


* Takes an integer argument as initrd load address,
* a filename of an initrd to determine its size, and
* a filename of the output patch file.
* Writes out the binary representation of load address and size
* as two 64 bit big endian integers.


* https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=197773
+ * https://bugzilla.redhat.com/show_bug.cgi?id=546422
*
- * Copyright (C) 2007 Red Hat, Inc. All rights reserved.
+ * Copyright (C) 2007-2010 Red Hat, Inc. All rights reserved.
*
* 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
@@ -33,27 +34,45 @@
#include <string.h>

int main(int argc,char **argv) {
- unsigned int zero = 0;
- int fd;
- unsigned int size;
- mode_t mode = S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH;
+ struct stat initrd_stat;
+ unsigned int addr = 0, size = 0, zero = 0;
+ int fd, rc;
+ char *tmp = NULL;

if (argc != 3) {


if (argc != 4) {


The create_initrd_patch.c file attached to comment #31 says:

if (argc != 3) {


- printf("Usage: %s [integer size] [output file]
", basename(argv[0]));
- printf("Example: %s 12288475 initrd.size
", basename(argv[0]));
- return 0;
+ printf("Generate initrd.addr file used by the .ins LPAR load mechanism
");
+ printf("Usage: %s [address] [output file]
", basename(argv[0]));
+ printf("Example: %s 0x2000000 initrd.size
", basename(argv[0]));


printf("Generate initrd.patch file used by the .ins LPAR load
mechanism
");
printf("Usage: %s [load address] [input initrd file] [output
patch file]
", basename(argv[0]));
printf("Example: %s 0x2000000 initrd.img initrd.patch
",
basename(argv[0]));


Fine, but this is what was in create_initrd_patch.c from comment #31:

printf("

Utility which creates an initrd patch file
");
printf("to be used for the .ins LPAR load mechanism.

");
printf("Usage: %s <addr> <file>

", argv[0]);
printf(" addr where to load initrd
");
printf(" file filename of initrd
");


+ return EXIT_SUCCESS;


I know our tool had this with zero, but how can calling the tool
incorrectly exit with a successful error level?


Because it's just printing the usage information?




}

- size = htonl(atoi(argv[1]));
- fd = open(argv[2], O_CREAT | O_RDWR, mode);
+ rc = stat(argv[2], &initrd_stat);
+ if (rc) {
+ perror("Error getting initrd stats ");
+ return rc;


return 1;


+ }
+
+ addr = htonl(strtoul(argv[1], &tmp, 0));
+ size = initrd_stat.st_size;


size = htonl(initrd_stat.st_size);

https://bugzilla.redhat.com/show_bug.cgi?id=546422#c31
says there is a htonl missing since all those values must be big endian
and a new tool source had been attached.


Legitimate problem. I neglected to copy over that line.


+ fd = open(argv[2], O_CREAT | O_RDWR, S_IRUSR | S_IWUSR);


fd = open(argv[3], O_CREAT | O_RDWR, S_IRUSR | S_IWUSR);

In order to be able to specify all those funny absolute paths on
mk-images, we want to write to the outfile in the 3rd command line
argument and not overwrite our precious input file initrd.img.


That's fine, but how about getting it correct in the version of
create_initrd_patch.c that you attach to the BZ?


+
+ if (write(fd, &zero, sizeof(int)) == -1) {
+ perror("writing initrd.addr (zero) ");
+ return errno;


perror("writing output patch file (first zero) ");
return 2;


+ }
+
+ if (write(fd, &addr, sizeof(int)) == -1) {
+ perror("writing initrd.addr (zero) ");
+ return errno;


perror("writing output patch file (address) ");
return 3;


+ }

if (write(fd, &zero, sizeof(int)) == -1) {
- perror("writing initrd.size (zero)");
+ perror("writing initrd.addr (zero) ");
return errno;


perror("writing output patch file (second zero) ");
return 4;


}

- if (write(fd, &size, sizeof(int)) == -1) {
- perror("writing initrd.size (size)");
+ if (write(fd, &addr, sizeof(int)) == -1) {
+ perror("writing initrd.addr (zero) ");
return errno;


if (write(fd, &size, sizeof(int)) == -1) {
perror("writing output patch file (size) ");
return 5;

This really must be the initrd size as in our tool source and not again
the address.


}





The return code changes, fine, but again, those were not in
create_initrd_patch.c. In fact, the version attached to comment #31 did not
check the return value of write().

It appears the version of create_initrd_patch.c you know and love is not the
same as what was attached to the BZ. There were minimal changes between
geninitrdsz.c and create_initrd_patch.c, which is why I merged in the changes
and renamed the file in anaconda's source as opposed to just taking
create_initrd_patch.c as-is.

Before running at me with pitchforks in the future, could you make sure the
story in the BZ matches what you're going by? Better yet, providing a patch
would greatly simplify and speed up this entire process.

- --
David Cantrell <dcantrell@redhat.com>

Red Hat / Honolulu, HI

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)

iEYEARECAAYFAkvgwR4ACgkQ5hsjjIy1VkmRQACfUynZXmrmg+ h/NVHGXgm8iE37
09sAniXIK4ymG3XhcCHkOfWsdxZ5O3MG
=6/63
-----END PGP SIGNATURE-----

_______________________________________________
Anaconda-devel-list mailing list
Anaconda-devel-list@redhat.com
https://www.redhat.com/mailman/listinfo/anaconda-devel-list
 
Old 05-05-2010, 01:14 PM
Steffen Maier
 
Default Generate initrd.addr file correctly for LPAR booting (#546422)

On 05/05/2010 02:51 AM, David Cantrell wrote:
> On Wed, 5 May 2010, Steffen Maier wrote:
>> On 05/04/2010 11:40 PM, David Cantrell wrote:

>>> ---
>>> utils/geninitrdsz.c | 51
>>> +++++++++++++++++++++++++++++++++++----------------
>>> 1 files changed, 35 insertions(+), 16 deletions(-)
>>>
>>> diff --git a/utils/geninitrdsz.c b/utils/geninitrdsz.c
>>> index 6dfd976..b8c824a 100644
>>> --- a/utils/geninitrdsz.c
>>> +++ b/utils/geninitrdsz.c
>>> @@ -1,11 +1,12 @@
>>> /*
>>> - * geninitrdsz.c
>>> - * Generate initrd.size file for zSeries platforms.
>>> + * gen-initrd-addr.c
>>
>> * gen-initrd-patch.c
>>
>>> + * Generate initrd.addr file for s390x platforms.
>>
>> * Generate initrd.patch file for s390x platforms.
>
> Does it really matter if it's called initrd.addr or initrd.patch? Or even
> initrd.size for that matter? I used initrd.addr thinking that it might
> be a
> good idea for people to not mistake this file for the output of diff(1).

Agreed that a .patch suffix could be mixed up with textual diffs.
I don't like .addr (and .size neither). It is misleading because the
generated file does not just contain the load address but also the
initrd size, the latter of which we've always had and still need. Since
the generated file is actually a binary patch, how about
"initrd.binpatch" or "initrd.addrsize"?

>>> @@ -33,27 +34,45 @@
>>> #include <string.h>
>>>
>>> int main(int argc,char **argv) {

>>> if (argc != 3) {
>>
>> if (argc != 4) {
>
> The create_initrd_patch.c file attached to comment #31 says:
>
> if (argc != 3) {

I know. The tool as provided by IBM is fully functional. It takes two
arguments, a load address integer and a file name for initrd to
determine its file size by means of the stat syscall. Our tool would
then write out a file "initrd.patch" to the current working directory.

You started to adapt the tool to the anaconda build scripts environment
which is perfectly fine. However, you introduced bugs. I was just trying
to help you fix those bugs and thus help you with your integration.

>>> + return EXIT_SUCCESS;
>>
>> I know our tool had this with zero, but how can calling the tool
>> incorrectly exit with a successful error level?
>
> Because it's just printing the usage information?

I would understand this, if the user called it with --help or the like.
However, here we print usage only on incorrect calls which are IMHO
errors. Granted, in comparison to the other issues that's nit picking.

>>> + fd = open(argv[2], O_CREAT | O_RDWR, S_IRUSR | S_IWUSR);
>>
>> fd = open(argv[3], O_CREAT | O_RDWR, S_IRUSR | S_IWUSR);
>>
>> In order to be able to specify all those funny absolute paths on
>> mk-images, we want to write to the outfile in the 3rd command line
>> argument and not overwrite our precious input file initrd.img.
>
> That's fine, but how about getting it correct in the version of
> create_initrd_patch.c that you attach to the BZ?

Our tool works perfectly fine. If you need to adapt it to your
distro-specific build environment you can do that.

>>> + if (write(fd, &zero, sizeof(int)) == -1) {
>>> + perror("writing initrd.addr (zero) ");
>>> + return errno;
>>
>> perror("writing output patch file (first zero) ");
>> return 2;
>>
>>> + }
>>> +
>>> + if (write(fd, &addr, sizeof(int)) == -1) {
>>> + perror("writing initrd.addr (zero) ");
>>> + return errno;
>>
>> perror("writing output patch file (address) ");
>> return 3;
>>
>>> + }

> The return code changes, fine, but again, those were not in
> create_initrd_patch.c. In fact, the version attached to comment #31 did
> not
> check the return value of write().

I'm just saying that if we care for errno, which we should, then we
should do it right(TM). Using errno for the exit error level just seemed
wrong to me considering that the exit status can be between 0 and 255
but errno could be anything. This is what the glibc info doc says:

"For the same reason, it does not work to use the value of `errno' as
the exit status--these can exceed 255."

> It appears the version of create_initrd_patch.c you know and love is not
> the same as what was attached to the BZ.

I only know the old geninitrdsz, our new tools proposed in the BZ, and
your adaptations. I tried to help you and get the latter two in sync.

> There were minimal changes between
> geninitrdsz.c and create_initrd_patch.c, which is why I merged in the
> changes
> and renamed the file in anaconda's source as opposed to just taking
> create_initrd_patch.c as-is.

Adapting the tool is fine. However, there were major changes between
geninitrdsz and our new tool.

> Before running at me with pitchforks in the future, could you make sure the
> story in the BZ matches what you're going by?

My code review comments match both the BZ comments as well as your
adaptations.

Steffen

Linux on System z Development

IBM Deutschland Research & Development GmbH
Vorsitzender des Aufsichtsrats: Martin Jetter
Geschäftsführung: Dirk Wittkopp
Sitz der Gesellschaft: Böblingen
Registergericht: Amtsgericht Stuttgart, HRB 243294


_______________________________________________
Anaconda-devel-list mailing list
Anaconda-devel-list@redhat.com
https://www.redhat.com/mailman/listinfo/anaconda-devel-list
 
Old 05-05-2010, 06:32 PM
"Brian C. Lane"
 
Default Generate initrd.addr file correctly for LPAR booting (#546422)

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 05/05/2010 06:14 AM, Steffen Maier wrote:
> On 05/05/2010 02:51 AM, David Cantrell wrote:
>> On Wed, 5 May 2010, Steffen Maier wrote:
>>> On 05/04/2010 11:40 PM, David Cantrell wrote:
>
>>>> ---
>>>> utils/geninitrdsz.c | 51
>>>> +++++++++++++++++++++++++++++++++++----------------
>>>> 1 files changed, 35 insertions(+), 16 deletions(-)
>>>>
>>>> diff --git a/utils/geninitrdsz.c b/utils/geninitrdsz.c
>>>> index 6dfd976..b8c824a 100644
>>>> --- a/utils/geninitrdsz.c
>>>> +++ b/utils/geninitrdsz.c
>>>> @@ -1,11 +1,12 @@
>>>> /*
>>>> - * geninitrdsz.c
>>>> - * Generate initrd.size file for zSeries platforms.
>>>> + * gen-initrd-addr.c
>>>
>>> * gen-initrd-patch.c
>>>
>>>> + * Generate initrd.addr file for s390x platforms.
>>>
>>> * Generate initrd.patch file for s390x platforms.
>>
>> Does it really matter if it's called initrd.addr or initrd.patch? Or even
>> initrd.size for that matter? I used initrd.addr thinking that it might
>> be a
>> good idea for people to not mistake this file for the output of diff(1).
>
> Agreed that a .patch suffix could be mixed up with textual diffs.
> I don't like .addr (and .size neither). It is misleading because the
> generated file does not just contain the load address but also the
> initrd size, the latter of which we've always had and still need. Since
> the generated file is actually a binary patch, how about
> "initrd.binpatch" or "initrd.addrsize"?

In the interest of injecting another opinion I generally don't like .
in file names, that should be reserved for file name types like .tar or
.bz2 and the like. I think it should be something like initrd-blah and
wouldn't complain about initrd-addr-patch or even initrd-patch

- --
Brian C. Lane <bcl@redhat.com>
Red Hat / Port Orchard, WA
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)

iQEVAwUBS+G5oxF+jBaO/jp/AQKHGwgAn0Jqq+/uIoJSrj2cL9LFfnkz5rpkykfT
rNFH3ffmAMeJ0/1B6/0ZPjYgBLvETcYw7dx3bTS6MuObYnYNZuyGb52t/70nHfjy
J2CsM4Loqrb98CxVGX6RDvKCgTvBm6iIK8p9yMmyjnBVk5lZ7B 6g8uPSGD+QE+/3
WefYEgSL42Bkx4O8E+dp7yNwlrb4yQ8oox2UNY0LSkLXCT9Ehn l1UdEP9XBdERD+
OcfiQtqAbqAmKPQD2C+iwJCBM4jx/QDw+fDVIlozP45fuzfE3jALbxr3jALDj3zx
xU313KH4fAPm+bP6fWV4VBOuMHz8Qbx9koUBVOGK8B+iFRJ2io Zbsw==
=W4Fu
-----END PGP SIGNATURE-----

_______________________________________________
Anaconda-devel-list mailing list
Anaconda-devel-list@redhat.com
https://www.redhat.com/mailman/listinfo/anaconda-devel-list
 

Thread Tools




All times are GMT. The time now is 05:12 AM.

VBulletin, Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO ©2007, Crawlability, Inc.
Copyright ©2007 - 2008, www.linux-archive.org