Subject: Supporting sector size != DEV_BSIZE on lfs
To: None <>
From: Trevin Beattie <>
List: tech-kern
Date: 06/19/2002 14:08:21
More confusion.

I've come up to a piece of code which uses the macro fragstofsb(), so I
tried looking at the #definition of fragstofsb to figure out what the input
/ output units should be.  The macro combines the following three variables:

lfs_blktodb -- I *think* this converts lfs blocks to/from sectors (the
comment "blktodb and dbtoblk shift constant" does NOT help at ALL)

lfs_fbshift -- converts lfs frags to/from blocks (according to the comment
"fast mult/div for frag from block")

lfs_fsbtodb -- I *think* this converts lfs frags to/from sectors (the
comment "fsbtodb abd dbtodsb shift constant" does NOT help at ALL; plus it
sounds like the writer had a cold ;)

If I substitute units into the equation "((fs)->lfs_blktodb -
(fs)->lfs_fbshift - (fs)->lfs_fsbtodb)", I get the following:

sectors     blocks      frags       1
-------  *  ------  *  -------  =  ---
blocks      frags      sectors      1

!!  Following my assumptions, the macro fragstofsb() does nothing!!
Obviously I must have made a mistake somewhere.

According to sbin/newfs_lfs/lfs.c, my assessment of lfs_blktodb is correct
(lines 362-363).  So is lfs_fsbtodb (line 364).  So, in fact, is
lfs_fbshift (lines 311, 313, and lfs.h line 299).  SO WHAT THE HECK IS
WRONG HERE?!?  (Sorry for shouting.  I'm just frustrated due to my lack of
experience with LFS.)

Trevin Beattie          "Do not meddle in the affairs of wizards,     for you are crunchy and good with ketchup."
      {:->                                     --unknown