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
This commit is contained in:
parent
e1619d123e
commit
20e8b32db4
@ -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));
|
||||
|
Loading…
Reference in New Issue
Block a user