ufs: make solaris fsck happy
authorEvgeniy Dushistov <dushistov@mail.ru>
Wed, 10 Mar 2010 23:21:55 +0000 (15:21 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Fri, 12 Mar 2010 23:52:35 +0000 (15:52 -0800)
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 <dushistov@mail.ru>
Reported-by: Alex Viskovatoff <viskovatoff@imap.cc>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
fs/ufs/ufs_fs.h

index eb9c0f2d19ec1e7781cd7473890d12603cd10b10..6943ec677c0bef0feaca7efa2cee4202ee9949db 100644 (file)
@@ -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