Package: kexec-tools
Version: 1:2.0.10-1
Severity: normal

Dear Maintainer,

*** Reporter, please consider answering these questions, where appropriate ***

   * What led up to the situation?

Using Linux kernels later than 4.2.0 on a machine that uses the eata driver
to access a disk on a DPT2044W SCSI controller.

   * What exactly did you do (or not do) that was effective (or
     ineffective)?

Discussed on the linux-scsi mailing list:

http://comments.gmane.org/gmane.linux.scsi/104634

given some patches, did testing and found:

After some more thorough testing I've encountered an ongoing problem trying to 
use kexec with filesystems mounted with the eata driver.

If I boot up and have the eata driver loaded but no filesystem check or 
mounting of filesystems on the disk attached to the DPT2044W controller, then 
attempt a kexec reboot I get the reboot pausing after the "synchronizing scsi 
cache" messages and getting the errors that I have included as pictures in my 
previous reports.

If I do a normal boot which includes eata being loaded, the disk attached to 
the DPT2044W controller having its filesystems checked and mounted, then 
attempt a kexec reboot, I get the reboot pausing after the "synchronizing SCSI 
cache" messages as before.

If I un-mount the filesystems on the disk attached to the DPT2044W controller 
after start-up and try a reboot I get the same problem.

If I do modprobe -r eata after un-mounting the filesystems on the disk attached 
to the DPT2044W controller after a start-up kexec *works fine*.

If I do:

start-up
un-mount filesystems on disk attached to DPT2044W controller
modprobe -r eata
modprobe eata
fsck -a of filesystems on disk attached to DPT2044W controller
mount filesystems

then a kexec reboot works fine.

I did some more experimenting and found a workaround:

I was unable to blacklist the eata module but if I did:

modprobe -r eata
modprobe eata

in a cron job before the fsck and mount commands then
I could then perform a kexec reboot successfully.

I also verified that if I did:

modprobe -r eata

after eata was loaded on boot-up without any fsck or mounting of filesystems on 
the disk attached to the DPT2044W controller using the eata the kexec reboot 
worked fine.

In summary:

if eata is loaded kexec reboot will fail unless a modprobe -r eata is done 
either manually or by a cron job.

if a modprobe -r eata has been done, then even if I modprobe eata and fsck and 
mount filesystems, kexec reboot works.

Any suggestions for further tests or checks welcome.

   * What was the outcome of this action?
   * What outcome did you expect instead?

*** End of the template - remove these template lines ***


-- System Information:
Debian Release: stretch/sid
  APT prefers unstable
  APT policy: (500, 'unstable'), (500, 'testing'), (500, 'stable'), (500, 
'oldstable'), (1, 'experimental')
Architecture: i386 (i686)

Kernel: Linux 4.3.0-rc3+ (SMP w/1 CPU core; PREEMPT)
Locale: LANG=en_AU.UTF-8, LC_CTYPE=en_AU.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/bash
Init: sysvinit (via /sbin/init)

Versions of packages kexec-tools depends on:
ii  debconf [debconf-2.0]  1.5.57
ii  libc6                  2.19-22

kexec-tools recommends no packages.

kexec-tools suggests no packages.

-- Configuration Files:
/etc/default/kexec changed:
LOAD_KEXEC=true
KERNEL_IMAGE="/boot/vmlinuz-4.3.0-rc3+"
INITRD="/boot/initrd.img-4.3.0-rc3+"
APPEND=""
USE_GRUB_CONFIG=false

/etc/init.d/kexec changed:
PATH=/sbin:/bin
. /lib/lsb/init-functions
test -r /etc/default/kexec && . /etc/default/kexec
do_stop () {
        test "x`cat /sys/kernel/kexec_loaded`y" = "x1y" || exit 0
        test -x /sbin/kexec || exit 0
        mount
        sleep 5
        log_action_msg "Will now restart with kexec"
        # Clear the screen if possible
        printf "\033[;H\033[2J"
        /sbin/kexec -e
        log_failure_msg "kexec failed"
}
case "$1" in
  start)
        # No-op
        ;;
  restart|reload|force-reload)
        echo "Error: argument '$1' not supported" >&2
        exit 3
        ;;
  stop)
        do_stop
        ;;
  *)
        echo "Usage: $0 start|stop" >&2
        exit 3
        ;;
esac
exit 0


-- debconf-show failed

Reply via email to