svn commit: r342129 - head/sys/ufs/ffs

Kirk McKusick mckusick at FreeBSD.org
Sat Dec 15 17:58:43 UTC 2018


Author: mckusick
Date: Sat Dec 15 17:58:42 2018
New Revision: 342129
URL: https://svnweb.freebsd.org/changeset/base/342129

Log:
  Must set ip->i_effnlink = ip->i_nlink to avoid a soft updates
  "panic: softdep_update_inodeblock: bad link count" when releasing
  a partially initialized vnode after an inode check-hash failure.
  
  Reported by:  Gary Jennejohn <gljennjohn at gmail.com>
  Reported by:  Peter Holm (pho)
  Sponsored by: Netflix

Modified:
  head/sys/ufs/ffs/ffs_subr.c

Modified: head/sys/ufs/ffs/ffs_subr.c
==============================================================================
--- head/sys/ufs/ffs/ffs_subr.c	Sat Dec 15 17:32:47 2018	(r342128)
+++ head/sys/ufs/ffs/ffs_subr.c	Sat Dec 15 17:58:42 2018	(r342129)
@@ -127,6 +127,7 @@ ffs_load_inode(struct buf *bp, struct inode *ip, struc
 		    *((struct ufs1_dinode *)bp->b_data + ino_to_fsbo(fs, ino));
 		ip->i_mode = dip1->di_mode;
 		ip->i_nlink = dip1->di_nlink;
+		ip->i_effnlink = dip1->di_nlink;
 		ip->i_size = dip1->di_size;
 		ip->i_flags = dip1->di_flags;
 		ip->i_gen = dip1->di_gen;
@@ -138,6 +139,7 @@ ffs_load_inode(struct buf *bp, struct inode *ip, struc
 	*dip2 = *((struct ufs2_dinode *)bp->b_data + ino_to_fsbo(fs, ino));
 	ip->i_mode = dip2->di_mode;
 	ip->i_nlink = dip2->di_nlink;
+	ip->i_effnlink = dip2->di_nlink;
 	ip->i_size = dip2->di_size;
 	ip->i_flags = dip2->di_flags;
 	ip->i_gen = dip2->di_gen;


More information about the svn-src-all mailing list