Bug 179057
Summary: | SCSI LLDD's oops on rmmod if devices scan w/ PQ=3 | ||
---|---|---|---|
Product: | Red Hat Enterprise Linux 4 | Reporter: | James Smart <james.smart> |
Component: | kernel | Assignee: | Mike Christie <mchristi> |
Status: | CLOSED ERRATA | QA Contact: | Brian Brock <bbrock> |
Severity: | high | Docs Contact: | |
Priority: | medium | ||
Version: | 4.0 | CC: | coughlan, jbaron |
Target Milestone: | --- | ||
Target Release: | --- | ||
Hardware: | All | ||
OS: | Linux | ||
Whiteboard: | |||
Fixed In Version: | RHSA-2006-0132 | Doc Type: | Bug Fix |
Doc Text: | Story Points: | --- | |
Clone Of: | Environment: | ||
Last Closed: | 2006-03-07 21:21:11 UTC | Type: | --- |
Regression: | --- | Mount Type: | --- |
Documentation: | --- | CRM: | |
Verified Versions: | Category: | --- | |
oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |
Cloudforms Team: | --- | Target Upstream Version: | |
Embargoed: | |||
Bug Depends On: | |||
Bug Blocks: | 168430 |
Description
James Smart
2006-01-26 21:26:56 UTC
Hi James, I think we have this fixed in the newest kernel. Could you try this kernel real quick http://people.redhat.com/~jbaron/rhel4/ I just looked at the source and I am pretty sure it is fixed. For pq=3 and sdevp=NULL we remove the device for the caller. I do not have a box that returns pq=3, but I will download pat's scsi_debug patch again, and try out the sequential scan path to verify this. I've looked at the patch, and believe it should be ok. However, it seems messy. If nothing else, the code could be much clearer. Right now, you have to remember that if lun0 scan by scsi_scan_target(), sdevp is set and you need to leave the sdev, while if called by a report_luns or sequential scan, sdevp is Null. Also, it's leaving the "if (res == SCSI_SCAN_LUN_IGNORED) scsi_scan_remove(sdev)" snippets in scsi_scan_target() and __scsi_add_device(). So there's essentially 2 pieces of logic doing the same thing. As it should work - I'm trying to have some test put together to ensure it. However, it may take a couple of days. Also - I take it that this fix is currently planned to be part of U3, right ? Thanks -- james In the current code if you the caller needs the sdev pointer then it removes the device when it is done with it. This is why the second call to scsi_scan_target and __scsi_add_device do this. And if the caller does not need the sdev pointer so it passes NULL then the removal is handled for it. We should have done the starget stuff, like upstream but did not have time. I guess we could have just made the sdev pointer a mandatory argument to scsi_probe_and_add_lun but it seemed like a waste to have all the callers check this and remove it if necessary. Did you have something else in mind? We can keep it as is. We put it through some tests and everything looks good. Thank You. -- james An advisory has been issued which should help the problem described in this bug report. This report is therefore being closed with a resolution of ERRATA. For more information on the solution and/or where to find the updated files, please follow the link below. You may reopen this bug report if the solution does not work for you. http://rhn.redhat.com/errata/RHSA-2006-0132.html |