From: Barto <mister.freeman@laposte.net>
To: linux-kernel@vger.kernel.org
Subject: BUG in scsi_lib.c due to a bad commit
Date: Wed, 12 Nov 2014 00:33:02 +0100 [thread overview]
Message-ID: <54629CAE.2000207@laposte.net> (raw)
Hello everyone,
I notice a bug since kernel 3.17 ( and also with 3.18 branch ), a random
hang at boot on some PC configurations, I did a "git bisect" and I found
that the culprit is :
[045065d8a300a37218c548e9aa7becd581c6a0e8] [SCSI] fix qemu boot hang problem
http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=045065d8a300a37218c548e9aa7becd581c6a0e8
the author of this commit has choosen to inverse the logic of the if
statement in the file drivers/scsi/scsi_lib.c in order to solve an
issue with qemu :
--- a/drivers/scsi/scsi_lib.c
+++ b/drivers/scsi/scsi_lib.c
@@ -1774,7 +1774,7 @@ static void scsi_request_fn(struct request_queue *q)
blk_requeue_request(q, req);
atomic_dec(&sdev->device_busy);
out_delay:
- if (atomic_read(&sdev->device_busy) && !scsi_device_blocked(sdev))
+ if (!atomic_read(&sdev->device_busy) && !scsi_device_blocked(sdev))
blk_delay_queue(q, SCSI_QUEUE_DELAY);
}
this change triggers a bug on my PC ( I don't have SCSI devices, but
only 3 SATA harddisks and 2 IDE harddisks, SATA disks are on an ICH7
sata controler on the motherboard gigabyte GA-P31-DS3L, and IDE disk on
a JMicron JMB363/368 Sata/IDE PCIe card ), every 5~10 boots the boot
stops suddenly because of this commit,
If I revert this commit then the bug is gone, more details can be found
here, where I created a patch who reverts commit 045065d8 :
https://bugzilla.kernel.org/show_bug.cgi?id=87581
my question: why Guenter Roeck ( the author of the bad commit ) has
choosen to inverse the logic in the if statement ?
before his commit the if statement was like this :
if (atomic_read(&sdev->device_busy) && !scsi_device_blocked(sdev))
blk_delay_queue(q, SCSI_QUEUE_DELAY);
if his decision to inverse the logic of
"atomic_read(&sdev->device_busy)" is acceptable then the real bug is
probably located elsewhere in the scsi source code, and we must solve
this mistery because there is obviously a bug regression in SCSI code
because with older kernels ( 3.16.7 and lower ) I don't have the random
hang boot bug with my configuration,
another user in archlinux forums has also this bug and he has a more
modern PC ( intel i7 core cpu, SSD device ), my fear is when linux
distros will move to kernel 3.17 then more users will have this weird
random bug who can occur only on boot and only with a specific PC
configuration, if the boot step is passed despite the random bug then
the bug will not occur, it occurs only during the boot process, which
probably means that the faulty source code is only called during the
boot process,
thanks for anyone who wants to dig this problem with me
next reply other threads:[~2014-11-11 23:33 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-11-11 23:33 Barto [this message]
2014-11-12 0:17 ` BUG in scsi_lib.c due to a bad commit Bjorn Helgaas
2014-11-12 2:53 ` Guenter Roeck
2014-11-13 3:28 ` Barto
2014-11-13 5:33 ` Elliott, Robert (Server Storage)
2014-11-13 5:33 ` Elliott, Robert (Server Storage)
2014-11-13 9:38 ` Barto
2014-11-13 14:29 ` Christoph Hellwig
2014-11-13 15:13 ` Barto
2014-11-13 17:14 ` Barto
2014-11-13 17:54 ` Christoph Hellwig
2014-11-13 22:55 ` Barto
2014-11-14 7:32 ` Christoph Hellwig
2014-11-14 16:30 ` Barto
2014-11-16 18:30 ` Barto
2014-11-19 20:21 ` Barto
-- strict thread matches above, loose matches on Subject: below --
2014-11-20 6:09 Christoph Hellwig
2014-11-20 17:44 ` Barto
2014-11-20 17:53 ` Christoph Hellwig
2014-11-20 18:27 ` Barto
2014-11-24 9:18 ` Christoph Hellwig
2014-11-24 15:12 ` Barto
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=54629CAE.2000207@laposte.net \
--to=mister.freeman@laposte.net \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.