From owner-cvs-all@FreeBSD.ORG Sat Jan 19 18:12:26 2008 Return-Path: Delivered-To: cvs-all@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 1A98916A418; Sat, 19 Jan 2008 18:12:26 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 20DAD13C447; Sat, 19 Jan 2008 18:12:26 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.1/8.14.1) with ESMTP id m0JICPva070095; Sat, 19 Jan 2008 18:12:25 GMT (envelope-from kib@repoman.freebsd.org) Received: (from kib@localhost) by repoman.freebsd.org (8.14.1/8.14.1/Submit) id m0JICPCB070094; Sat, 19 Jan 2008 18:12:25 GMT (envelope-from kib) Message-Id: <200801191812.m0JICPCB070094@repoman.freebsd.org> From: Konstantin Belousov Date: Sat, 19 Jan 2008 18:12:25 +0000 (UTC) To: src-committers@FreeBSD.org, cvs-src@FreeBSD.org, cvs-all@FreeBSD.org X-FreeBSD-CVS-Branch: RELENG_7_0 Cc: Subject: cvs commit: src/sys/ufs/ffs ffs_balloc.c X-BeenThere: cvs-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: CVS commit messages for the entire tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 19 Jan 2008 18:12:26 -0000 kib 2008-01-19 18:12:25 UTC FreeBSD src repository Modified files: (Branch: RELENG_7_0) sys/ufs/ffs ffs_balloc.c Log: MFC rev. 1.52: The ffs_balloc() routines, whan allocating the indirect blocks for the inode, do the rollback in case the allocation failed (due to insufficient free space or quota limits). But, the code does leaves the buffers corresponding to the inoirect blocks on the vnode bufobj list. This causes several assertion failures (for instance, "ffs_truncate3" in ffs_truncate()) to fail, and could result in the indirect block aliasing problem, like writing the context of such blocks to random disk location. Remove the buffers from the bufobj properly. MFC rev. 1.53: ffs_balloc_ufsX() routines, in the case of recovering from the failed allocation, free the indirect blocks before clearing the disk pointers, that could lead to the softupdate inconsistencies in the case of the machine or disk crash at the wrong time. Rearrange the recover code to do the ffs_blkfree() after the second ffs_syncvnode(), that clears the pointers chain. Approved by: re (kensmith) Revision Changes Path 1.50.14.1 +50 -6 src/sys/ufs/ffs/ffs_balloc.c