Обсуждение: pg_internal.init and an index file have the same inode

Поиск
Список
Период
Сортировка

pg_internal.init and an index file have the same inode

От
Daniel Farina
Дата:
I'm not sure if this is an XFS problem, or Postgres.  There's enough
suspicious evidence that it's too hard to say.

Today, I get an interesting issue raised whereby a reasonably simple
query fails on a system that does take successful pg_dumps regularly.
To make a short story shorter, I end up with the following situation
on an index relation file:

$ sha1sum 16587.8 pg_internal.init
4a0f94285c182b67175d6a68669c6b9fd46fa11e  16587.8
4a0f94285c182b67175d6a68669c6b9fd46fa11e  pg_internal.init

And, even more interestingly,

$ stat 16587.8 pg_internal.init File: `16587.8' Size: 98532         Blocks: 200        IO Block: 4096   regular file
Device: fe00h/65024d    Inode: 1073741952  Links: 1
Access: (0600/-rw-------)  Uid: (  107/postgres)   Gid: (  115/postgres)
Access: 2011-12-14 23:35:35.630043643 +0000
Modify: 2011-12-14 23:35:35.630043643 +0000
Change: 2011-12-14 23:35:35.630043643 +0000 File: `pg_internal.init' Size: 98532         Blocks: 200        IO Block:
4096  regular file
 
Device: fe00h/65024d    Inode: 1073741952  Links: 1
Access: (0600/-rw-------)  Uid: (  107/postgres)   Gid: (  115/postgres)
Access: 2011-12-14 23:35:35.630043643 +0000
Modify: 2011-12-14 23:35:35.630043643 +0000
Change: 2011-12-14 23:35:35.630043643 +0000

Most notably, the inode numbers are the same.  At first, I thought
this was a file descriptor race in PG, but then I noticed the file
system only reports *one* link: that doesn't look like a valid state
for XFS.  Should I raise this on their mailing list, and would
pgsql-hackers like to know more about this?  Also, consider this an
advisory, as this was found on a vanilla Ubuntu Lucid 10.04 machine.

As such, I do think this probably could have happened to a non-index
relation file.

This database has had uptime since mid-December, and that inode seems
to have been modified at the time of the last reboot.  The database
was born in October via point-in-time recovery.

...Happy New Year!

-- 
fdr


Re: pg_internal.init and an index file have the same inode

От
Tom Lane
Дата:
Daniel Farina <daniel@heroku.com> writes:
> And, even more interestingly,

> $ stat 16587.8 pg_internal.init
>   File: `16587.8'
>   Size: 98532         Blocks: 200        IO Block: 4096   regular file
> Device: fe00h/65024d    Inode: 1073741952  Links: 1
> Access: (0600/-rw-------)  Uid: (  107/postgres)   Gid: (  115/postgres)
> Access: 2011-12-14 23:35:35.630043643 +0000
> Modify: 2011-12-14 23:35:35.630043643 +0000
> Change: 2011-12-14 23:35:35.630043643 +0000
>   File: `pg_internal.init'
>   Size: 98532         Blocks: 200        IO Block: 4096   regular file
> Device: fe00h/65024d    Inode: 1073741952  Links: 1
> Access: (0600/-rw-------)  Uid: (  107/postgres)   Gid: (  115/postgres)
> Access: 2011-12-14 23:35:35.630043643 +0000
> Modify: 2011-12-14 23:35:35.630043643 +0000
> Change: 2011-12-14 23:35:35.630043643 +0000

> Most notably, the inode numbers are the same.  At first, I thought
> this was a file descriptor race in PG, but then I noticed the file
> system only reports *one* link: that doesn't look like a valid state
> for XFS.

Yeah.  In any case it wouldn't be a PG bug, because we don't issue any
link(2) calls AFAIR.  File an XFS bug.
        regards, tom lane