Page 1 of 2 12 LastLast
Results 1 to 10 of 11

Thread: Disabling SATA disk and scanning for it

Hybrid View

  1. #1
    Join Date
    Jan 2014
    Location
    Erlangen
    Posts
    4,186
    Blog Entries
    5

    Default Disabling SATA disk and scanning for it

    An annoying kernel bug delays resume from suspend to RAM: https://bugzilla.opensuse.org/show_bug.cgi?id=1195025 As a workaround the HDD involved is deactivated on suspend.

    Scripts:

    The dirty hack works as long as the HDD is plugged into the third SATA header on the motherboard.

    Deactivate disk:
    Code:
    erlangen:~ # cat /usr/local/bin/delete-backup-disk                                                                            
    #!/bin/bash 
    if [ -f /sys/devices/pci0000:00/0000:00:17.0/ata4/host3/target3:0:0/3:0:0:0/delete ] ; then 
            echo 1 > /sys/devices/pci0000:00/0000:00:17.0/ata4/host3/target3:0:0/3:0:0:0/delete 
    fi 
    erlangen:~ #
    
    Scan for disk:
    Code:
    erlangen:~ # cat /usr/local/bin/scan-for-backup-disk  
    #!/bin/bash 
    echo "- - -" > /sys/devices/pci0000:00/0000:00:17.0/ata4/host3/scsi_host/host3/scan 
    erlangen:~ #
    Services:

    Disable HDD on boot and prior to suspend
    Code:
    erlangen:~ # systemctl cat HDD-disable.service  
    # /etc/systemd/system/HDD-disable.service
    [Unit] 
    Description=Disable backup HDD 
    
    [Service] 
    ExecStart=/usr/local/bin/delete-backup-disk 
    
    [Install] 
    WantedBy=multi-user.target 
    erlangen:~ #
    Scan for disk:
    Code:
    erlangen:~ # systemctl cat HDD-scan.service  
    # /etc/systemd/system/HDD-scan.service
    [Unit] 
    Description=Scan for backup HDD 
    
    [Service] 
    ExecStart=/usr/local/bin/scan-for-backup-disk 
    erlangen:~ #
    
    Modification to suspend:
    Code:
    erlangen:~ # systemctl cat systemd-suspend 
    # /etc/systemd/system/systemd-suspend.service
    #  SPDX-License-Identifier: LGPL-2.1-or-later 
    # 
    #  This file is part of systemd. 
    # 
    #  systemd is free software; you can redistribute it and/or modify it 
    #  under the terms of the GNU Lesser General Public License as published by 
    #  the Free Software Foundation; either version 2.1 of the License, or 
    #  (at your option) any later version. 
    
    [Unit] 
    Description=System Suspend 
    Documentation=man:systemd-suspend.service(8) 
    DefaultDependencies=no 
    Requires=sleep.target HDD-disable.service 
    After=sleep.target HDD-disable.service 
    
    [Service] 
    Type=oneshot 
    ExecStart=/usr/lib/systemd/systemd-sleep suspend 
    erlangen:~ #
    
    Changes to backup service:

    Code:
    erlangen:~ # systemctl cat backup-home.service  
    # /etc/systemd/system/backup-home.service
    [Unit] 
    Description=Backup /home 
    Requires=HDD.mount HDD-scan.service 
    After=HDD.mount HDD-scan.service 
    
    [Service] 
    ExecStart=/usr/bin/rsync -a --exclude=.cache --exclude=covid-19-data /home/ /HDD/backup/home/ 
    ExecStopPost=/usr/bin/umount /HDD 
    ExecStopPost=/usr/local/bin/delete-backup-disk 
    erlangen:~ #
    
     
    
    Resume from suspend is now as fast as it was prior to kernel bug:
    Code:
    erlangen:~ # journalctl -b -u HDD-disable.service -u systemd-suspend.service --since 11:53 -o short-monotonic              
    [ 4001.282464] erlangen systemd[1]: Started Disable backup HDD. 
    [ 4001.286366] erlangen systemd[1]: Starting System Suspend... 
    [ 4001.289061] erlangen systemd[1]: HDD-disable.service: Deactivated successfully. 
    [ 4001.294992] erlangen systemd-sleep[5105]: INFO: Skip running /usr/lib/systemd/system-sleep/grub2.sleep for suspend 
    [ 4001.296099] erlangen systemd-sleep[5103]: Entering sleep state 'suspend'... 
    [ 4003.592988] erlangen systemd-sleep[5103]: System returned from sleep state. 
    [ 4003.599700] erlangen systemd-sleep[5119]: INFO: Skip running /usr/lib/systemd/system-sleep/grub2.sleep for suspend 
    [ 4003.600892] erlangen systemd[1]: systemd-suspend.service: Deactivated successfully. 
    [ 4003.601116] erlangen systemd[1]: Finished System Suspend. 
    erlangen:~ #
    
    i7-6700K (2016), i5-8250U (2018), AMD Ryzen 5 3400G (2020), 5600X, 5700U (2022) openSUSE Tumbleweed, KDE Plasma
    See also Blogs > KeepItSimple

  2. #2
    Join Date
    Jun 2016
    Location
    Ireland
    Posts
    336

    Default Re: Disabling SATA disk and scanning for it

    Quote Originally Posted by karlmistelberger View Post
    An annoying kernel bug delays resume from suspend to RAM: https://bugzilla.opensuse.org/show_bug.cgi?id=1195025 As a workaround the HDD involved is deactivated on suspend.

    Scripts:

    The dirty hack works as long as the HDD is plugged into the third SATA header on the motherboard.

    Deactivate disk:
    Code:
    erlangen:~ # cat /usr/local/bin/delete-backup-disk                                                                            
    #!/bin/bash 
    if [ -f /sys/devices/pci0000:00/0000:00:17.0/ata4/host3/target3:0:0/3:0:0:0/delete ] ; then 
            echo 1 > /sys/devices/pci0000:00/0000:00:17.0/ata4/host3/target3:0:0/3:0:0:0/delete 
    fi 
    erlangen:~ #
    
    Scan for disk:
    Code:
    erlangen:~ # cat /usr/local/bin/scan-for-backup-disk  
    #!/bin/bash 
    echo "- - -" > /sys/devices/pci0000:00/0000:00:17.0/ata4/host3/scsi_host/host3/scan 
    erlangen:~ #
    Services:

    Disable HDD on boot and prior to suspend
    Code:
    erlangen:~ # systemctl cat HDD-disable.service  
    # /etc/systemd/system/HDD-disable.service
    [Unit] 
    Description=Disable backup HDD 
    
    [Service] 
    ExecStart=/usr/local/bin/delete-backup-disk 
    
    [Install] 
    WantedBy=multi-user.target 
    erlangen:~ #
    Scan for disk:
    Code:
    erlangen:~ # systemctl cat HDD-scan.service  
    # /etc/systemd/system/HDD-scan.service
    [Unit] 
    Description=Scan for backup HDD 
    
    [Service] 
    ExecStart=/usr/local/bin/scan-for-backup-disk 
    erlangen:~ #
    
    Modification to suspend:
    Code:
    erlangen:~ # systemctl cat systemd-suspend 
    # /etc/systemd/system/systemd-suspend.service
    #  SPDX-License-Identifier: LGPL-2.1-or-later 
    # 
    #  This file is part of systemd. 
    # 
    #  systemd is free software; you can redistribute it and/or modify it 
    #  under the terms of the GNU Lesser General Public License as published by 
    #  the Free Software Foundation; either version 2.1 of the License, or 
    #  (at your option) any later version. 
    
    [Unit] 
    Description=System Suspend 
    Documentation=man:systemd-suspend.service(8) 
    DefaultDependencies=no 
    Requires=sleep.target HDD-disable.service 
    After=sleep.target HDD-disable.service 
    
    [Service] 
    Type=oneshot 
    ExecStart=/usr/lib/systemd/systemd-sleep suspend 
    erlangen:~ #
    
    Changes to backup service:

    Code:
    erlangen:~ # systemctl cat backup-home.service  
    # /etc/systemd/system/backup-home.service
    [Unit] 
    Description=Backup /home 
    Requires=HDD.mount HDD-scan.service 
    After=HDD.mount HDD-scan.service 
    
    [Service] 
    ExecStart=/usr/bin/rsync -a --exclude=.cache --exclude=covid-19-data /home/ /HDD/backup/home/ 
    ExecStopPost=/usr/bin/umount /HDD 
    ExecStopPost=/usr/local/bin/delete-backup-disk 
    erlangen:~ #
    
     
    
    Resume from suspend is now as fast as it was prior to kernel bug:
    Code:
    erlangen:~ # journalctl -b -u HDD-disable.service -u systemd-suspend.service --since 11:53 -o short-monotonic              
    [ 4001.282464] erlangen systemd[1]: Started Disable backup HDD. 
    [ 4001.286366] erlangen systemd[1]: Starting System Suspend... 
    [ 4001.289061] erlangen systemd[1]: HDD-disable.service: Deactivated successfully. 
    [ 4001.294992] erlangen systemd-sleep[5105]: INFO: Skip running /usr/lib/systemd/system-sleep/grub2.sleep for suspend 
    [ 4001.296099] erlangen systemd-sleep[5103]: Entering sleep state 'suspend'... 
    [ 4003.592988] erlangen systemd-sleep[5103]: System returned from sleep state. 
    [ 4003.599700] erlangen systemd-sleep[5119]: INFO: Skip running /usr/lib/systemd/system-sleep/grub2.sleep for suspend 
    [ 4003.600892] erlangen systemd[1]: systemd-suspend.service: Deactivated successfully. 
    [ 4003.601116] erlangen systemd[1]: Finished System Suspend. 
    erlangen:~ #
    
    Few questions;
    - What does mean "deactivated"? Could you fill the table bellow? Change, add or remove info.

    State/Mode name Synonymy Read/Write Spinning Mounted Power On Something else
    Active Y Y Y Y
    Idle N Y Y Y
    Sleep
    Standby N N Y Y
    Passive
    Low power
    Power off N N N
    Deactivated N N

    - Does your new files/settings avoid HDDs to spin-up (if it was spun down) in the process of computer shut down?

  3. #3
    Join Date
    Jan 2014
    Location
    Erlangen
    Posts
    4,186
    Blog Entries
    5

    Default Re: Disabling SATA disk and scanning for it

    Quote Originally Posted by MrNice View Post
    Few questions;
    - What does mean "deactivated"? Could you fill the table bellow? Change, add or remove info.

    State/Mode name Synonymy Read/Write Spinning Mounted Power On Something else
    Active Y Y Y Y
    Idle N Y Y Y
    Sleep
    Standby N N Y Y
    Passive
    Low power
    Power off N N N
    Deactivated N N N N soft unplugged

    - Does your new files/settings avoid HDDs to spin-up (if it was spun down) in the process of computer shut down?
    The disk is physically plugged into the power supply and into the SATA header on the main board. However the system doesn't know about it. Scanning SATA attaches the drive:
    Code:
    erlangen:~ # ll /dev/sd* 
    brw-rw---- 1 root disk 8, 0 Apr  5 20:41 /dev/sda
    brw-rw---- 1 root disk 8, 1 Apr  5 20:41 /dev/sda1
    erlangen:~ # scan-for-backup-disk  
    erlangen:~ # ll /dev/sd*           
    brw-rw---- 1 root disk 8,  0 Apr  5 20:41 /dev/sda
    brw-rw---- 1 root disk 8,  1 Apr  5 20:41 /dev/sda1
    brw-rw---- 1 root disk 8, 16 Apr  6 20:20 /dev/sdb
    brw-rw---- 1 root disk 8, 17 Apr  6 20:20 /dev/sdb1
    erlangen:~ # hdparm -C /dev/sdb                                                                  
    
    /dev/sdb: 
     drive state is:  active/idle 
    erlangen:~ #
    i7-6700K (2016), i5-8250U (2018), AMD Ryzen 5 3400G (2020), 5600X, 5700U (2022) openSUSE Tumbleweed, KDE Plasma
    See also Blogs > KeepItSimple

  4. #4
    Join Date
    Jan 2014
    Location
    Erlangen
    Posts
    4,186
    Blog Entries
    5

    Default Re: Disabling SATA disk and scanning for it

    Quote Originally Posted by karlmistelberger View Post
    Changes to backup service:

    Code:
    erlangen:~ # systemctl cat backup-home.service  
    # /etc/systemd/system/backup-home.service
    [Unit] 
    Description=Backup /home 
    Requires=HDD.mount HDD-scan.service 
    After=HDD.mount HDD-scan.service 
    
    [Service] 
    ExecStart=/usr/bin/rsync -a --exclude=.cache --exclude=covid-19-data /home/ /HDD/backup/home/ 
    ExecStopPost=/usr/bin/umount /HDD 
    ExecStopPost=/usr/local/bin/delete-backup-disk 
    erlangen:~ #
    Order matters:
    Code:
    erlangen:~ # systemctl cat backup-home.service                                                                   
    # /etc/systemd/system/backup-home.service
    [Unit] 
    Description=Backup /home 
    Requires=HDD-scan.service HDD.mount 
    After=HDD-scan.service HDD.mount 
    
    [Service] 
    ExecStart=/usr/bin/rsync -a --exclude=.cache --exclude=covid-19-data /home/ /HDD/backup/home/ 
    ExecStopPost=/usr/bin/umount /HDD 
    ExecStopPost=/usr/local/bin/delete-backup-disk 
    erlangen:~ #
    Code:
    erlangen:~ # journalctl -b -u backup-home.service -u 'HDD*' --since 0:00                            
    Apr 08 04:49:59 erlangen systemd[1]: Started Scan for backup HDD. 
    Apr 08 04:50:10 erlangen systemd[1]: HDD-scan.service: Deactivated successfully. 
    Apr 08 04:50:11 erlangen systemd[1]: Mounting /HDD... 
    Apr 08 04:50:11 erlangen systemd[1]: Mounted /HDD. 
    Apr 08 04:50:11 erlangen systemd[1]: Started Backup /home. 
    Apr 08 04:51:40 erlangen systemd[1]: HDD.mount: Deactivated successfully. 
    Apr 08 04:51:42 erlangen systemd[1]: backup-home.service: Deactivated successfully. 
    Apr 08 04:51:42 erlangen systemd[1]: backup-home.service: Consumed 19.816s CPU time. 
    erlangen:~ #
    i7-6700K (2016), i5-8250U (2018), AMD Ryzen 5 3400G (2020), 5600X, 5700U (2022) openSUSE Tumbleweed, KDE Plasma
    See also Blogs > KeepItSimple

  5. #5
    Join Date
    Jan 2014
    Location
    Erlangen
    Posts
    4,186
    Blog Entries
    5

    Default Re: Disabling SATA disk and scanning for it

    List activated disks (option N skips nvme):
    Code:
    erlangen:~ # lsscsi -sN           
    [2:0:0:0]    disk    ATA      CT2000BX500SSD1  030   /dev/sda   2.00TB 
    [3:0:0:0]    disk    ATA      WDC WD40EZRX-22S 0A80  /dev/sdb   4.00TB 
    [4:0:0:0]    cd/dvd  PIONEER  DVD-RW  DVR-221  1.00  /dev/sr0        - 
    erlangen:~ #
    List device units:
    Code:
    erlangen:~ # systemctl list-units --all blockdev@* 
      UNIT                                                                                 LOAD   ACTIVE   SUB  DESCRIPTION                                                                        
      blockdev@dev-disk-by\x2duuid-0e58bbe5\x2deff7\x2d4884\x2dbb5d\x2da0aac3d8a344.target loaded inactive dead Block Device Preparation for /dev/disk/by-uuid/0e58bbe5-eff7-4884-bb5d-a0aac3d8a344 
      blockdev@dev-disk-by\x2duuid-19CF\x2d0B54.target                                     loaded inactive dead Block Device Preparation for /dev/disk/by-uuid/19CF-0B54 
      blockdev@dev-disk-by\x2duuid-5605f149\x2d34a7\x2d4301\x2d9bf3\x2df1f177e35ed6.target loaded inactive dead Block Device Preparation for /dev/disk/by-uuid/5605f149-34a7-4301-9bf3-f1f177e35ed6 
      blockdev@dev-disk-by\x2duuid-f5177cae\x2d4082\x2d44ed\x2d9471\x2db99030f06866.target loaded inactive dead Block Device Preparation for /dev/disk/by-uuid/f5177cae-4082-44ed-9471-b99030f06866 
      blockdev@dev-nvme0n1p1.target                                                        loaded inactive dead Block Device Preparation for /dev/nvme0n1p1 
      blockdev@dev-nvme0n1p2.target                                                        loaded inactive dead Block Device Preparation for /dev/nvme0n1p2 
      blockdev@dev-sda1.target                                                             loaded inactive dead Block Device Preparation for /dev/sda1 
      blockdev@dev-sdb1.target                                                             loaded inactive dead Block Device Preparation for /dev/sdb1 
    
    LOAD   = Reflects whether the unit definition was properly loaded. 
    ACTIVE = The high-level unit activation state, i.e. generalization of SUB. 
    SUB    = The low-level unit activation state, values depend on unit type. 
    8 loaded units listed.
    To show all installed unit files use 'systemctl list-unit-files'. 
    erlangen:~ #
    Change to backup unit:
    Code:
    erlangen:~ # systemctl cat backup-home.service               
    # /etc/systemd/system/backup-home.service
    [Unit] 
    erlangen:~ # systemctl cat backup-home.service                
    # /etc/systemd/system/backup-home.service
    [Unit] 
    Description=Backup /home 
    Requires=HDD-scan.service HDD.mount 
    After=HDD-scan.service blockdev@dev-disk-by\x2duuid-f5177cae\x2d4082\x2d44ed\x2d9471\x2db99030f06866.target HDD.mount 
    
    [Service] 
    ExecStart=/usr/bin/rsync -a --exclude=.cache --exclude=covid-19-data /home/ /HDD/backup/home/ 
    ExecStopPost=/usr/bin/umount /HDD 
    ExecStopPost=/usr/local/bin/delete-backup-disk 
    erlangen:~ #
    
    Dependency on blockdev will cause backup-home.service wait for drive being ready:
    Code:
    erlangen:~ # journalctl -b -g sdb                                    
    Apr 12 04:58:26 erlangen kernel: sd 3:0:0:0: [sdb] 7814037168 512-byte logical blocks: (4.00 TB/3.64 TiB)
    Apr 12 04:58:26 erlangen kernel: sd 3:0:0:0: [sdb] 4096-byte physical blocks
    Apr 12 04:58:26 erlangen kernel: sd 3:0:0:0: [sdb] Write Protect is off
    Apr 12 04:58:26 erlangen kernel: sd 3:0:0:0: [sdb] Mode Sense: 00 3a 00 00
    Apr 12 04:58:26 erlangen kernel: sd 3:0:0:0: [sdb] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
    Apr 12 04:58:26 erlangen kernel:  sdb: sdb1 
    Apr 12 04:58:26 erlangen kernel: sd 3:0:0:0: [sdb] Attached SCSI disk
    Apr 12 04:58:28 erlangen hd-idle[766]:   disk: sdb timeout: 300 
    Apr 12 04:58:28 erlangen kernel: sd 3:0:0:0: [sdb] Synchronizing SCSI cache
    Apr 12 04:58:28 erlangen kernel: sd 3:0:0:0: [sdb] Stopping disk
    
    Apr 12 06:36:14 erlangen kernel: sd 3:0:0:0: [sdb] 7814037168 512-byte logical blocks: (4.00 TB/3.64 TiB)
    Apr 12 06:36:14 erlangen kernel: sd 3:0:0:0: [sdb] 4096-byte physical blocks
    Apr 12 06:36:14 erlangen kernel: sd 3:0:0:0: [sdb] Write Protect is off
    Apr 12 06:36:14 erlangen kernel: sd 3:0:0:0: [sdb] Mode Sense: 00 3a 00 00
    Apr 12 06:36:14 erlangen kernel: sd 3:0:0:0: [sdb] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
    Apr 12 06:36:23 erlangen kernel:  sdb: sdb1 
    Apr 12 06:36:23 erlangen kernel: sd 3:0:0:0: [sdb] Attached SCSI disk
    Apr 12 06:36:23 erlangen kernel: EXT4-fs (sdb1): mounted filesystem with ordered data mode. Quota mode: none. 
    Apr 12 06:38:04 erlangen kernel: Buffer I/O error on dev sdb1, logical block 1057, async page read
    Apr 12 06:38:04 erlangen kernel: Buffer I/O error on dev sdb1, logical block 1057, async page read
    Apr 12 06:38:04 erlangen kernel: sd 3:0:0:0: [sdb] Synchronizing SCSI cache
    Apr 12 06:38:04 erlangen kernel: sd 3:0:0:0: [sdb] Stopping disk
    erlangen:~ #
    Code:
    erlangen:~ # journalctl -b -u backup-home.service -u HDD* 
    Apr 12 04:58:28 erlangen systemd[1]: Started Disable backup HDD. 
    Apr 12 04:58:29 erlangen systemd[1]: HDD-disable.service: Deactivated successfully. 
    
    Apr 12 06:36:14 erlangen systemd[1]: Started Scan for backup HDD. 
    Apr 12 06:36:14 erlangen systemd[1]: HDD-scan.service: Deactivated successfully. 
    Apr 12 06:36:23 erlangen systemd[1]: Mounting /HDD... 
    Apr 12 06:36:23 erlangen systemd[1]: Mounted /HDD. 
    Apr 12 06:36:23 erlangen systemd[1]: Started Backup /home. 
    Apr 12 06:38:03 erlangen systemd[1]: HDD.mount: Deactivated successfully. 
    Apr 12 06:38:05 erlangen systemd[1]: backup-home.service: Deactivated successfully. 
    Apr 12 06:38:05 erlangen systemd[1]: backup-home.service: Consumed 27.369s CPU time. 
    erlangen:~ #
    Deactivation will occur only after successfully unmounting the drive and all data being written. Deactivation of the drive by daily invocation of service backup-home since 31-Mar-2022 left the file system intact:
    Code:
    erlangen:~ # fsck.ext4 -f /dev/sdb1 
    e2fsck 1.46.5 (30-Dec-2021) 
    Pass 1: Checking inodes, blocks, and sizes 
    Pass 2: Checking directory structure 
    Pass 3: Checking directory connectivity 
    Pass 4: Checking reference counts 
    Pass 5: Checking group summary information 
    HDD: 1557985/244195328 files (0.7% non-contiguous), 576762356/976753920 blocks 
    erlangen:~ # 
    i7-6700K (2016), i5-8250U (2018), AMD Ryzen 5 3400G (2020), 5600X, 5700U (2022) openSUSE Tumbleweed, KDE Plasma
    See also Blogs > KeepItSimple

  6. #6
    Join Date
    Jan 2014
    Location
    Erlangen
    Posts
    4,186
    Blog Entries
    5

    Default Re: Disabling SATA disk and scanning for it

    Waiting for blockdev@dev-disk-by\x2duuid-f5177cae\x2d4082\x2d44ed\x2d9471\x2db99030f06866.target doesn't ensure the disk is ready. Looping until file "delete" shows up in sysfs fixes the issue:
    Code:
    erlangen:~ # cat /usr/local/bin/scan-for-backup-disk                
    #!/bin/bash  
    delete=/sys/devices/pci0000:00/0000:00:01.2/0000:01:00.1/ata5/host4/target4:0:0/4:0:0:0/delete 
    scan=/sys/devices/pci0000:00/0000:00:01.2/0000:01:00.1/ata5/host4/scsi_host/host4/scan 
    while true ; do 
            echo scanning for backup disk  
            [ -f $delete ] && exit 
            echo '- - -' > $scan 
    done 
    erlangen:~ #
    Program starter for KDE Plasma:
    Code:
    karl@erlangen:~> cat Schreibtisch/Scan\ disk.desktop  
    [Desktop Entry] 
    Comment[de_DE]= 
    Comment= 
    Exec=/usr/bin/systemctl start HDD-scan.service 
    GenericName[de_DE]= 
    GenericName= 
    Icon=drive-harddisk-symbolic 
    MimeType= 
    Name[de_DE]=Scan disk 
    Name=Scan disk 
    Path= 
    StartupNotify=true 
    Terminal=false 
    TerminalOptions= 
    Type=Application 
    X-DBUS-ServiceName= 
    X-DBUS-StartupType= 
    X-KDE-SubstituteUID=false 
    X-KDE-Username= 
    karl@erlangen:~> 
    Granting permission:
    Code:
    erlangen:~ # cat /etc/polkit-1/rules.d/00-manage-HDD.rules  
    // Allow karl to  manage HDD-scan.service; 
    // fall back to implicit authorization otherwise. 
    polkit.addRule(function(action, subject) { 
        if (action.id == "org.freedesktop.systemd1.manage-units" && 
            action.lookup("unit") == "HDD-scan.service" && 
            subject.user == "karl") { 
            return polkit.Result.YES; 
        } 
    }); 
    erlangen:~ #
    Code:
    erlangen:~ # journalctl -b _KERNEL_DEVICE=+scsi:4:0:0:0 --since 08:18 
    Booting:
    Apr 18 08:18:09 erlangen kernel: scsi 4:0:0:0: Direct-Access     ATA      ST2000DM001-1CH1 CC29 PQ: 0 ANSI: 5
    Apr 18 08:18:09 erlangen kernel: sd 4:0:0:0: Attached scsi generic sg2 type 0
    Apr 18 08:18:16 erlangen kernel: sd 4:0:0:0: [sdc] 3907029168 512-byte logical blocks: (2.00 TB/1.82 TiB)
    Apr 18 08:18:16 erlangen kernel: sd 4:0:0:0: [sdc] 4096-byte physical blocks
    Apr 18 08:18:16 erlangen kernel: sd 4:0:0:0: [sdc] Write Protect is off
    Apr 18 08:18:16 erlangen kernel: sd 4:0:0:0: [sdc] Mode Sense: 00 3a 00 00
    Apr 18 08:18:16 erlangen kernel: sd 4:0:0:0: [sdc] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
    Apr 18 08:18:16 erlangen kernel: sd 4:0:0:0: [sdc] Attached SCSI disk
    Apr 18 08:18:49 erlangen kernel: sd 4:0:0:0: [sdc] Synchronizing SCSI cache
    Apr 18 08:18:49 erlangen kernel: sd 4:0:0:0: [sdc] Stopping disk
    Scanning:
    Apr 18 09:00:59 erlangen kernel: scsi 4:0:0:0: Direct-Access     ATA      ST2000DM001-1CH1 CC29 PQ: 0 ANSI: 5
    Apr 18 09:01:05 erlangen kernel: sd 4:0:0:0: Attached scsi generic sg2 type 0
    Apr 18 09:01:06 erlangen kernel: sd 4:0:0:0: [sdc] 3907029168 512-byte logical blocks: (2.00 TB/1.82 TiB)
    Apr 18 09:01:06 erlangen kernel: sd 4:0:0:0: [sdc] 4096-byte physical blocks
    Apr 18 09:01:06 erlangen kernel: sd 4:0:0:0: [sdc] Write Protect is off
    Apr 18 09:01:06 erlangen kernel: sd 4:0:0:0: [sdc] Mode Sense: 00 3a 00 00
    Apr 18 09:01:06 erlangen kernel: sd 4:0:0:0: [sdc] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
    Apr 18 09:01:06 erlangen kernel: sd 4:0:0:0: [sdc] Attached SCSI disk
    Disabling:
    Apr 18 09:01:07 erlangen kernel: sd 4:0:0:0: [sdc] Synchronizing SCSI cache
    Apr 18 09:01:07 erlangen kernel: sd 4:0:0:0: [sdc] Stopping disk
    erlangen:~ #
    i7-6700K (2016), i5-8250U (2018), AMD Ryzen 5 3400G (2020), 5600X, 5700U (2022) openSUSE Tumbleweed, KDE Plasma
    See also Blogs > KeepItSimple

  7. #7
    Join Date
    Jan 2014
    Location
    Erlangen
    Posts
    4,186
    Blog Entries
    5

    Default Re: Disabling SATA disk and scanning for it

    Quote Originally Posted by karlmistelberger View Post
    An annoying kernel bug delays resume from suspend to RAM: https://bugzilla.opensuse.org/show_bug.cgi?id=1195025 As a workaround the HDD involved is deactivated on suspend.

    Scripts:

    The dirty hack works as long as the HDD is plugged into the third SATA header on the motherboard.

    Deactivate disk:
    Code:
    erlangen:~ # cat /usr/local/bin/delete-backup-disk                                                                            
    #!/bin/bash 
    if [ -f /sys/devices/pci0000:00/0000:00:17.0/ata4/host3/target3:0:0/3:0:0:0/delete ] ; then 
            echo 1 > /sys/devices/pci0000:00/0000:00:17.0/ata4/host3/target3:0:0/3:0:0:0/delete 
    fi 
    erlangen:~ #
    
    Scan for disk:
    Code:
    erlangen:~ # cat /usr/local/bin/scan-for-backup-disk  
    #!/bin/bash 
    echo "- - -" > /sys/devices/pci0000:00/0000:00:17.0/ata4/host3/scsi_host/host3/scan 
    erlangen:~ #
    Further testing revealed that dealing with systemd ordering is cumbersome and spurious failures occur. Revised scripts have mounting and unmounting the drive included:
    Code:
    erlangen:~ # cat /usr/local/bin/scan-for-backup-disk                                           
    #!/bin/bash  
    echo "- - -" > /sys/devices/pci0000:00/0000:00:01.2/0000:04:00.1/ata1/host0/scsi_host/host0/scan 
    until [ -d /HDD/backup ] ; do echo Scanning backup disk ; sleep 1; done 
    erlangen:~ # cat /usr/local/bin/disable-backup-disk                                           
    #!/bin/bash 
    delete=/sys/devices/pci0000:00/0000:00:01.2/0000:04:00.1/ata1/host0/target0:0:0/0:0:0:0/delete 
    [ -d /HDD/backup ] && umount /HDD || true 
    [ -f $delete ] && echo 1 > $delete || true 
    erlangen:~ #
    i7-6700K (2016), i5-8250U (2018), AMD Ryzen 5 3400G (2020), 5600X, 5700U (2022) openSUSE Tumbleweed, KDE Plasma
    See also Blogs > KeepItSimple

  8. #8
    Join Date
    Jun 2016
    Location
    Ireland
    Posts
    336

    Default Re: Disabling SATA disk and scanning for it

    Quote Originally Posted by karlmistelberger View Post
    Further testing revealed that dealing with systemd ordering is cumbersome and spurious failures occur. Revised scripts have mounting and unmounting the drive included:
    Code:
    erlangen:~ # cat /usr/local/bin/scan-for-backup-disk                                           
    #!/bin/bash  
    echo "- - -" > /sys/devices/pci0000:00/0000:00:01.2/0000:04:00.1/ata1/host0/scsi_host/host0/scan 
    until [ -d /HDD/backup ] ; do echo Scanning backup disk ; sleep 1; done 
    erlangen:~ # cat /usr/local/bin/disable-backup-disk                                           
    #!/bin/bash 
    delete=/sys/devices/pci0000:00/0000:00:01.2/0000:04:00.1/ata1/host0/target0:0:0/0:0:0:0/delete 
    [ -d /HDD/backup ] && umount /HDD || true 
    [ -f $delete ] && echo 1 > $delete || true 
    erlangen:~ #
    In the scripts you test the sub-directory /HDD/backup. In the case you change the name of this sub-directory the scripts will fail.
    As my HDD is ext4 formatted, is it possible to use the sub-directory /lost+found instead?

  9. #9
    Join Date
    Jan 2014
    Location
    Erlangen
    Posts
    4,186
    Blog Entries
    5

    Default Re: Disabling SATA disk and scanning for it

    Quote Originally Posted by MrNice View Post
    As my HDD is ext4 formatted, is it possible to use the sub-directory /lost+found instead?
    This will work presumably. But it may create lots of confusion. Don't do that. Create a mount point of your own liking.
    i7-6700K (2016), i5-8250U (2018), AMD Ryzen 5 3400G (2020), 5600X, 5700U (2022) openSUSE Tumbleweed, KDE Plasma
    See also Blogs > KeepItSimple

  10. #10
    Join Date
    Jan 2014
    Location
    Erlangen
    Posts
    4,186
    Blog Entries
    5

    Default Re: Disabling SATA disk and scanning for it

    Revised script relied on mounting as a side effect, which no longer occurs with kernel 5.18:
    Quote Originally Posted by karlmistelberger View Post
    Code:
    erlangen:~ # cat /usr/local/bin/scan-for-backup-disk                                           
    #!/bin/bash  
    echo "- - -" > /sys/devices/pci0000:00/0000:00:01.2/0000:04:00.1/ata1/host0/scsi_host/host0/scan 
    until [ -d /HDD/backup ] ; do echo Scanning backup disk ; sleep 1; done 
    
    New version explicitly mounts the device:
    Code:
    erlangen:~ # cat /usr/local/bin/scan-for-backup-disk             
    #!/bin/bash  
    echo "- - -" > /sys/devices/pci0000:00/0000:00:01.2/0000:04:00.1/ata1/host0/scsi_host/host0/scan 
    until [ -L /dev/disk/by-uuid/f5177cae-4082-44ed-9471-b99030f06866 ] ; do echo Scanning backup disk ; sleep 1; done 
    [ -d /HDD/backup ] || mount /HDD || true 
    erlangen:~ #
    i7-6700K (2016), i5-8250U (2018), AMD Ryzen 5 3400G (2020), 5600X, 5700U (2022) openSUSE Tumbleweed, KDE Plasma
    See also Blogs > KeepItSimple

Page 1 of 2 12 LastLast

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •