freebsd-skq/sys/miscfs
Bruce Evans 438abdb9c6 Backed out previous commit. It cause massive filesystem corruption,
not to mention a compile-time warning about the critical function
becoming unused, by replacing spec_bmap() with vop_stdbmap().

ntfs seems to have the same bug.

The factor for converting specfs block numbers to physical block
numbers is 1, but vop_stdbmap() uses the bogus factor
btodb(ap->a_vp->v_mount->mnt_stat.f_iosize), which is 16 for ffs with
the default block size of 8K.  This factor is bogus even for vop_stdbmap()
-- the correct factor is related to the filesystem blocksize which is not
necessarily the same to the optimal i/o size.  vop_stdbmap() was apparently
cloned from nfs where these sizes happen to be the same.

There may also be a problem with a_vp->v_mount being null.  spec_bmap()
still checks for this, but I think the checks in specfs are dead code
which used to support block devices.
2001-04-30 14:35:35 +00:00
..
deadfs Change and clean the mutex lock interface. 2001-02-09 06:11:45 +00:00
fdesc Add a vop_stdbmap(), and make it part of the default vop vector. 2001-04-29 11:48:41 +00:00
fifofs Add a vop_stdbmap(), and make it part of the default vop vector. 2001-04-29 11:48:41 +00:00
nullfs o Change the API and ABI of the Extended Attribute kernel interfaces to 2001-03-15 02:54:29 +00:00
portal Add a vop_stdbmap(), and make it part of the default vop vector. 2001-04-29 11:48:41 +00:00
procfs Add a vop_stdbmap(), and make it part of the default vop vector. 2001-04-29 11:48:41 +00:00
specfs Backed out previous commit. It cause massive filesystem corruption, 2001-04-30 14:35:35 +00:00
umapfs o Change the API and ABI of the Extended Attribute kernel interfaces to 2001-03-15 02:54:29 +00:00
union Add a vop_stdbmap(), and make it part of the default vop vector. 2001-04-29 11:48:41 +00:00