Kirk
Will this be merged into 9.2-RC? Before the Release ?
---
Mark saad | mark.saad at longcount.org
On Aug 31, 2013, at 1:38 PM, Kirk McKusick <mckusick at FreeBSD.org>
wrote:
> Author: mckusick
> Date: Sat Aug 31 17:38:49 2013
> New Revision: 255104
> URL: http://svnweb.freebsd.org/changeset/base/255104
>
> Log:
> MFC of 253998:
>
> 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
>
> Modified:
> stable/9/sys/ufs/ufs/ufs_vnops.c
> Directory Properties:
> stable/9/sys/ (props changed)
>
> Modified: stable/9/sys/ufs/ufs/ufs_vnops.c
>
=============================================================================>
--- stable/9/sys/ufs/ufs/ufs_vnops.c Sat Aug 31 17:33:25 2013 (r255103)
> +++ stable/9/sys/ufs/ufs/ufs_vnops.c Sat Aug 31 17:38:49 2013
(r255104)
> @@ -1271,7 +1271,7 @@ relock:
> error = VFS_VGET(mp, ino, LK_EXCLUSIVE, &nvp);
> if (error != 0)
> goto releout;
> - VOP_UNLOCK(nvp, 0);
> + vput(nvp);
> atomic_add_int(&rename_restarts, 1);
> goto relock;
> }
> _______________________________________________
> svn-src-stable-9 at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/svn-src-stable-9
> To unsubscribe, send any mail to "svn-src-stable-9-unsubscribe at
freebsd.org"