<feed xmlns='http://www.w3.org/2005/Atom'>
<title>libguestfs.git/bootstrap, branch stable-1.4</title>
<subtitle>[MIRROR] library for accessing and modifying guest disk images</subtitle>
<link rel='alternate' type='text/html' href='https://fedorapeople.org/cgit/rjones/public_git/libguestfs.git/'/>
<entry>
<title>po: Don't generate po/Makevars file and include Perl keywords (RHBZ#559963).</title>
<updated>2010-05-12T17:13:01+00:00</updated>
<author>
<name>Richard Jones</name>
<email>rjones@redhat.com</email>
</author>
<published>2010-05-12T13:19:50+00:00</published>
<link rel='alternate' type='text/html' href='https://fedorapeople.org/cgit/rjones/public_git/libguestfs.git/commit/?id=48133118071a26950840fe33326c09130955c35e'/>
<id>48133118071a26950840fe33326c09130955c35e</id>
<content type='text'>
I don't see a reason to autogenerate po/Makevars, and in the
earlier commit which changed this file to being autogenerated
we accidentally lost the special Perl keywords, copyright notice
and bug reporting address.  Fix all of that.

This partially reverts commit febff9d2a35c4f40abbaf8943146476bdeac671e.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
I don't see a reason to autogenerate po/Makevars, and in the
earlier commit which changed this file to being autogenerated
we accidentally lost the special Perl keywords, copyright notice
and bug reporting address.  Fix all of that.

This partially reverts commit febff9d2a35c4f40abbaf8943146476bdeac671e.
</pre>
</div>
</content>
</entry>
<entry>
<title>Mac OS X: Use gnulib setenv module explicitly.</title>
<updated>2010-03-22T08:38:36+00:00</updated>
<author>
<name>Richard Jones</name>
<email>rich@koneko.home.annexia.org</email>
</author>
<published>2010-03-22T08:29:17+00:00</published>
<link rel='alternate' type='text/html' href='https://fedorapeople.org/cgit/rjones/public_git/libguestfs.git/commit/?id=f5d52fa3c00e525cd5d86089b85f970a5c4e7c21'/>
<id>f5d52fa3c00e525cd5d86089b85f970a5c4e7c21</id>
<content type='text'>
See:
https://www.redhat.com/archives/libguestfs/2010-March/thread.html#00094
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
See:
https://www.redhat.com/archives/libguestfs/2010-March/thread.html#00094
</pre>
</div>
</content>
</entry>
<entry>
<title>Rewrite libguestfs-supermin-helper in C.</title>
<updated>2010-03-12T16:21:58+00:00</updated>
<author>
<name>Richard Jones</name>
<email>rjones@redhat.com</email>
</author>
<published>2010-03-12T16:20:31+00:00</published>
<link rel='alternate' type='text/html' href='https://fedorapeople.org/cgit/rjones/public_git/libguestfs.git/commit/?id=cb9613b993792c1c4b14fa0d9b5001ff644ac2f4'/>
<id>cb9613b993792c1c4b14fa0d9b5001ff644ac2f4</id>
<content type='text'>
libguestfs-supermin-helper was previously a shell script.  Although
we had steadily optimized it, there were a number of intractable
hot spots:

  (1) cpio still reads input files in 512 byte chunks; this is *very*
    pessimal behaviour, particularly when SELinux is enabled.
  (2) the hostfiles globbing was done very inefficiently by the shell,
    with the shell rereading the same directory over and over again.

This is a rewrite of this shell script in C.  It is approximately
3 times faster without SELinux, and has an even greater speed difference
with SELinux.

The main features are:

  (a) It never frees memory, making it simpler.  The program is designed
    to run and exit in sub-second times, so this is acceptable.
  (b) It caches directory reads, making the globbing of host files much
    faster (measured this as ~ 4 x speed up).
  (c) It doesn't use external cpio, but instead contains code to write
    newc format cpio files, which is all that the kernel can read.  Unlike
    cpio, this code uses large buffers for reads and writes.
  (d) Ignores missing or unreadable hostfiles, whereas cpio gave a
    warning.
  (e) Checks all return values from system calls.
  (f) With --verbose flag, it will print messages timing itself.

This passes all tests.

Updated with feedback from Jim Meyering.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
libguestfs-supermin-helper was previously a shell script.  Although
we had steadily optimized it, there were a number of intractable
hot spots:

  (1) cpio still reads input files in 512 byte chunks; this is *very*
    pessimal behaviour, particularly when SELinux is enabled.
  (2) the hostfiles globbing was done very inefficiently by the shell,
    with the shell rereading the same directory over and over again.

This is a rewrite of this shell script in C.  It is approximately
3 times faster without SELinux, and has an even greater speed difference
with SELinux.

The main features are:

  (a) It never frees memory, making it simpler.  The program is designed
    to run and exit in sub-second times, so this is acceptable.
  (b) It caches directory reads, making the globbing of host files much
    faster (measured this as ~ 4 x speed up).
  (c) It doesn't use external cpio, but instead contains code to write
    newc format cpio files, which is all that the kernel can read.  Unlike
    cpio, this code uses large buffers for reads and writes.
  (d) Ignores missing or unreadable hostfiles, whereas cpio gave a
    warning.
  (e) Checks all return values from system calls.
  (f) With --verbose flag, it will print messages timing itself.

This passes all tests.

Updated with feedback from Jim Meyering.
</pre>
</div>
</content>
</entry>
<entry>
<title>hivex: Add HIVEX_OPEN_WRITE flag to allow hive to be opened for writing.</title>
<updated>2010-02-04T11:06:33+00:00</updated>
<author>
<name>Richard Jones</name>
<email>rjones@redhat.com</email>
</author>
<published>2010-01-18T11:08:56+00:00</published>
<link rel='alternate' type='text/html' href='https://fedorapeople.org/cgit/rjones/public_git/libguestfs.git/commit/?id=4718aeb9f0f743a05dfa342bc797617f3b9f96b3'/>
<id>4718aeb9f0f743a05dfa342bc797617f3b9f96b3</id>
<content type='text'>
If this flag is omitted (as in the case for all existing callers)
then the hive is still opened read-only.

We add a 'writable' flag to the hive handle, and we change the way
that the hive file (data) is stored.  The data is still mmapped if
the file is opened read-only, since that is more efficient and allows
us to handle larger hives.  However if we need to write to the file
then we have to read it all into memory, since if we had to extend the
file we need to realloc that data.

Note the manpage section L&lt;/WRITING TO HIVE FILES&gt; comes in a later
commit.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
If this flag is omitted (as in the case for all existing callers)
then the hive is still opened read-only.

We add a 'writable' flag to the hive handle, and we change the way
that the hive file (data) is stored.  The data is still mmapped if
the file is opened read-only, since that is more efficient and allows
us to handle larger hives.  However if we need to write to the file
then we have to read it all into memory, since if we had to extend the
file we need to realloc that data.

Note the manpage section L&lt;/WRITING TO HIVE FILES&gt; comes in a later
commit.
</pre>
</div>
</content>
</entry>
<entry>
<title>guestfish: Use xstrtol to parse integers (RHBZ#557655).</title>
<updated>2010-01-25T12:07:34+00:00</updated>
<author>
<name>Richard Jones</name>
<email>rjones@redhat.com</email>
</author>
<published>2010-01-22T11:01:06+00:00</published>
<link rel='alternate' type='text/html' href='https://fedorapeople.org/cgit/rjones/public_git/libguestfs.git/commit/?id=58abe782bf7137526b4a5c7e6d5d2b145e3b09d2'/>
<id>58abe782bf7137526b4a5c7e6d5d2b145e3b09d2</id>
<content type='text'>
Current code uses atoi to parse the generator Int type and
atoll to parse the generator Int64 type.  The problem with the
ato* functions is that they don't cope with errors very well,
and they cannot parse numbers that begin with 0.. or 0x..
for octal and hexadecimal respectively.

This replaces the atoi call with a call to Gnulib xstrtol
and the atoll call with a call to Gnulib xstrtoll.

The generated code looks like this for all Int arguments:

  {
    strtol_error xerr;
    long r;

    xerr = xstrtol (argv[0], NULL, 0, &amp;r, "");
    if (xerr != LONGINT_OK) {
      fprintf (stderr,
               _("%s: %s: invalid integer parameter (%s returned %d)\n"),
               cmd, "memsize", "xstrtol", xerr);
      return -1;
    }
    /* The Int type in the generator is a signed 31 bit int. */
    if (r &lt; (-(2LL&lt;&lt;30)) || r &gt; ((2LL&lt;&lt;30)-1)) {
      fprintf (stderr, _("%s: %s: integer out of range\n"), cmd, "memsize");
      return -1;
    }
    /* The check above should ensure this assignment does not overflow. */
    memsize = r;
  }

and like this for all Int64 arguments (note we don't need the
range check for these):

  {
    strtol_error xerr;
    long long r;

    xerr = xstrtoll (argv[1], NULL, 0, &amp;r, "");
    if (xerr != LONGINT_OK) {
      fprintf (stderr,
               _("%s: %s: invalid integer parameter (%s returned %d)\n"),
               cmd, "size", "xstrtoll", xerr);
      return -1;
    }
    size = r;
  }

Note this also fixes an unrelated bug in guestfish handling of
RBufferOut.  We were using 'fwrite' without checking the return
value, and this could have caused silent failures, eg. in the case
where there was not enough disk space to store the resulting file,
or even if the program was interrupted (but continued) during the
write.

Replace this with Gnulib 'full-write', and check the return value
and report errors.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Current code uses atoi to parse the generator Int type and
atoll to parse the generator Int64 type.  The problem with the
ato* functions is that they don't cope with errors very well,
and they cannot parse numbers that begin with 0.. or 0x..
for octal and hexadecimal respectively.

This replaces the atoi call with a call to Gnulib xstrtol
and the atoll call with a call to Gnulib xstrtoll.

The generated code looks like this for all Int arguments:

  {
    strtol_error xerr;
    long r;

    xerr = xstrtol (argv[0], NULL, 0, &amp;r, "");
    if (xerr != LONGINT_OK) {
      fprintf (stderr,
               _("%s: %s: invalid integer parameter (%s returned %d)\n"),
               cmd, "memsize", "xstrtol", xerr);
      return -1;
    }
    /* The Int type in the generator is a signed 31 bit int. */
    if (r &lt; (-(2LL&lt;&lt;30)) || r &gt; ((2LL&lt;&lt;30)-1)) {
      fprintf (stderr, _("%s: %s: integer out of range\n"), cmd, "memsize");
      return -1;
    }
    /* The check above should ensure this assignment does not overflow. */
    memsize = r;
  }

and like this for all Int64 arguments (note we don't need the
range check for these):

  {
    strtol_error xerr;
    long long r;

    xerr = xstrtoll (argv[1], NULL, 0, &amp;r, "");
    if (xerr != LONGINT_OK) {
      fprintf (stderr,
               _("%s: %s: invalid integer parameter (%s returned %d)\n"),
               cmd, "size", "xstrtoll", xerr);
      return -1;
    }
    size = r;
  }

Note this also fixes an unrelated bug in guestfish handling of
RBufferOut.  We were using 'fwrite' without checking the return
value, and this could have caused silent failures, eg. in the case
where there was not enough disk space to store the resulting file,
or even if the program was interrupted (but continued) during the
write.

Replace this with Gnulib 'full-write', and check the return value
and report errors.
</pre>
</div>
</content>
</entry>
<entry>
<title>lib: Add thread-safety to global list of handles.</title>
<updated>2009-12-07T11:13:12+00:00</updated>
<author>
<name>Richard Jones</name>
<email>rjones@redhat.com</email>
</author>
<published>2009-12-04T14:35:55+00:00</published>
<link rel='alternate' type='text/html' href='https://fedorapeople.org/cgit/rjones/public_git/libguestfs.git/commit/?id=cada248a53858341c91f70392e8f5b6e47d9b4fe'/>
<id>cada248a53858341c91f70392e8f5b6e47d9b4fe</id>
<content type='text'>
This commit uses the Gnulib 'lock' module to implement a mutex on
the global list of handles which is stored by the library.

Note that Gnulib nicely avoids explicitly linking with -lpthread
unless the application program itself links to -lpthread.  Locks
are only enabled in multithreaded applications.

$ ldd src/.libs/libguestfs.so.0.217.0
	linux-vdso.so.1 =&gt;  (0x00007fffcb7ff000)
	libc.so.6 =&gt; /lib64/libc.so.6 (0x00007f96a4e6c000)
	/lib64/ld-linux-x86-64.so.2 (0x00007f96a544d000)

Please enter the commit message for your changes. Lines starting
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This commit uses the Gnulib 'lock' module to implement a mutex on
the global list of handles which is stored by the library.

Note that Gnulib nicely avoids explicitly linking with -lpthread
unless the application program itself links to -lpthread.  Locks
are only enabled in multithreaded applications.

$ ldd src/.libs/libguestfs.so.0.217.0
	linux-vdso.so.1 =&gt;  (0x00007fffcb7ff000)
	libc.so.6 =&gt; /lib64/libc.so.6 (0x00007f96a4e6c000)
	/lib64/ld-linux-x86-64.so.2 (0x00007f96a544d000)

Please enter the commit message for your changes. Lines starting
</pre>
</div>
</content>
</entry>
<entry>
<title>FUSE filesystem support.</title>
<updated>2009-11-03T15:57:26+00:00</updated>
<author>
<name>Richard Jones</name>
<email>rjones@redhat.com</email>
</author>
<published>2009-10-30T16:13:13+00:00</published>
<link rel='alternate' type='text/html' href='https://fedorapeople.org/cgit/rjones/public_git/libguestfs.git/commit/?id=429de2254176e470035eef05e0f3e9910d46863c'/>
<id>429de2254176e470035eef05e0f3e9910d46863c</id>
<content type='text'>
This implements FUSE filesystem support so that any libguestfs-
accessible disk image can be mounted as a local filesystem.

Note: file writes (ie. write(2) system call) is not yet implemented.

The API needs more test coverage, particularly lesser-used system
calls.

The big unresolved issue is UID/GID mapping between guest filesystem
IDs and the host.  It's not easy to automate this because you need
extra details about the guest itself in order to get to its
UID-&gt;username map (eg. /etc/passwd from the guest).
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This implements FUSE filesystem support so that any libguestfs-
accessible disk image can be mounted as a local filesystem.

Note: file writes (ie. write(2) system call) is not yet implemented.

The API needs more test coverage, particularly lesser-used system
calls.

The big unresolved issue is UID/GID mapping between guest filesystem
IDs and the host.  It's not easy to automate this because you need
extra details about the guest itself in order to get to its
UID-&gt;username map (eg. /etc/passwd from the guest).
</pre>
</div>
</content>
</entry>
<entry>
<title>avoid use of all ctype macros</title>
<updated>2009-09-24T09:00:44+00:00</updated>
<author>
<name>Jim Meyering</name>
<email>meyering@redhat.com</email>
</author>
<published>2009-09-24T08:59:01+00:00</published>
<link rel='alternate' type='text/html' href='https://fedorapeople.org/cgit/rjones/public_git/libguestfs.git/commit/?id=6a14f1c2502f58ff7bed8cb451f95a83f5ee920a'/>
<id>6a14f1c2502f58ff7bed8cb451f95a83f5ee920a</id>
<content type='text'>
* cfg.mk (disable_temporarily): Don't disable sc_avoid_ctype_macros.
* fish/tilde.c: Remove unnecessary inclusion of ctype.h.
* bootstrap: Add gnulib's c-ctype module to the list.
* daemon/m4/gnulib-cache.m4: Likewise.
* daemon/ext2.c: Include "c-ctype.h", not &lt;ctype.h&gt;.
Use c_isspace, etc, rather than isspace.
* daemon/guestfsd.c: Likewise.
* daemon/lvm.c: Likewise.
* daemon/proto.c: Likewise.
* fish/fish.c: Likewise.
* fish/tilde.c: Likewise.
* src/generator.ml: Likewise.
* src/guestfs.c: Likewise.
* examples/to-xml.c: Likewise.
* examples/Makefile.am (to_xml_CPPFLAGS): Add -I$(top_srcdir)/gnulib/lib
so inclusion of "c-ctype.h" works.
(to_xml_CPPFLAGS): Rename from to_xml_CFLAGS.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* cfg.mk (disable_temporarily): Don't disable sc_avoid_ctype_macros.
* fish/tilde.c: Remove unnecessary inclusion of ctype.h.
* bootstrap: Add gnulib's c-ctype module to the list.
* daemon/m4/gnulib-cache.m4: Likewise.
* daemon/ext2.c: Include "c-ctype.h", not &lt;ctype.h&gt;.
Use c_isspace, etc, rather than isspace.
* daemon/guestfsd.c: Likewise.
* daemon/lvm.c: Likewise.
* daemon/proto.c: Likewise.
* fish/fish.c: Likewise.
* fish/tilde.c: Likewise.
* src/generator.ml: Likewise.
* src/guestfs.c: Likewise.
* examples/to-xml.c: Likewise.
* examples/Makefile.am (to_xml_CPPFLAGS): Add -I$(top_srcdir)/gnulib/lib
so inclusion of "c-ctype.h" works.
(to_xml_CPPFLAGS): Rename from to_xml_CFLAGS.
</pre>
</div>
</content>
</entry>
<entry>
<title>Gnulib: Add arpa-inet and netinet-in modules.</title>
<updated>2009-09-22T09:55:03+00:00</updated>
<author>
<name>Richard Jones</name>
<email>rjones@trick.home.annexia.org</email>
</author>
<published>2009-09-21T14:27:02+00:00</published>
<link rel='alternate' type='text/html' href='https://fedorapeople.org/cgit/rjones/public_git/libguestfs.git/commit/?id=dcb5aa01835c2cc2310fd8427988a2f2af8924f9'/>
<id>dcb5aa01835c2cc2310fd8427988a2f2af8924f9</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>avoid build-from-scratch failure due to missing daemon/configure</title>
<updated>2009-09-04T16:00:23+00:00</updated>
<author>
<name>Jim Meyering</name>
<email>meyering@redhat.com</email>
</author>
<published>2009-09-04T16:00:23+00:00</published>
<link rel='alternate' type='text/html' href='https://fedorapeople.org/cgit/rjones/public_git/libguestfs.git/commit/?id=cfab42b40752f6dc44971b3c48523b917b374e91'/>
<id>cfab42b40752f6dc44971b3c48523b917b374e91</id>
<content type='text'>
* bootstrap: Don't use autoreconf's --norecursive
option.  We require the default --recursive behavior in order
to create daemon/configure.  Reported by Matthew Booth.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* bootstrap: Don't use autoreconf's --norecursive
option.  We require the default --recursive behavior in order
to create daemon/configure.  Reported by Matthew Booth.
</pre>
</div>
</content>
</entry>
</feed>
