2010-02-25 18:44:58

by Evgeniy Dushistov

[permalink] [raw]
Subject: [PATCH] ufs: make solaris fsck happy

Alex Viskovatoff let me know that after copying data to solaris's ufs from
linux, solaris's fsck sees some errors in cylinder summary information.
This is because of solaris expects find some data on another places,
then curernt implementation save it.
This patch fixes this issue. It is tested by me, and also Alex
reported that it works for him.


Signed-off-by: Evgeniy Dushistov <[email protected]>
Cc: Alex Viskovatoff <[email protected]>
---
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 54bde18..f221c5e 100644
--- a/fs/ufs/ufs_fs.h
+++ b/fs/ufs/ufs_fs.h
@@ -227,11 +227,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
--
1.6.5.6

--
/Evgeniy