Home | History | Annotate | Download | only in ata
History log of /src/sys/dev/ata/ata_raid_subr.c
RevisionDateAuthorComments
 1.5  16-Mar-2025  andvar ataraid(4), ld(4): ensure RAID disk status is set before resolving vnode.

Given a RAID array disk is missing (due to removal, failure, or a code bug),
its configuration is skipped. This causes ld(4) attachment at ataraid(4) to
fail because adi->adi_dev is NULL.

The fix will treat disks without known status (ADI_S_ONLINE, ADI_S_SPARE,
ADI_S_ASSIGNED) as if ata_raid_disk_vnode_find() returned NULL, more gracefully
solving above situation and avoiding the crash.

Additionally, replace vnode block device opening logic with vn_bdev_open()
(vn_subr(9)). This function provides identical functionality while also
incrementing vp->v_writecount, preventing a 'vp->v_writecount > 0` assertion
failure on vn_close().

More details are available in the tech-kern mailing list thread:
the https://mail-index.netbsd.org/tech-kern/2025/03/10/msg030179.html thread
and PR thread.

Should fix PR kern/43986
Also observed in PR kern/59130 (due to a different bug).

pullups are needed to netbsd-9, netbsd-10.
 1.4  19-Mar-2022  hannken branches: 1.4.4; 1.4.10;
Lock vnode across VOP_OPEN.
 1.3  25-Jun-2017  maxv dumb instruction
 1.2  24-Jun-2010  hannken branches: 1.2.18; 1.2.36;
Clean up vnode lock operations pass 2:

VOP_UNLOCK(vp, flags) -> VOP_UNLOCK(vp): Remove the unneeded flags argument.

Welcome to 5.99.32.

Discussed on tech-kern.
 1.1  16-Sep-2008  tron branches: 1.1.2; 1.1.4; 1.1.6; 1.1.18; 1.1.22; 1.1.24;
Support multiple volumes connected to Intel MatrixRAID controllers.
Code contributed by Juan RP in PR kern/39552.
 1.1.24.1  03-Jul-2010  rmind sync with head
 1.1.22.1  17-Aug-2010  uebayasi Sync with HEAD.
 1.1.18.3  11-Aug-2010  yamt sync with head.
 1.1.18.2  04-May-2009  yamt sync with head.
 1.1.18.1  16-Sep-2008  yamt file ata_raid_subr.c was added on branch yamt-nfs-mp on 2009-05-04 08:12:35 +0000
 1.1.6.2  19-Oct-2008  haad Sync with HEAD.
 1.1.6.1  16-Sep-2008  haad file ata_raid_subr.c was added on branch haad-dm on 2008-10-19 22:16:19 +0000
 1.1.4.2  28-Sep-2008  mjf Sync with HEAD.
 1.1.4.1  16-Sep-2008  mjf file ata_raid_subr.c was added on branch mjf-devfs2 on 2008-09-28 10:40:19 +0000
 1.1.2.2  24-Sep-2008  wrstuden Merge in changes between wrstuden-revivesa-base-2 and
wrstuden-revivesa-base-3.
 1.1.2.1  16-Sep-2008  wrstuden file ata_raid_subr.c was added on branch wrstuden-revivesa on 2008-09-24 16:38:51 +0000
 1.2.36.1  28-Aug-2017  skrll Sync with HEAD
 1.2.18.1  03-Dec-2017  jdolecek update from HEAD
 1.4.10.1  02-Aug-2025  perseant Sync with HEAD
 1.4.4.1  07-May-2025  martin Pull up following revision(s) (requested by andvar in ticket #1100):

sys/dev/ata/ld_ataraid.c: revision 1.51
sys/dev/ata/ata_raid_subr.c: revision 1.5

ataraid(4), ld(4): ensure RAID disk status is set before resolving vnode.

Given a RAID array disk is missing (due to removal, failure, or a code bug),
its configuration is skipped. This causes ld(4) attachment at ataraid(4) to
fail because adi->adi_dev is NULL.

The fix will treat disks without known status (ADI_S_ONLINE, ADI_S_SPARE,
ADI_S_ASSIGNED) as if ata_raid_disk_vnode_find() returned NULL, more gracefully
solving above situation and avoiding the crash.

Additionally, replace vnode block device opening logic with vn_bdev_open()
(vn_subr(9)). This function provides identical functionality while also
incrementing vp->v_writecount, preventing a 'vp->v_writecount > 0` assertion
failure on vn_close().

More details are available in the tech-kern mailing list thread:
the https://mail-index.netbsd.org/tech-kern/2025/03/10/msg030179.html thread
and PR thread.
Should fix PR kern/43986

Also observed in PR kern/59130 (due to a different bug).

RSS XML Feed