Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 22 Aug 2018 12:17:13 -0400
From:      Mike Tancsa <mike@sentex.net>
To:        Eugene Grosbein <eugen@grosbein.net>, FreeBSD-STABLE Mailing List <freebsd-stable@FreeBSD.org>, Eric van Gyzen <eric@vangyzen.net>
Subject:   mSATA strangeness (was Re: gpart strangeness)
Message-ID:  <3c606f0b-41a2-b654-9413-8b0f1be2f651@sentex.net>
In-Reply-To: <62183e11-77ad-9b6d-ed57-357764e988d8@sentex.net>
References:  <4e5b6d81-7fc5-c538-2bd2-8cd5dd040a1d@sentex.net> <6be4ee74-c09d-b88f-e4ed-cadb1537e478@grosbein.net> <7886da80-d2e3-1562-07df-cb955d888e1b@sentex.net> <f56bf69b-45a2-e080-550c-2b08a6c2a28e@grosbein.net> <62183e11-77ad-9b6d-ed57-357764e988d8@sentex.net>

next in thread | previous in thread | raw e-mail | index | archive | help
OK,
	Some more odd things going on. If I write to a file from dd some random
junk, not all of the file is saved when I do an unmount. This seems to
be specific either to the ata controller of the APU or to the msata disk
as I tested on a regular server with plain old disks and no issue

Eric, any chance you can try this on your APU as well ?


0# umount /mnt
0# mount /dev/ada0p1 /mnt
0# dd if=/dev/urandom of=/mnt/junk2 bs=512k count=4
4+0 records in
4+0 records out
2097152 bytes transferred in 0.101394 secs (20683253 bytes/sec)
0# md5 /mnt/junk2
MD5 (/mnt/junk2) = acca1d8997c3b9d906b40d99cba734b6
0# hd /mnt/junk2 > /tmp/hd-junk2
0# ls -l /mnt/junk2
-rw-------  1 root  wheel  - 2097152 Aug 22 11:53 /mnt/junk2
0# umount /mnt
0# mount /dev/ada0p1 /mnt
0# md5 /mnt/junk2
MD5 (/mnt/junk2) = 2ef0cadf32db4e07a8edf4fc66f8a4eb
0# ls -l /mnt/junk2
-rw-------  1 root  wheel  - 2097152 Aug 22 11:53 /mnt/junk2
0# hd /mnt/junk2 > /tmp/hd-junk2-post-mount
0# ls -l /tmp/hd-junk2*
-rw-------  1 root  wheel  - 10354697 Aug 22 11:54 /tmp/hd-junk2
-rw-------  1 root  wheel  -  1941594 Aug 22 11:54 /tmp/hd-junk2-post-mount
0#

If I do the same test on a USB stick it works as expected

0# umount /mnt
0# mount /dev/da0p1 /mnt
0# dd if=/dev/urandom of=/mnt/junk2 bs=512k count=4
4+0 records in
4+0 records out
2097152 bytes transferred in 0.102256 secs (20508777 bytes/sec)
0# md5 /mnt/junk2
MD5 (/mnt/junk2) = 51190332cdd4ef898bdc9c2520a9f749
0# umount /mnt
0# mount /dev/da0p1 /mnt
0# md5 /mnt/junk2
MD5 (/mnt/junk2) = 51190332cdd4ef898bdc9c2520a9f749
0#
Same with an SD card. All is OK

0# umount /mnt
0# mount /dev/mmcsd0s2a /mnt
0# dd if=/dev/urandom of=/mnt/junk2 bs=512k count=4
4+0 records in
4+0 records out
2097152 bytes transferred in 0.107400 secs (19526588 bytes/sec)
0# md5 /mnt/junk2
MD5 (/mnt/junk2) = 0811af4e57ab5a3bc224e5b8f8b3bc29
0# umount /mnt
0# mount /dev/mmcsd0s2a /mnt
0# md5 /mnt/junk2
MD5 (/mnt/junk2) = 0811af4e57ab5a3bc224e5b8f8b3bc29
0#

Looking at hd before and after, its missing the end of the file

--- hd-junk2    2018-08-22 11:54:09.891572000 -0400
+++ hd-junk2-post-mount 2018-08-22 11:54:41.996983000 -0400
@@ -24574,106500 +24574,6 @@
 0005ffd0  8b 71 87 b8 78 03 72 ca  0e 06 3b d4 31 fd 18 f8
|.q..x.r...;.1...|
 0005ffe0  de 39 72 fb c8 39 fd 1f  93 75 10 de 05 56 43 fb
|.9r..9...u...VC.|
 0005fff0  40 ce 54 e2 a4 17 3e 1e  ec 01 b7 fd 1b 69 b7 6f
|@.T...>......i.o|
-00060000  91 f3 02 ea 95 f4 12 1c  bf 00 68 1b 3d 8c 01 43
|..........h.=..C|
-00060010  f6 5b 4e ec 7f 37 19 15  5b c4 e6 fb 88 27 1c 54
|.[N..7..[....'.T|
-00060020  15 6c 02 7d fb 00 06 c1  4a 4a bf ce 9a 1b fe d4
|.l.}....JJ......|
-00060030  1c 3c b5 05 b6 4f 4e 62  b5 03 e3 e7 5e 27 d6 71
|.<...ONb....^'.q|
-00060040  ea 22 00 99 9d 13 e8 a9  64 0e fd 13 cc 23 73 67
|."......d....#sg|
-00060050  8e 78 0a ad ae 70 ab e4  22 b4 b7 b9 3b 75 9f 85
|.x...p.."...;u..|
-00060060  53 39 0c af 15 39 5f 04  ac 3c 65 e9 ea 29 1d b7
|S9...9_..<e..)..|
-00060070  ea f0 2f 19 3c 6d 1c 21  f1 58 4a 4b a8 26 8e f6
|../.<m.!.XJK.&..|
-00060080  05 99 8a 9d 54 75 e4 77  78 78 6c 75 21 31 d4 0c
|....Tu.wxxlu!1..|
-00060090  52 88 c6 65 c0 09 04 ce  7f 5f 29 0c 46 9a 68 13
|R..e....._).F.h.|
-000600a0  73 30 97 78 d7 b7 d2 ba  8f 73 27 58 3d eb 0c d6
|s0.x.....s'X=...|


1# camcontrol identify ada0
pass0: <SATA SSD S9FM02.0> ACS-3 ATA SATA 3.x device
pass0: 600.000MB/s transfers (SATA 3.x, PIO4, PIO 8192bytes)

protocol              ATA/ATAPI-10 SATA 3.x
device model          SATA SSD
firmware revision     S9FM02.0
serial number         81B5074C1B6500076878
cylinders             16383
heads                 16
sectors/track         63
sector size           logical 512, physical 512, offset 0
LBA supported         31277232 sectors
LBA48 supported       31277232 sectors
PIO supported         PIO4
DMA supported         WDMA2 UDMA6
media RPM             non-rotating
Zoned-Device Commands no

Feature                      Support  Enabled   Value           Vendor
read ahead                     yes      yes
write cache                    yes      yes
flush cache                    yes      yes
overlap                        no
Tagged Command Queuing (TCQ)   no       no
Native Command Queuing (NCQ)   yes              32 tags
NCQ Queue Management           no
NCQ Streaming                  no
Receive & Send FPDMA Queued    no
SMART                          yes      yes
microcode download             yes      yes
security                       yes      no
power management               yes      yes
advanced power management      yes      no      0/0x00
automatic acoustic management  no       no
media status notification      no       no
power-up in Standby            no       no
write-read-verify              no       no
unload                         yes      yes
general purpose logging        yes      yes
free-fall                      no       no
Data Set Management (DSM/TRIM) yes
DSM - max 512byte blocks       yes              8
DSM - deterministic read       no
Host Protected Area (HPA)      yes      no      31277232/31277232
HPA - Security                 no
0#



On 8/21/2018 2:30 PM, Mike Tancsa wrote:
> On 8/21/2018 9:51 AM, Eugene Grosbein wrote:
>>
>> It seems like faulty media to me: it silently returns bad data.
>>
>> There is an easy way to verify this just with naked eye:
>>
>> yes | dd bs=128k of=/dev/ada0
>> hd /dev/ada0
>>
>> That is, hd(1) should write back only 3 lines of output:
>>
>> 00000000  79 0a 79 0a 79 0a 79 0a  79 0a 79 0a 79 0a 79 0a  |y.y.y.y.y.y.y.y.|
>> *
>> 01000000
>>
>> If not, the media if faulty.
>>
> 
> There are 3 of these disks I found. Unfortunately, they all seem a
> little different from the revision stamps on the board.  They are all
> from PCEngines who generally seem to source quality products. This is in
> an APU3
> 
> A "bad" disk
> 
> 0# camcontrol identify ada0
> pass0: <SATA SSD S9FM02.0> ACS-3 ATA SATA 3.x device
> pass0: 600.000MB/s transfers (SATA 3.x, PIO4, PIO 8192bytes)
> 
> protocol              ATA/ATAPI-10 SATA 3.x
> device model          SATA SSD
> firmware revision     S9FM02.0
> serial number         DED9075313EC01677930
> cylinders             16383
> heads                 16
> sectors/track         63
> sector size           logical 512, physical 512, offset 0
> LBA supported         31277232 sectors
> LBA48 supported       31277232 sectors
> PIO supported         PIO4
> DMA supported         WDMA2 UDMA6
> media RPM             non-rotating
> Zoned-Device Commands no
> 
> Feature                      Support  Enabled   Value           Vendor
> read ahead                     yes      yes
> write cache                    yes      yes
> flush cache                    yes      yes
> overlap                        no
> Tagged Command Queuing (TCQ)   no       no
> Native Command Queuing (NCQ)   yes              32 tags
> NCQ Queue Management           no
> NCQ Streaming                  no
> Receive & Send FPDMA Queued    no
> SMART                          yes      yes
> microcode download             yes      yes
> security                       yes      no
> power management               yes      yes
> advanced power management      yes      no      0/0x00
> automatic acoustic management  no       no
> media status notification      no       no
> power-up in Standby            no       no
> write-read-verify              no       no
> unload                         yes      yes
> general purpose logging        yes      yes
> free-fall                      no       no
> Data Set Management (DSM/TRIM) yes
> DSM - max 512byte blocks       yes              8
> DSM - deterministic read       no
> Host Protected Area (HPA)      yes      no      31277232/31277232
> HPA - Security                 no
> 0#
> 
> vs
> a 'good' disk
> 
> # camcontrol identify ada0
> pass0: <SATA SSD SBFM01.0> ACS-4 ATA SATA 3.x device
> pass0: 600.000MB/s transfers (SATA 3.x, PIO4, PIO 8192bytes)
> 
> protocol              ATA/ATAPI-11 SATA 3.x
> device model          SATA SSD
> firmware revision     SBFM01.0
> serial number         A44907781CE300040613
> WWN                   5000000000000000
> cylinders             16383
> heads                 16
> sectors/track         63
> sector size           logical 512, physical 512, offset 0
> LBA supported         31277232 sectors
> LBA48 supported       31277232 sectors
> PIO supported         PIO4
> DMA supported         WDMA2 UDMA6
> media RPM             non-rotating
> Zoned-Device Commands no
> 
> Feature                      Support  Enabled   Value           Vendor
> read ahead                     yes      yes
> write cache                    yes      yes
> flush cache                    yes      yes
> overlap                        no
> Tagged Command Queuing (TCQ)   no       no
> Native Command Queuing (NCQ)   yes              32 tags
> NCQ Queue Management           no
> NCQ Streaming                  no
> Receive & Send FPDMA Queued    no
> SMART                          yes      yes
> microcode download             yes      yes
> security                       yes      no
> power management               yes      yes
> advanced power management      no       no
> automatic acoustic management  no       no
> media status notification      no       no
> power-up in Standby            no       no
> write-read-verify              no       no
> unload                         no       no
> general purpose logging        yes      yes
> free-fall                      no       no
> Data Set Management (DSM/TRIM) yes
> DSM - max 512byte blocks       yes              8
> DSM - deterministic read       no
> Host Protected Area (HPA)      yes      no      31277232/31277232
> HPA - Security                 no
> 
> 
> 
> % diff good bad
> 1c1
> < pass0: <SATA SSD SBFM01.0> ACS-4 ATA SATA 3.x device
> ---
>> pass0: <SATA SSD S9FM02.0> ACS-3 ATA SATA 3.x device
> 4c4
> < protocol              ATA/ATAPI-11 SATA 3.x
> ---
>> protocol              ATA/ATAPI-10 SATA 3.x
> 6,8c6,7
> < firmware revision     SBFM01.0
> < serial number         A44907781CE300040613
> < WWN                   5000000000000000
> ---
>> firmware revision     S9FM02.0
>> serial number         DED9075313EC01677930
> 34c33
> < advanced power management      no       no
> ---
>> advanced power management      yes      no      0/0x00
> 39c38
> < unload                         no       no
> ---
>> unload                         yes      yes
> 46a46
>>
> 
> 1# yes | dd bs=128k of=/dev/ada0
> dd: /dev/ada0: short write on character device
> dd: /dev/ada0: end of device
> 0+1066621 records in
> 122176+1 records out
> 16013942784 bytes transferred in 566.461990 secs (28270110 bytes/sec)
> 1# hd /dev/ada0
> 00000000  79 0a 79 0a 79 0a 79 0a  79 0a 79 0a 79 0a 79 0a
> |y.y.y.y.y.y.y.y.|
> *
> 3ba816000
> 0#
> 


-- 
-------------------
Mike Tancsa, tel +1 519 651 3400 x203
Sentex Communications, mike@sentex.net
Providing Internet services since 1994 www.sentex.net
Cambridge, Ontario Canada



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?3c606f0b-41a2-b654-9413-8b0f1be2f651>