diff options
| -rw-r--r-- | fs/ufs/ufs_fs.h | 9 | 
1 files changed, 7 insertions, 2 deletions
diff --git a/fs/ufs/ufs_fs.h b/fs/ufs/ufs_fs.h index eb9c0f2d19ec..6943ec677c0b 100644 --- a/fs/ufs/ufs_fs.h +++ b/fs/ufs/ufs_fs.h @@ -233,11 +233,16 @@ typedef __u16 __bitwise __fs16;   */  #define ufs_cbtocylno(bno) \  	((bno) * uspi->s_nspf / uspi->s_spc) -#define ufs_cbtorpos(bno) \ +#define ufs_cbtorpos(bno)				      \ +	((UFS_SB(sb)->s_flags & UFS_CG_SUN) ?		      \ +	 (((((bno) * uspi->s_nspf % uspi->s_spc) %	      \ +	    uspi->s_nsect) *				      \ +	   uspi->s_nrpos) / uspi->s_nsect)		      \ +	 :						      \  	((((bno) * uspi->s_nspf % uspi->s_spc / uspi->s_nsect \  	* uspi->s_trackskew + (bno) * uspi->s_nspf % uspi->s_spc \  	% uspi->s_nsect * uspi->s_interleave) % uspi->s_nsect \ -	* uspi->s_nrpos) / uspi->s_npsect) +	  * uspi->s_nrpos) / uspi->s_npsect))  /*   * The following macros optimize certain frequently calculated  | 
