summaryrefslogtreecommitdiffstats
path: root/sys/ufs
diff options
context:
space:
mode:
authorglebius <glebius@FreeBSD.org>2015-10-07 12:36:28 +0000
committerglebius <glebius@FreeBSD.org>2015-10-07 12:36:28 +0000
commita2200eb70bd6c71b3c2a9fc1a23fa2580e8d07a9 (patch)
tree5318982583d529d74297ff8b9ef617d50422f4f8 /sys/ufs
parent8a05965c7726b144472bd7736c22167bf25819e5 (diff)
downloadFreeBSD-src-a2200eb70bd6c71b3c2a9fc1a23fa2580e8d07a9.zip
FreeBSD-src-a2200eb70bd6c71b3c2a9fc1a23fa2580e8d07a9.tar.gz
In softdep_setup_freeblocks():
- Move the bread() to the beginning of function. - Return if it fails, otherwise we will panic. Submitted by: mckusick Sponsored by: Netflix
Diffstat (limited to 'sys/ufs')
-rw-r--r--sys/ufs/ffs/ffs_softdep.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/sys/ufs/ffs/ffs_softdep.c b/sys/ufs/ffs/ffs_softdep.c
index 963313a..f6ee661 100644
--- a/sys/ufs/ffs/ffs_softdep.c
+++ b/sys/ufs/ffs/ffs_softdep.c
@@ -6835,6 +6835,13 @@ softdep_setup_freeblocks(ip, length, flags)
ip->i_number, length);
KASSERT(length == 0, ("softdep_setup_freeblocks: non-zero length"));
fs = ip->i_fs;
+ if ((error = bread(ip->i_devvp,
+ fsbtodb(fs, ino_to_fsba(fs, ip->i_number)),
+ (int)fs->fs_bsize, NOCRED, &bp)) != 0) {
+ brelse(bp);
+ softdep_error("softdep_setup_freeblocks", error);
+ return;
+ }
freeblks = newfreeblks(mp, ip);
extblocks = 0;
datablocks = 0;
@@ -6871,12 +6878,6 @@ softdep_setup_freeblocks(ip, length, flags)
* to delete its dependencies below. Once the dependencies are gone
* the buffer can be safely released.
*/
- if ((error = bread(ip->i_devvp,
- fsbtodb(fs, ino_to_fsba(fs, ip->i_number)),
- (int)fs->fs_bsize, NOCRED, &bp)) != 0) {
- brelse(bp);
- softdep_error("softdep_setup_freeblocks", error);
- }
if (ump->um_fstype == UFS1) {
dp1 = ((struct ufs1_dinode *)bp->b_data +
ino_to_fsbo(fs, ip->i_number));
OpenPOWER on IntegriCloud