From e8357dc3990d5fc6099c54f6cd74954f86d97866 Mon Sep 17 00:00:00 2001 From: scottl Date: Thu, 2 May 2002 05:01:14 +0000 Subject: [PATCH] In udf_bmap(), return the physical block number, not the logical block number. This fixes things like cp (ouch!) which use mmap. --- sys/fs/udf/udf_vnops.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/sys/fs/udf/udf_vnops.c b/sys/fs/udf/udf_vnops.c index d75c11bf28e..fbbbb5773bb 100644 --- a/sys/fs/udf/udf_vnops.c +++ b/sys/fs/udf/udf_vnops.c @@ -802,6 +802,7 @@ udf_bmap(struct vop_bmap_args *a) { struct udf_node *node; uint32_t max_size; + daddr64_t lsector; int error; node = VTON(a->a_vp); @@ -813,11 +814,14 @@ udf_bmap(struct vop_bmap_args *a) if (a->a_runb) *a->a_runb = 0; - error = udf_bmap_internal(node, a->a_bn * node->udfmp->bsize, a->a_bnp, + error = udf_bmap_internal(node, a->a_bn * node->udfmp->bsize, &lsector, &max_size); if (error > 0) return (error); + /* Translate logical to physical sector number */ + *a->a_bnp = lsector << (node->udfmp->bshift - DEV_BSHIFT); + /* Punt on read-ahead for now */ if (a->a_runp) *a->a_runp = 0; -- 2.45.2