xfs
[Top] [All Lists]

Re: libgdbm open & xfs problems

To: Steve Lord <lord@xxxxxxx>, linux-xfs@xxxxxxxxxxx
Subject: Re: libgdbm open & xfs problems
From: Andrei Pelinescu-Onciul <pelinescu-onciul@xxxxxxxxxxxx>
Date: Fri, 06 Jul 2001 19:38:33 +0200
References: <200107061506.f66F6Ma08685@jen.americas.sgi.com> <3B45DB0B.611C18B1@fokus.gmd.de>
Sender: owner-linux-xfs@xxxxxxxxxxx
I think I've found the problem.
It's not an xfs bug, is a bug in libgdbm, gdbm_open:

dbf->header->dir_size = 8 * sizeof (off_t);
[...]

     while (dbf->header->dir_size < dbf->header->block_size)
        {
          dbf->header->dir_size <<= 1;
          dbf->header->dir_bits += 1;
        }

      /* Check for correct block_size. */
      if (dbf->header->dir_size != dbf->header->block_size)
        {
          gdbm_close (dbf);
          gdbm_errno = GDBM_BLOCK_SIZE_ERROR;
          return NULL;
        }

The initial dir_size is 8*4=32. dbf->header->block_size is the io block
size returned by fstat.
On my partition I use swidth=384 => block_size = 196608 = 3 * 65536.
But in the piece of code above dir_size can be only of the form 2^n
(dir_size<<=1), so in my case it will be always different from
block_size :(

I have to report this to libgdbm developers.


Andrei

<Prev in Thread] Current Thread [Next in Thread>