| 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@xxxxxxxxxxxxxxxxxxxx> <3B45DB0B.611C18B1@xxxxxxxxxxxx> |
| 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> |
|---|---|---|
| ||
| Previous by Date: | Re: More on write caching, Steve Lord |
|---|---|
| Next by Date: | Re: libgdbm open & xfs problems, Steve Lord |
| Previous by Thread: | Re: libgdbm open & xfs problems, Andrei Pelinescu-Onciul |
| Next by Thread: | Re: libgdbm open & xfs problems, Steve Lord |
| Indexes: | [Date] [Thread] [Top] [All Lists] |