 - In the softupdates case for ffs_truncate() we use vinvalbuf() to    invalidate pending io and dependencies.  However, vinvalbuf() rightfully    does not call vnode_pager_setsize() for us.  We must do this here.  This    could potentially have caused numerous kinds of bugs, but it was    specifically causing msync() deadlocks because msync() was writing    flushing pages that should not have been valid.
 - In the softupdates case for ffs_truncate() we use vinvalbuf() to
   invalidate pending io and dependencies.  However, vinvalbuf() rightfully
   does not call vnode_pager_setsize() for us.  We must do this here.  This
   could potentially have caused numerous kinds of bugs, but it was
   specifically causing msync() deadlocks because msync() was writing
   flushing pages that should not have been valid.

Sponsored by:	Isilon Systems, Inc.
Reported by:	kkenn

jrobhoward/SCADAbase,jrobhoward/SCADAbase,jrobhoward/SCADAbase,jrobhoward/SCADAbase,jrobhoward/SCADAbase,jrobhoward/SCADAbase,jrobhoward/SCADAbase,jrobhoward/SCADAbase,jrobhoward/SCADAbase,jrobhoward/SCADAbase,jrobhoward/SCADAbase