diff options
author | mckusick <mckusick@FreeBSD.org> | 2013-08-06 16:50:05 +0000 |
---|---|---|
committer | mckusick <mckusick@FreeBSD.org> | 2013-08-06 16:50:05 +0000 |
commit | 9e78a97e0065d580c560b84772c2959b79755500 (patch) | |
tree | 5338a5dc3a07634a35c04b3b4d6d76a23a60f656 /sys/modules/cs | |
parent | cea3d0ebcfdb9647d94f329cbe2a8eb90e3de9d7 (diff) | |
download | FreeBSD-src-9e78a97e0065d580c560b84772c2959b79755500.zip FreeBSD-src-9e78a97e0065d580c560b84772c2959b79755500.tar.gz |
This bug fix is in a code path in rename taken when there is a
collision between a rename and an open system call for the same
target file. Here, rename releases its vnode references, waits for
the open to finish, and then restarts by reacquiring its needed
vnode locks. In this case, rename was unlocking but failing to
release its reference to one of its held vnodes. The effect was
that even after all the actual references to the vnode had gone,
the vnode still showed active references. For files that had been
removed, their space was not reclaimed until the filesystem was
forcibly unmounted.
This bug manifested itself in the Postgres server which would
leak/lose hundreds of files per day amounting to many gigabytes of
disk space. This bug required shutting down Postgres, forcibly
unmounting its filesystem, remounting its filesystem and restarting
Postgres every few days to recover the lost space.
Reported by: Dan Thomas and Palle Girgensohn
Bug-fix by: kib
Tested by: Dan Thomas and Palle Girgensohn
MFC after: 2 weeks
Diffstat (limited to 'sys/modules/cs')
0 files changed, 0 insertions, 0 deletions