← Documents Documentation/scsi/hpsa.rst GitHub 원문 ↗

Linux 6.18.37 · SCSI

HPSA Smart Array Driver

HP Smart Array mode, host·disk sysfs와 cciss 호환 ioctl을 설명합니다.

Source pathDocumentation/scsi/hpsa.rst
Source versionLinux v6.18.37
TranslationDUJINLABS 전문 번역 + 해설

요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.

1. 요약·해설

원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.

요약·해설

hpsa.rst:1-129

HP Smart Array mode, host·disk sysfs와 cciss 호환 ioctl을 설명합니다.

2. 영어 원문 전체

번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.

원문 전체 펼치기
1 .. SPDX-License-Identifier: GPL-2.0
2
3 =========================================
4 HPSA - Hewlett Packard Smart Array driver
5 =========================================
6
7 This file describes the hpsa SCSI driver for HP Smart Array controllers.
8 The hpsa driver is intended to supplant the cciss driver for newer
9 Smart Array controllers. The hpsa driver is a SCSI driver, while the
10 cciss driver is a "block" driver. Actually cciss is both a block
11 driver (for logical drives) AND a SCSI driver (for tape drives). This
12 "split-brained" design of the cciss driver is a source of excess
13 complexity and eliminating that complexity is one of the reasons
14 for hpsa to exist.
15
16 Supported devices
17 =================
18
19 - Smart Array P212
20 - Smart Array P410
21 - Smart Array P410i
22 - Smart Array P411
23 - Smart Array P812
24 - Smart Array P712m
25 - Smart Array P711m
26 - StorageWorks P1210m
27
28 Additionally, older Smart Arrays may work with the hpsa driver if the kernel
29 boot parameter "hpsa_allow_any=1" is specified, however these are not tested
30 nor supported by HP with this driver. For older Smart Arrays, the cciss
31 driver should still be used.
32
33 The "hpsa_simple_mode=1" boot parameter may be used to prevent the driver from
34 putting the controller into "performant" mode. The difference is that with simple
35 mode, each command completion requires an interrupt, while with "performant mode"
36 (the default, and ordinarily better performing) it is possible to have multiple
37 command completions indicated by a single interrupt.
38
39 HPSA specific entries in /sys
40 =============================
41
42 In addition to the generic SCSI attributes available in /sys, hpsa supports
43 the following attributes:
44
45 HPSA specific host attributes
46 =============================
47
48 ::
49
50 /sys/class/scsi_host/host*/rescan
51 /sys/class/scsi_host/host*/firmware_revision
52 /sys/class/scsi_host/host*/resettable
53 /sys/class/scsi_host/host*/transport_mode
54
55 the host "rescan" attribute is a write only attribute. Writing to this
56 attribute will cause the driver to scan for new, changed, or removed devices
57 (e.g. hot-plugged tape drives, or newly configured or deleted logical drives,
58 etc.) and notify the SCSI midlayer of any changes detected. Normally this is
59 triggered automatically by HP's Array Configuration Utility (either the GUI or
60 command line variety) so for logical drive changes, the user should not
61 normally have to use this. It may be useful when hot plugging devices like
62 tape drives, or entire storage boxes containing pre-configured logical drives.
63
64 The "firmware_revision" attribute contains the firmware version of the Smart Array.
65 For example::
66
67 root@host:/sys/class/scsi_host/host4# cat firmware_revision
68 7.14
69
70 The transport_mode indicates whether the controller is in "performant"
71 or "simple" mode. This is controlled by the "hpsa_simple_mode" module
72 parameter.
73
74 The "resettable" read-only attribute indicates whether a particular
75 controller is able to honor the "reset_devices" kernel parameter. If the
76 device is resettable, this file will contain a "1", otherwise, a "0". This
77 parameter is used by kdump, for example, to reset the controller at driver
78 load time to eliminate any outstanding commands on the controller and get the
79 controller into a known state so that the kdump initiated i/o will work right
80 and not be disrupted in any way by stale commands or other stale state
81 remaining on the controller from the previous kernel. This attribute enables
82 kexec tools to warn the user if they attempt to designate a device which is
83 unable to honor the reset_devices kernel parameter as a dump device.
84
85 HPSA specific disk attributes
86 -----------------------------
87
88 ::
89
90 /sys/class/scsi_disk/c:b:t:l/device/unique_id
91 /sys/class/scsi_disk/c:b:t:l/device/raid_level
92 /sys/class/scsi_disk/c:b:t:l/device/lunid
93
94 (where c:b:t:l are the controller, bus, target and lun of the device)
95
96 For example::
97
98 root@host:/sys/class/scsi_disk/4:0:0:0/device# cat unique_id
99 600508B1001044395355323037570F77
100 root@host:/sys/class/scsi_disk/4:0:0:0/device# cat lunid
101 0x0000004000000000
102 root@host:/sys/class/scsi_disk/4:0:0:0/device# cat raid_level
103 RAID 0
104
105 HPSA specific ioctls
106 ====================
107
108 For compatibility with applications written for the cciss driver, many, but
109 not all of the ioctls supported by the cciss driver are also supported by the
110 hpsa driver. The data structures used by these are described in
111 include/linux/cciss_ioctl.h
112
113 CCISS_DEREGDISK, CCISS_REGNEWDISK, CCISS_REGNEWD
114 The above three ioctls all do exactly the same thing, which is to cause the driver
115 to rescan for new devices. This does exactly the same thing as writing to the
116 hpsa specific host "rescan" attribute.
117
118 CCISS_GETPCIINFO
119 Returns PCI domain, bus, device and function and "board ID" (PCI subsystem ID).
120
121 CCISS_GETDRIVVER
122 Returns driver version in three bytes encoded as::
123
124 (major_version << 16) | (minor_version << 8) | (subminor_version)
125
126 CCISS_PASSTHRU, CCISS_BIG_PASSTHRU
127 Allows "BMIC" and "CISS" commands to be passed through to the Smart Array.
128 These are used extensively by the HP Array Configuration Utility, SNMP storage
129 agents, etc. See cciss_vol_status at http://cciss.sf.net for some examples.
130

3. 한국어 전문 번역

영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.

cciss 대체 목적과 controller mode

1-39

`hpsa`는 HP Smart Array용 SCSI driver로 새 controller에서 `cciss`를 대체하려 한다. cciss가 logical drive용 block driver와 tape용 SCSI driver 역할을 함께 하는 복잡성을 없애는 것이 목적이다.

지원 목록은 Smart Array P212, P410/P410i/P411, P812, P712m/P711m과 StorageWorks P1210m이다. 구형 Smart Array는 `hpsa_allow_any=1`로 동작할 수 있지만 시험·HP 지원 대상이 아니므로 cciss 사용을 권장한다.

`hpsa_simple_mode=1`은 performant mode 진입을 막는다. Simple mode는 completion마다 interrupt가 필요하지만 기본 performant mode는 한 interrupt로 여러 completion을 알릴 수 있어 보통 더 빠르다.

hpsa mode
ModeInterrupt기본
Performant한 IRQ에 여러 completion 가능Yes
SimpleCommand마다 IRQhpsa_simple_mode=1

Completion interrupt 방식의 차이입니다.

.. SPDX-License-Identifier: GPL-2.0

=========================================
HPSA - Hewlett Packard Smart Array driver
=========================================

This file describes the hpsa SCSI driver for HP Smart Array controllers.
The hpsa driver is intended to supplant the cciss driver for newer
Smart Array controllers.  The hpsa driver is a SCSI driver, while the
cciss driver is a "block" driver.  Actually cciss is both a block
driver (for logical drives) AND a SCSI driver (for tape drives). This
"split-brained" design of the cciss driver is a source of excess
complexity and eliminating that complexity is one of the reasons
for hpsa to exist.

Supported devices
=================

- Smart Array P212
- Smart Array P410
- Smart Array P410i
- Smart Array P411
- Smart Array P812
- Smart Array P712m
- Smart Array P711m
- StorageWorks P1210m

Additionally, older Smart Arrays may work with the hpsa driver if the kernel
boot parameter "hpsa_allow_any=1" is specified, however these are not tested
nor supported by HP with this driver.  For older Smart Arrays, the cciss
driver should still be used.

The "hpsa_simple_mode=1" boot parameter may be used to prevent the driver from
putting the controller into "performant" mode.  The difference is that with simple
mode, each command completion requires an interrupt, while with "performant mode"
(the default, and ordinarily better performing) it is possible to have multiple
command completions indicated by a single interrupt.

HPSA specific entries in /sys

Host rescan, firmware와 resettable

40-92

Host attribute는 `/sys/class/scsi_host/host*/rescan`, `firmware_revision`, `resettable`, `transport_mode`다. `rescan`은 write-only이며 새·변경·제거 device를 scan해 SCSI midlayer에 알린다.

Logical drive 변경은 HP Array Configuration Utility가 보통 자동 trigger한다. 수동 rescan은 hot-plug tape 또는 미리 구성된 logical drive가 든 storage box 연결에 유용하다.

`firmware_revision`은 Smart Array firmware version을, `transport_mode`는 performant 또는 simple을 표시한다. 후자는 `hpsa_simple_mode`가 제어한다.

Read-only `resettable`은 controller가 kernel `reset_devices`를 이행할 수 있으면 1이다. Kdump kernel load 때 outstanding·stale command와 state를 제거하기 위해 사용하며, kexec tool이 reset 불가능 controller를 dump device로 지정할 때 경고할 수 있게 한다.

hpsa host sysfs
AttributeAccess의미
rescanWrite-onlyDevice 변화 scan
firmware_revisionReadFirmware version
resettableRead-onlyreset_devices 지원 0/1
transport_modeReadperformant/simple

Access와 의미입니다.

Kdump reset
Crash kernel loadresettable 확인reset_devices 요청Outstanding command 제거Known controller stateDump I/O

이전 kernel state를 제거합니다.

=============================

  In addition to the generic SCSI attributes available in /sys, hpsa supports
  the following attributes:

HPSA specific host attributes
=============================

  ::

    /sys/class/scsi_host/host*/rescan
    /sys/class/scsi_host/host*/firmware_revision
    /sys/class/scsi_host/host*/resettable
    /sys/class/scsi_host/host*/transport_mode

  the host "rescan" attribute is a write only attribute.  Writing to this
  attribute will cause the driver to scan for new, changed, or removed devices
  (e.g. hot-plugged tape drives, or newly configured or deleted logical drives,
  etc.) and notify the SCSI midlayer of any changes detected.  Normally this is
  triggered automatically by HP's Array Configuration Utility (either the GUI or
  command line variety) so for logical drive changes, the user should not
  normally have to use this.  It may be useful when hot plugging devices like
  tape drives, or entire storage boxes containing pre-configured logical drives.

  The "firmware_revision" attribute contains the firmware version of the Smart Array.
  For example::

        root@host:/sys/class/scsi_host/host4# cat firmware_revision
        7.14

  The transport_mode indicates whether the controller is in "performant"
  or "simple" mode.  This is controlled by the "hpsa_simple_mode" module
  parameter.

  The "resettable" read-only attribute indicates whether a particular
  controller is able to honor the "reset_devices" kernel parameter.  If the
  device is resettable, this file will contain a "1", otherwise, a "0".  This
  parameter is used by kdump, for example, to reset the controller at driver
  load time to eliminate any outstanding commands on the controller and get the
  controller into a known state so that the kdump initiated i/o will work right
  and not be disrupted in any way by stale commands or other stale state
  remaining on the controller from the previous kernel.  This attribute enables
  kexec tools to warn the user if they attempt to designate a device which is
  unable to honor the reset_devices kernel parameter as a dump device.

HPSA specific disk attributes
-----------------------------

  ::

    /sys/class/scsi_disk/c:b:t:l/device/unique_id
    /sys/class/scsi_disk/c:b:t:l/device/raid_level
    /sys/class/scsi_disk/c:b:t:l/device/lunid

Disk unique ID, RAID level과 LUN ID

93-110

Disk attribute 경로는 `/sys/class/scsi_disk/c:b:t:l/device/` 아래 `unique_id`, `raid_level`, `lunid`다. `c:b:t:l`은 controller, bus, target, LUN이다.

예시는 device `4:0:0:0`에서 unique ID `600508B1001044395355323037570F77`, LUN ID `0x0000004000000000`, `RAID 0`을 읽는다.

hpsa disk sysfs
File예시
unique_id600508B1001044395355323037570F77
lunid0x0000004000000000
raid_levelRAID 0

논리 device 식별 정보입니다.


  (where c:b:t:l are the controller, bus, target and lun of the device)

  For example::

        root@host:/sys/class/scsi_disk/4:0:0:0/device# cat unique_id
        600508B1001044395355323037570F77
        root@host:/sys/class/scsi_disk/4:0:0:0/device# cat lunid
        0x0000004000000000
        root@host:/sys/class/scsi_disk/4:0:0:0/device# cat raid_level
        RAID 0

HPSA specific ioctls
====================

  For compatibility with applications written for the cciss driver, many, but
  not all of the ioctls supported by the cciss driver are also supported by the
  hpsa driver.  The data structures used by these are described in

cciss 호환 ioctl

111-129

cciss application 호환을 위해 많은 ioctl을 지원하지만 전부는 아니다. Data structure는 `include/linux/cciss_ioctl.h`에 정의된다.

`CCISS_DEREGDISK`, `CCISS_REGNEWDISK`, `CCISS_REGNEWD`는 모두 device rescan을 수행하며 host `rescan` attribute write와 같다. `CCISS_GETPCIINFO`는 PCI domain·bus·device·function과 board ID인 subsystem ID를 반환한다.

`CCISS_GETDRIVVER`는 driver version을 `(major_version << 16) | (minor_version << 8) | subminor_version`의 3 byte로 반환한다. `CCISS_PASSTHRU`와 `CCISS_BIG_PASSTHRU`는 BMIC·CISS command를 Smart Array로 통과시키며 HP configuration utility와 SNMP storage agent가 사용한다.

hpsa ioctl
ioctl기능
DEREGDISK / REGNEWDISK / REGNEWD동일한 rescan
CCISS_GETPCIINFOPCI 위치와 subsystem ID
CCISS_GETDRIVVERPacked 3-byte version
CCISS_PASSTHRUBMIC/CISS passthrough
CCISS_BIG_PASSTHRU큰 passthrough

cciss compatibility 동작입니다.

  include/linux/cciss_ioctl.h

  CCISS_DEREGDISK, CCISS_REGNEWDISK, CCISS_REGNEWD
        The above three ioctls all do exactly the same thing, which is to cause the driver
        to rescan for new devices.  This does exactly the same thing as writing to the
        hpsa specific host "rescan" attribute.

  CCISS_GETPCIINFO
        Returns PCI domain, bus, device and function and "board ID" (PCI subsystem ID).

  CCISS_GETDRIVVER
        Returns driver version in three bytes encoded as::

                (major_version << 16) | (minor_version << 8) | (subminor_version)

  CCISS_PASSTHRU, CCISS_BIG_PASSTHRU
        Allows "BMIC" and "CISS" commands to be passed through to the Smart Array.
        These are used extensively by the HP Array Configuration Utility, SNMP storage
        agents, etc.  See cciss_vol_status at http://cciss.sf.net for some examples.