Bug 242087 - aacraid: with system aacraid instead of vendor aacraid, all disks from the controller disappeared
Summary: aacraid: with system aacraid instead of vendor aacraid, all disks from the co...
Status: New
Alias: None
Product: Base System
Classification: Unclassified
Component: kern (show other bugs)
Version: 12.0-STABLE
Hardware: amd64 Any
: --- Affects Some People
Assignee: freebsd-bugs (Nobody)
URL:
Keywords: patch
Depends on:
Blocks:
 
Reported: 2019-11-19 21:27 UTC by Igor Timkin
Modified: 2019-11-21 09:55 UTC (History)
2 users (show)

See Also:


Attachments
Patch solves problems (399 bytes, patch)
2019-11-19 21:27 UTC, Igor Timkin
no flags Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Igor Timkin 2019-11-19 21:27:15 UTC
Created attachment 209257 [details]
Patch solves problems

I am using Adaptec 6805e with 8 disks without arrays. In FreeBSD9, I used the driver from the Adaptec site. When migrating to FreeBSD10 or later, I switched to the system aacraid. All disks from the controller disappeared in the system and passX devices remained. Patch solves these problems, I use it on 12.1-STABLE for three months (I also tested it on 11-STABLE).
Comment 1 Andriy Gapon freebsd_committer freebsd_triage 2019-11-20 07:46:24 UTC
I believe that the code is self-consistent as it was designed.
You can question whether the design is sane, but that's a different story.
By default the driver exposes only logical disks.
If you want it to expose physical devices you need to set '8' (3rd bit) in its flags.
And, of course, a part of the problem is that this is not documented.
Comment 2 Igor Timkin 2019-11-20 20:09:22 UTC
Sorry, I did not put it very clearly. The problem occurred when I switching vendor aacu64.ko (for FreeBSD9) to vendor aacraidu.ko (for FreeBSD10). The behavior of the vendor driver and the system driver are the same in FreeBSD10 and higher.

How can I add the 3rd bit to the disk flag?
Comment 3 Andriy Gapon freebsd_committer freebsd_triage 2019-11-20 22:18:18 UTC
Maybe something like
hint.aacraid.0.flags="0x8"
in /boot/device.hints ?
Comment 4 Igor Timkin 2019-11-21 09:55:29 UTC
I looked again at the aacraid source.
/usr/src/sys/dev/aacraid/aacraid_var.h:
In struct aac_softc:
#define AAC_FLAGS_PERC2QC (1 << 0)
#define AAC_FLAGS_ENABLE_CAM (1 << 1) / * No SCSI passthrough * /
#define AAC_FLAGS_CAM_NORESET (1 << 2) / * Fake SCSI resets * /
#define AAC_FLAGS_CAM_PASSONLY (1 << 3) / * Only create pass devices * /
      [...]
#define AAC_FLAGS_SYNC_MODE (1 << 18) / * Sync. transfer mode * /
u_int32_t hint_flags; / * driver parameters * /

If the 3rd bit is set (AAC_FLAGS_CAM_PASSONLY), then there should only be a passX device.