On 27/07/2013 20:38, David Noel wrote:
I was going to raise an issue when the discussion had died down to a
concensus. I also don't think it's reasonable for the kernel to bomb
when it encounters corruption on a disk.

If you want to patch it yourself, edit sys/ufs/ufs/ufs_vnops.c at around
line 2791 change:

          if (dp->i_effnlink < 3)
                  panic("ufs_dirrem: Bad link count %d on parent",
                      dp->i_effnlink);

To

          if (dp->i_effnlink < 3) {
                  error = EINVAL;
                  goto out;
          }

The ufs_link() call has a similar issue.

I can't see why my mod will break anything, but there's always
unintended consequences. By returning invalid argument, any code above
it should already be handling that condition although the user will be
scratching their head wondering what's wrong with it. Returning ENOENT
or EACCES or ENOTDIR may be better ("No such directory", "Access denied"
or "Not a valid directory").

The trouble is that it's tricky to test properly without finding a good
way to corrupt the link count :-)

Regards, Frank.
Cool. Thanks for the patch!

Sorry - forgot to mention that you use it entirely at your own risk!


_______________________________________________
freebsd-questions@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-questions
To unsubscribe, send any mail to "freebsd-questions-unsubscr...@freebsd.org"

Reply via email to