* Check if vnode represents a disk device */
| 5139 | * Check if vnode represents a disk device |
| 5140 | */ |
| 5141 | bool |
| 5142 | vn_isdisk_error(struct vnode *vp, int *errp) |
| 5143 | { |
| 5144 | int error; |
| 5145 | |
| 5146 | if (vp->v_type != VCHR) { |
| 5147 | error = ENOTBLK; |
| 5148 | goto out; |
| 5149 | } |
| 5150 | error = 0; |
| 5151 | dev_lock(); |
| 5152 | if (vp->v_rdev == NULL) |
| 5153 | error = ENXIO; |
| 5154 | else if (vp->v_rdev->si_devsw == NULL) |
| 5155 | error = ENXIO; |
| 5156 | else if (!(vp->v_rdev->si_devsw->d_flags & D_DISK)) |
| 5157 | error = ENOTBLK; |
| 5158 | dev_unlock(); |
| 5159 | out: |
| 5160 | *errp = error; |
| 5161 | return (error == 0); |
| 5162 | } |
| 5163 | |
| 5164 | bool |
| 5165 | vn_isdisk(struct vnode *vp) |
no test coverage detected