Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 29 May 2023 16:12:24 -0700
From:      David Christensen <dpchrist@holgerdanske.com>
To:        questions@freebsd.org
Subject:   Re: read and write back full disk to trigger relocation
Message-ID:  <00671d49-83b1-26a0-4e28-47eb0d7cb95c@holgerdanske.com>
In-Reply-To: <1961596841.3509648.1685359514813@fidget.co-bxl>
References:  <a111b6a7-0bf8-d3b9-9611-a7fbf36635b3@artem.ru> <1957739901.520492.1685310340560@ichabod.co-bxl> <0d0186c5-9542-1af3-2ce3-e28480b4b6d7@holgerdanske.com> <1961596841.3509648.1685359514813@fidget.co-bxl>

next in thread | previous in thread | raw e-mail | index | archive | help
On 5/29/23 04:25, Sysadmin Lists wrote:
> David Christensen May 29, 2023, 12:04:41 AM
>> On 5/28/23 14:45, Sysadmin Lists wrote: 
>>>   From the dd(1) manpage:
>>>
>>>        Do a refresh of a disk drive, in order to prevent presently recoverable
>>>        read errors from progressing into unrecoverable read errors:
>>>
>>>              dd if=/dev/ada0 of=/dev/ada0 bs=1m
>>
>>
>> gmirror(8) examples indicate the device node should be:
>>
>> /dev/mirror/name
>>
>>
>> Where "name" is the argument provided when the mirror was created:
>>
>> # gmirror label name prov ...
> 
> One of the examples is:
> 
>             gmirror label -v -b split -s 2048 data da0 da1 da2
> 
> Which tells me to look for /dev/da0, /dev/da1, /dev/da2 for the dd command.


Your mail client and my mail client (Thunderbird) indent things 
differently.  I have reformatted the above per Thunderbird conventions. 
I have had to do this every time I reply to your messages.  I do not 
have this issue with most other messages I reply to.


Testing dd(1) and gmirror(8):

2023-05-29 15:21:32 toor@vf1 ~
# freebsd-version ; uname -a
12.4-RELEASE-p2
FreeBSD vf1.tracy.holgerdanske.com 12.4-RELEASE-p1 FreeBSD 
12.4-RELEASE-p1 GENERIC  amd64

2023-05-29 15:23:05 toor@vf1 ~
# gmirror label mymirror ada3 ada4

2023-05-29 15:24:11 toor@vf1 ~
# gmirror status mymirror
            Name    Status  Components
mirror/mymirror  COMPLETE  ada3 (ACTIVE)
                            ada4 (ACTIVE)

2023-05-29 15:52:41 toor@vf1 ~
# dd if=/dev/ada3 of=/dev/ada3 bs=1m
dd: /dev/ada3: Operation not permitted

2023-05-29 15:53:45 toor@vf1 ~
# dd if=/dev/ada4 of=/dev/ada4 bs=1m
dd: /dev/ada4: Operation not permitted

2023-05-29 15:53:52 toor@vf1 ~
# dd if=/dev/mirror/mymirror of=/dev/mirror/mymirror bs=1m
1023+1 records in
1023+1 records out
1073741312 bytes transferred in 3.299006 secs (325474224 bytes/sec)


This confirms that the kernel will not allow writes to mirror components 
when they are active, as it should.  If a process could write to a 
component of a mirror, that would bypass the mirror driver, defeat the 
purpose of the mirror, allow race conditions, and result in data loss/ 
data corruption.


David




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?00671d49-83b1-26a0-4e28-47eb0d7cb95c>