![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Storage Protocols
文章平均质量分 87
CodeFarmerL
软件架构,硬件建模、硬件IP验证、智能网卡、DPU、Android、NPU、AI、RISC-V、NIC(network_interconnect)
展开
-
SCSI系列三:linux SCSI 子系统七十二-hisi_sas(13)
的函数,用于执行HISI SAS控制器的中断预初始化操作。这个函数的目的是执行与中断相关的预初始化设置,可能涉及中断控制器的配置、中断使能等操作。这个函数的主要目的是为HISI SAS控制器分配资源并初始化相关的数据结构,为控制器的操作做好准备。这个函数主要用于处理HISI SAS控制器的重置操作,包括在执行重置前的准备工作和实际的重置操作。的函数,作为一个工作队列处理函数,用于同步执行HISI SAS控制器的重置操作。的函数,作为一个工作队列处理函数,用于处理HISI SAS控制器的重置操作。原创 2023-08-15 11:50:24 · 133 阅读 · 0 评论 -
SCSI系列三:linux SCSI 子系统七十一-hisi_sas(12)
每个函数指针都与一个特定的操作相关联,以在SAS层与HISI SAS控制器之间进行适当的通信和处理。这个函数的目的是在HISI SAS控制器的内存结构中设置适当的初始值,以确保控制器在正常运行前具有正确的状态。在这个函数中,会对控制器的各种数据结构进行初始化,以确保控制器在启动时处于正确的状态。总之,这个函数用于处理物理端口下线的情况,根据端口的就绪状态和端口类型执行不同的操作,同时更新与物理端口和端口关联的信息。对命令队列和完成队列的初始化:分配和初始化命令队列和完成队列的内存。原创 2023-08-15 11:31:05 · 122 阅读 · 0 评论 -
SCSI系列三:linux SCSI 子系统七十-hisi_sas(11)
I_T Nexus 重置是一种操作,用于重置 SAS 连接中的 Initiator-Target 关系,以解决可能出现的问题。总之,该函数用于处理在 SAS 任务执行期间发生超时的情况,根据超时情况执行不同的操作,如输出日志信息、设置硬件故障标志以及触发 HBA 复位等操作。这段代码的目的是在需要时对设备的逻辑单元进行重置,以解决可能出现的问题,例如设备无响应或出现错误。这段代码的作用是查询一个给定的 SAS 任务的执行状态,根据查询结果来判断任务是否成功完成、失败、或者仍在 LUN 中等,并相应地更新。原创 2023-08-15 11:01:22 · 65 阅读 · 0 评论 -
SCSI系列三:linux SCSI 子系统六十九-hisi_sas(10)
根据任务的协议类型,执行相应的中断操作,并根据情况释放任务槽。该函数用于执行控制器的软复位操作,包括进行复位前的准备工作、实际的复位操作,以及复位完成后的处理工作。如果复位操作失败,函数输出一个警告日志,清除相关标志位,释放信号量,解除请求阻塞,然后返回错误码。如果该标志已经被设置,说明复位操作已经在进行中,函数将释放信号量并返回错误码 -1。如果硬件支持软复位,函数获取控制器的信号量,以确保在进行复位操作期间不会有其他并发的操作。最后,函数返回 0,表示准备工作完成,可以进行控制器的复位操作。原创 2023-08-15 10:29:02 · 97 阅读 · 0 评论 -
SCSI系列三:linux SCSI 子系统六十八-hisi_sas(9)
这个函数根据设备的类型执行不同的初始化操作。在代码片段的上下文中,此函数似乎是用于初始化设备,以便在使用设备之前进行一些必要的设置。总之,这个函数用于对所有连接到 HISI SAS 控制器的设备执行初始化操作,确保这些设备在使用之前都进行了必要的设置和准备工作。总之,这个函数用于向连接到指定 SAS 端口上的每个物理链路上的 ATA 设备发送 ATA 复位命令,以进行复位操作。总之,这个函数的目的是在 STP 连接被拒绝时,通过终止相关设备的内部任务和发送 ATA 复位命令,确保连接的终止。原创 2023-08-15 10:18:11 · 120 阅读 · 0 评论 -
SCSI系列三:linux SCSI 子系统六十七-hisi_sas(8)
这个函数确保在控制器的上下文中释放掉所有设备上的任务资源,以确保资源的正确释放和回收。这段代码是一个用于启用或禁用 HISI SAS 控制器中的 PHY 的函数,它对 PHY 的启用状态进行了适当的追踪。这个函数允许在 HISI SAS 控制器上进行内部任务中止,以便对设备进行必要的操作,比如中止正在进行的操作等。函数的主要目的是在启用或禁用 PHY 时,确保适当地跟踪 PHY 的状态,以及在启用时进行必要的操作。这个函数用于在控制器的上下文中,释放掉所有设备上的任务资源,以确保资源的正确释放和回收。原创 2023-08-14 17:50:32 · 88 阅读 · 0 评论 -
SCSI系列三:linux SCSI 子系统六十六-hisi_sas(7)
总之,这个函数根据设备类型采取不同的初始化措施,以确保连接到 HISI SAS 控制器上的设备在初始化阶段能够正常工作。总之,这个函数在 SCSI 设备被分配并连接到 HISI SAS 控制器时,会为设备分配资源并执行必要的初始化操作,以确保设备能够在后续的操作中正常运行。总之,这个函数用于在配置与 HISI SAS 控制器相关的 SCSI 设备时,对这些设备进行适当的配置设置,以确保它们在控制器上正常运行。总之,这个函数用于在 HISI SAS 控制器上找到一个域设备时,分配并初始化相应的。原创 2023-08-14 17:31:17 · 108 阅读 · 0 评论 -
SCSI系列三:linux SCSI 子系统六十五-hisi_sas(6)
在 HISI SAS 控制器中,不同的队列可能需要不同的同步机制,因此这些函数用于在不同的场景中执行适当的同步操作。这个函数在数据传输过程中的最后阶段调用,主要用于更新 PHY 和端口的状态,以及通知相关事件,确保物理链路和端口状态与数据传输一致。这个函数的目的是保证在释放 TMF 任务之前,相关的资源和状态都得到合适的同步和清理,以避免潜在的竞态条件或内存访问错误。这个函数的主要作用是将 SAS 任务添加到 HBA 的队列中,并做好相应的准备工作,以确保任务能够被适当地处理和传输。原创 2023-08-14 16:35:25 · 128 阅读 · 0 评论 -
SCSI系列三:linux SCSI 子系统六十三-hisi_sas(5)
这一系列函数是任务准备函数,用于为不同类型的 SAS 任务进行准备。这两个函数是用于映射和解除映射 DMA 内存的函数,以便在数据传输过程中将数据从系统内存传输到硬件设备(或者反过来)。这个函数的主要目的是在 HBA 上启动数据传输过程,通过准备数据和使用硬件接口,确保任务能够正确交付给适当的设备并进行数据传输。这些函数用于在数据传输过程中管理 DMA 内存的映射,确保数据能够在系统内存和硬件设备之间有效传输。这些函数共同工作以确保 SAS 控制器中的命令槽在任务完成后得到适当的管理和回收。原创 2023-08-14 16:05:46 · 114 阅读 · 0 评论 -
SCSI系列三:linux SCSI 子系统六十二-hisi_sas(4)
函数的主要目的是根据支持的最大链接速率,计算出一个掩码(mask),该掩码用于表示支持的物理层链接速率。该函数根据给定的 ATA 命令和方向,判断 ATA 命令使用的 SATA 协议,返回一个表示 SATA 协议的枚举值。该函数用于处理 SATA 任务完成时的操作,将完成的任务的状态信息设置到任务状态结构体中,以便上层进行后续的处理。总之,这个函数的作用是计算支持的物理层链接速率的掩码,以便在驱动中表示支持的链接速率选项。函数是驱动模块的退出函数,它在模块卸载时调用。具体地,假设支持的最大链接速率是。原创 2023-08-14 15:54:45 · 121 阅读 · 0 评论 -
SCSI系列三:linux SCSI 子系统六十一-hisi_sas(3)
这个结构体的设计使得在DIF支持的情况下,可以将普通的数据传输元素与带有DIF的数据传输元素存储在同一块内存区域内,以便于在执行命令时进行管理和传输。这个结构体的目的是将命令的状态信息、命令头部和数据传输元素存储在同一块内存区域内,以便于在命令执行过程中管理和传输命令的各个部分。这个结构体的目的是将命令的状态信息和错误记录存储在同一块内存区域内,以便于在命令执行过程中及时记录状态和错误信息。在某些情况下,可能会根据具体的命令类型选择不同的成员来填充联合体,从而实现不同类型的命令在同一块内存区域内的表示。原创 2023-08-14 15:21:03 · 108 阅读 · 0 评论 -
SCSI系列三:linux SCSI 子系统六十-hisi_sas(2)
ITCT 表包含了与控制器中的每个设备相关的信息,如设备的 SAS 地址等。这些结构体定义了不同类型的数据结构,用于在 HisiSAS 控制器中处理存储操作,例如命令传输和数据传输。的结构体,该结构体用于封装与HisiSAS硬件相关的操作和功能的函数指针。这些常量和枚举用于控制Hisilicon SAS控制器的调试功能,使开发者能够在调试过程中配置不同的参数和模式以获取更多信息。这段代码定义了几个用于存储命令和数据的结构体,这些结构体在 HisiSAS 控制器中用于处理存储设备的通信和数据传输。原创 2023-08-14 15:05:48 · 125 阅读 · 0 评论 -
SCSI系列三:linux SCSI 子系统五十九-hisi_sas(1)
drivers/scsi/” 是Linux内核源代码中用于实现SCSI(Small Computer System Interface)协议的目录。SCSI是一种用于连接和通信计算机系统与外部设备的标准接口。在这个目录下,有许多不同的驱动程序,每个驱动程序都负责支持不同类型的SCSI控制器、设备和技术。以下是一些常见的驱动程序和它们在"drivers/scsi/"目录中的实现介绍:aic7xxx/:这个子目录包含Adaptec AIC-7xxx 系列SCSI控制器的驱动程序。原创 2023-08-14 14:54:08 · 330 阅读 · 0 评论 -
SCSI系列三:linux SCSI 子系统五十八-sg(10)
在这个函数中,创建了多个 proc 文件和目录,例如 “allow_dio”、“debug”、“def_reserved_size”、“device_hdr”、“devices” 和 “device_strs”。函数用于在 proc 文件中显示每个 SCSI 设备的详细信息,包括主机号、通道号、ID、LUN、设备类型、opens 数量、队列深度、繁忙状态以及在线状态。总之,这个函数在 proc 文件系统中创建了一系列的文件和目录节点,以及相应的读取操作,用于在用户空间获取关于 SCSI 通用设备的信息。原创 2023-08-11 16:57:04 · 123 阅读 · 0 评论 -
SCSI系列三:linux SCSI 子系统五十七-sg(9)
函数用于在 SG 设备中添加一个新的 SG 文件描述符,并进行相应的初始化和配置。函数的作用是在 SG 文件描述符引用计数减少到零时,从 SG 设备的文件描述符列表中移除文件描述符,并为文件描述符安排异步工作以在用户上下文中进行实际的移除操作。函数的主要任务是从 SG 设备的文件描述符列表中移除文件描述符,并为要移除的文件描述符安排异步工作以在用户上下文中进行实际的移除操作。添加到链表:如果设备没有在分离状态,函数将新的 SG 文件描述符添加到设备的链表中,表示此设备管理的所有 SG 文件描述符。原创 2023-08-11 16:12:48 · 79 阅读 · 0 评论 -
SCSI系列三:linux SCSI 子系统五十六-sg(8)
如果剩余的数据大小小于等于当前 scatter/gather 列表的大小,则将正在进行的请求的 scatter/gather 列表信息设置为预留的 scatter/gather 列表信息,同时更新相关属性。在构建间接的 scatter/gather 列表时,它表示每个间接页表条目可以包含的 scatter/gather 列表元素的数量。循环:在循环中,函数将正在进行的 SG 请求的 scatter/gather 列表信息重置为初始状态,即取消与预留的 scatter/gather 列表的关联。原创 2023-08-11 15:54:26 · 109 阅读 · 0 评论 -
SCSI系列三:linux SCSI 子系统五十五-sg(7)
这个函数会根据传入的参数设置请求的各种属性,分配一个请求对象,然后将请求添加到请求队列中以进行实际的 I/O 操作。驱动中用于启动请求(I/O 操作)的关键函数,它会根据参数设置请求的属性,并根据需要进行数据映射或直接传输操作,最终将请求添加到请求队列中。驱动的退出函数,会在模块卸载时释放驱动占用的各种资源,并进行相应的清理操作,确保驱动卸载时的正常退出。总之,这个函数在设备销毁时被调用,负责从 IDR 中移除设备索引,并释放设备的内存。在内核中,sysctl 提供了一种在运行时调整内核参数的方法,通过。原创 2023-08-11 15:21:48 · 227 阅读 · 0 评论 -
SCSI系列三:linux SCSI 子系统五十四-sg(6)
函数实现了为 SG 设备文件创建内存映射区域的功能,它会根据传入的虚拟内存区域信息和设备缓冲区信息计算映射的页数,并设置相应的内存映射属性和回调函数。函数是一个在 SCSI 命令完成时执行的回调函数,用于处理请求完成后的状态更新、资源释放和后续处理操作,包括异步通知和工作项的调度。总之,这段代码是用于将 SG 设备添加到系统中的函数,它涵盖了字符设备的创建、初始化、关联以及与 sysfs 的交互等操作。函数是一个在请求结束时执行的回调函数,它用于处理请求的完成和清理操作,确保请求被适当地移除和释放。原创 2023-08-11 14:55:08 · 149 阅读 · 0 评论 -
SCSI系列三:linux SCSI 子系统五十三-sg(5)
它会根据传入的模式进行相应的设置或取消操作,并将异步通知队列指针传递给内核,以便在文件状态变化时触发通知。函数用于监控 SG 设备文件描述符上的事件,包括可读和可写事件,以及设备是否已分离。对于其他一些特定命令,如设置/获取超时、设置/获取命令队列等,函数会执行相应的操作,如设置超时时间、命令队列标志等。函数用于设置或取消异步通知,允许进程在文件描述符上注册信号,以便在文件状态发生变化时通知进程。否则,函数根据页偏移量、虚拟内存区域的起始地址和缓冲区中的页数信息,计算出页面在缓冲区中的位置。原创 2023-08-11 14:29:28 · 99 阅读 · 0 评论 -
SCSI系列三:linux SCSI 子系统五十二-sg(4)
总体来说,这段代码实现了将新版本的请求信息数组复制到旧版本兼容性请求信息数组中的操作,以支持在兼容性场景下获取请求信息。函数处理了新的 SG 设备写操作,支持 SG IO 头部,创建请求结构,发送命令数据,并返回操作的结果。函数处理了 SG 设备的写操作,支持不同的请求类型,构建请求结构,并将请求数据发送到设备。结构是用于兼容性支持的请求信息结构,用于在旧的接口中获取请求信息,类似于。根据命令的长度和用户提供的数据长度,确定传输的方向(到设备还是从设备)。函数,用于检查特定请求结构的完成状态。原创 2023-08-11 13:54:32 · 137 阅读 · 0 评论 -
SCSI系列三:linux SCSI 子系统五十一-sg(3)
以上提供的一系列函数主要用于实现Linux内核中关于SCSI Generic(sg)设备的操作。这些函数涵盖了SG设备的打开、读取、释放等操作,同时还包括了对请求、状态以及错误处理的逻辑。sg_open处理 SG 设备的打开操作,初始化设备并为操作分配资源。检查权限和设备状态,防止特权提升和资源泄漏。控制并维护设备的打开状态,处理排他访问等情况。初始化设备文件描述符的私有数据并更新设备状态。sg_release处理 SG 设备的释放操作,释放相应资源并关闭设备。原创 2023-08-11 11:33:17 · 110 阅读 · 0 评论 -
SCSI系列三:linux SCSI 子系统五十-sg(2)
SG(SCSI Generic)驱动是Linux内核中用于与SCSI设备通信的驱动程序。它允许用户空间应用程序通过文件系统接口来进行与SCSI设备的通信,支持传统的ioctl调用,同时还提供了异步的read()和write()接口。SG驱动提供了一种通用的接口,允许用户空间应用程序与SCSI设备进行通信。它通过一系列的数据结构和函数,实现了SCSI命令的传输、异步I/O的控制以及请求的管理等功能,同时也提供了对安全性的保护,防止潜在的内核损坏和特权升级问题。原创 2023-08-11 11:18:52 · 186 阅读 · 0 评论 -
SCSI系列三:linux SCSI 子系统四十九-sg(1)
这个结构体用于描述 SCSI 命令和数据传输的参数,是在进行 SCSI I/O 操作时与设备进行通信的重要工具。SG 设备是一种特殊的设备接口,允许用户空间应用程序与 SCSI 设备进行直接通信,执行 SCSI 命令和数据传输。是用于与 SCSI 设备进行通信的数据结构,它包含了执行 SCSI I/O 操作时所需的各种参数和状态信息。这个结构用于获取 SCSI 设备的标识信息,包括主机编号、通道、SCSI ID、LUN、设备类型以及主机和设备的队列深度等信息。取值为 0、1 或 2,表示请求的状态。原创 2023-08-11 10:55:05 · 906 阅读 · 0 评论 -
SCSI系列三:linux SCSI 子系统四十八-scsi_transport_iscsi(16)
总之,这个函数的作用类似于之前介绍的两个函数,用于确定给定的设备是否与 iSCSI 主机相关,并且判断这个设备是否与给定的属性容器相匹配。总之,这个函数的作用是确定给定的设备是否与 iSCSI 会话相关,并且判断这个设备是否与给定的属性容器相匹配。函数,用于确定给定的设备是否与 iSCSI 连接相关,并且判断这个设备是否与给定的属性容器相匹配。总之,这个函数用于注册 iSCSI 传输层,并将其相关的设备、属性和属性容器添加到系统中,从而可以通过 sysfs 接口管理 iSCSI 主机、连接和会话的属性。原创 2023-08-10 10:09:14 · 53 阅读 · 0 评论 -
SCSI系列三:linux SCSI 子系统四十七-scsi_transport_iscsi(15)
在这个宏的示例中,被创建的属性是。通过定义属性组和属性的可见性检查函数,可以控制在 sysfs 中显示哪些属性以及何时显示这些属性。当用户访问这个属性时,会调用定义的属性显示函数来获取会话的目标 ID 信息,并将其显示给用户。当用户访问这个属性时,会调用定义的属性显示函数来获取会话的创建者信息,并将其显示给用户。当用户访问这个属性时,会调用定义的属性显示函数来获取会话的状态,并将其显示给用户。,权限设置为只读(S_IRUGO),并且在用户访问该属性时会调用定义的属性显示函数来获取并显示会话的目标状态。原创 2023-08-10 10:09:02 · 88 阅读 · 0 评论 -
SCSI系列三:linux SCSI 子系统四十六-scsi_transport_iscsi(14)
这个数组用于描述连接对象的可用属性,它会被注册到 sysfs 文件系统中,使得用户可以通过读取这些文件来查看连接对象的各种属性。在这段代码中,通过使用这两个宏,为连接端点的 “address” 和 “port” 属性创建了设备属性,可以通过 sysfs 接口读取这些属性的值。这段代码定义了两个宏,用于创建用于显示连接端点(endpoint)属性的回调函数,并使用这些宏来创建设备属性。在这个函数中,通过对比属性指针来确定要显示的属性,然后根据属性的类型和参数,使用连接对象的传输层(原创 2023-08-09 16:56:04 · 68 阅读 · 0 评论 -
SCSI系列三:linux SCSI 子系统四十五-scsi_transport_iscsi(13)
这段代码实现了函数,用于从 iSCSI 传输层获取主机的统计信息。这个函数用于从 iSCSI 传输层获取主机的统计信息。首先,它检查是否存在函数。如果不存在,就返回错误码 -ENOSYS。接下来,函数从传入的nlmsghdr参数中获取用户态传递的请求,即请求获取主机统计信息的事件。然后,它从transport中查找 iSCSI 传输层的内部数据结构,以便获得传输层的相关信息。计算主机统计信息结构的大小,并根据这个大小计算需要的整体消息长度。然后,函数根据传入的host_no。原创 2023-08-09 16:47:28 · 88 阅读 · 0 评论 -
SCSI系列三:linux SCSI 子系统四十四-scsi_transport_iscsi(12)
函数首先根据传入的参数查找相关的会话和连接,然后调用指定的传输层函数来设置闪存节点的参数。这个函数的目的是在传输层中实现基于会话 ID 的登出操作,以确保会话从活动状态切换到非活动状态,从而可以安全地进行其他操作或者会话可能被移除。最后,函数在必要时放置已获取的设备和会话,并释放 Scsi_Host 的引用。这两个函数的目的是在传输层中管理 iSCSI 闪存节点的创建和删除,以支持会话和连接的管理。最后,函数释放 Scsi_Host 的引用,并返回执行结果,成功为 0,出错为相应的错误码。原创 2023-08-09 16:42:32 · 55 阅读 · 0 评论 -
SCSI系列三:linux SCSI 子系统四十三-scsi_transport_iscsi(11)
函数查找与目标主机号关联的 SCSI 主机结构。检查传递给函数的参数数据长度是否超过了一个页面的大小,如果超过了,函数返回错误码。函数查找与目标主机号关联的 SCSI 主机结构。总之,该函数用于将用户空间传递的 CHAP 认证信息设置到 iSCSI 主机中。总之,该函数用于从 iSCSI 主机中删除指定索引的 CHAP 认证信息。函数,传入 SCSI 主机、参数标识符、参数数据指针和参数数据的长度。结构中获取所需的参数,如主机号、CHAP 表索引和期望的条目数量。如果成功设置信息,函数返回操作结果。原创 2023-08-09 16:16:55 · 85 阅读 · 0 评论 -
SCSI系列三:linux SCSI 子系统四十二-scsi_transport_iscsi(10)
通过这个函数,内核可以执行 iSCSI 端点的连接操作,将主机和目标端点进行连接,可以选择使用阻塞或非阻塞的连接方式。通过这个函数,内核可以在创建 iSCSI 会话时将会话相关的信息填充到用户空间的请求结构中,从而确保用户空间能够获取会话的相关信息以及会话创建的状态。通过这个函数,内核可以在创建 iSCSI 连接时将连接的相关信息填充到用户空间的请求结构中,从而确保用户空间能够获取连接的相关信息以及连接创建的状态。通过这个函数,用户空间可以查询 iSCSI 连接的统计信息,从而监控和分析连接的性能和状态。原创 2023-08-09 16:04:58 · 75 阅读 · 0 评论 -
SCSI系列三:linux SCSI 子系统四十一-scsi_transport_iscsi(9)
这段代码是一个函数,用于根据给定的 iSCSI 传输层指针查找与之关联的 iSCSI 内部数据结构。主要用于在 iSCSI 传输层和 iSCSI 内部之间建立关联和查找。该函数的流程是:获取全局的 iSCSI 传输层锁,以确保在查找过程中不会有并发访问问题。使用循环遍历全局链表,这个链表包含所有已注册的 iSCSI 传输层的内部数据结构。在每次循环迭代中,检查当前遍历到的priv内部数据结构的字段是否与给定的tt指针相等。如果相等,表示找到了与给定的传输层关联的内部数据结构。原创 2023-08-09 15:49:03 · 74 阅读 · 0 评论 -
SCSI系列三:linux SCSI 子系统四十-scsi_transport_iscsi(8)
这个函数会减少 iSCSI 类连接的引用计数,并在引用计数减少到零时释放连接的内存资源。这个函数用于遍历所有连接设备,如果连接的状态不是已关闭,则强制终止连接并销毁连接。函数,减少会话设备的引用计数。这实际上是将会话设备的引用计数减少1,如果没有其他地方引用会话设备,则会触发设备的销毁。该函数用于停止 iSCSI 连接,它考虑了连接的端点情况,以及连接停止的不同情况,如终止连接或进行清理。这些函数的使用可以确保在正确的时间增加和减少连接的引用计数,从而避免内存泄漏或访问已释放内存的情况。原创 2023-08-09 15:10:24 · 78 阅读 · 0 评论 -
SCSI系列三:linux SCSI 子系统三十九-scsi_transport_iscsi(7)
__iscsi_unbind_sessionstatic void __iscsi_unbind_session(struct work_struct *work){ struct iscsi_cls_session *session = container_of(work, struct iscsi_cls_session, unbind_work); struct Scsi_Host *shost = iscsi_session_to_shost(session); s原创 2023-08-09 14:35:43 · 106 阅读 · 0 评论 -
SCSI系列三:linux SCSI 子系统三十八-scsi_transport_iscsi(6)
总之,该函数允许在给定的主机上迭代遍历所有 iSCSI 会话设备,并对每个会话设备执行特定的操作。总之,这个函数会在工作队列中执行,根据会话对象执行 iSCSI 会话的重新扫描操作,以检测新的目标设备并将其添加到系统中。总之,这个函数用于执行用户请求的 iSCSI 扫描操作,遍历会话设备列表并执行相应的扫描操作,以添加目标设备到系统中。的函数,用于设置会话为已登录状态,并开始进行 IO 操作。总之,该函数允许根据给定的会话ID在会话链表中查找匹配的 iSCSI 会话,并返回找到的会话对象。原创 2023-08-09 11:54:05 · 90 阅读 · 0 评论 -
SCSI系列三:linux SCSI 子系统三十七-scsi_transport_iscsi(5)
这个函数的作用是在 sysfs 中创建并注册闪存节点连接的设备,以便显示闪存节点连接的属性。这个函数的作用是在 sysfs 中创建并注册闪存节点会话的设备,以便显示闪存节点会话的属性。总之,该函数允许根据提供的数据和比较函数,在设备列表中查找与之匹配的闪存节点会话对象,并返回匹配的设备对象。,用于移除 ISCSI 主机设置。该函数的主要作用是根据提供的数据和比较函数,在设备列表中查找与之匹配的闪存节点会话对象。这些函数的主要目的是辅助管理闪存节点连接设备,从验证设备是否是闪存节点连接开始,到销毁这些设备。原创 2023-08-09 11:17:27 · 95 阅读 · 0 评论 -
SCSI系列三:linux SCSI 子系统三十六-scsi_transport_iscsi(4)
在函数内部,通过将设备指针转换为闪存节点连接指针,然后进一步将其转换为闪存节点会话指针,最终调用适当的传输层函数来获取闪存节点参数的值。在这个函数中,通过将设备指针转换为闪存节点会话指针,释放了相关的内存,如目标名称、目标别名、门户类型等,然后最终释放了闪存节点会话本身的内存。的设备类型结构,其中包含设备类型的名称、属性组和释放函数。这些宏和函数的目的是为闪存节点连接属性提供方便的显示操作,使其能够在 sysfs 中展示相应的值。的属性组,包含了所有闪存节点连接属性,以及用于确定属性组是否可见的函数。原创 2023-08-08 17:09:30 · 56 阅读 · 0 评论 -
SCSI系列三:linux SCSI 子系统三十五-scsi_transport_iscsi(3)
这些代码段定义了一系列 iSCSI 特定的设置属性,这些属性包括默认任务管理超时、报头摘要、数据摘要、立即数据传输、初始 R2T、数据序列是否有序、数据 PDU 是否有序、ERL(Error Recovery Level)等。这些代码段定义了一系列通用的 iSCSI 接口属性,这些属性包括接口启用状态、VLAN ID、VLAN 优先级、VLAN 是否启用、最大传输单元(MTU)等。这种机制允许根据属性的类型和特定的参数值来动态控制属性是否在 sysfs 中显示,从而在不同的情况下提供不同的可见性设置。原创 2023-08-08 14:36:22 · 78 阅读 · 0 评论 -
SCSI系列三:linux SCSI 子系统三十四-scsi_transport_iscsi(2)
这个结构体的目的是提供一个 iSCSI 内部数据的管理机制,其中包括 iSCSI 传输层的实例、设备信息、传输层模板函数等。需要注意的是,自旋锁是一种忙等锁,在获取锁失败时会不断尝试,直到成功为止,因此适用于短时间内能够获得锁的情况。:这个函数用于根据给定的端点句柄查找对应的 iSCSI 端点。此设备属性允许具有管理员权限的进程在 sysfs 中读取 iSCSI 传输层的句柄,以便查看传输层的信息。通过这个宏和属性定义,可以快速创建其他类似的只读设备属性,并以相应的格式显示 iSCSI 传输层的信息。原创 2023-08-08 14:31:18 · 168 阅读 · 0 评论 -
SCSI系列三:linux SCSI 子系统三十三-scsi_transport_iscsi(1)
scsi_transport_iscsi.h文件是用于iSCSI(Internet Small Computer System Interface)传输层的头文件。它包含了iSCSI传输层相关的定义、结构和函数原型。原创 2023-08-08 11:36:56 · 177 阅读 · 0 评论 -
SCSI系列三:linux SCSI 子系统三十二-scsi_transport_srp(4)
此函数的目的是在移除SRP HBA和Scsi_Host后,停止SRP远程端口上的所有恢复定时器,确保在rport被释放之前,不再执行任何定时器操作,以避免悬挂和资源泄漏。的地址来判断给定的容器是否与SRP目标端口的容器匹配,如果匹配,则返回非零值,表示该设备属于这个容器。如果不匹配,返回0。的地址来判断给定的容器是否与SRP主机的容器匹配,如果匹配,则返回非零值,表示该设备属于这个容器。此函数的目的是在移除SRP HBA时,首先清理和删除该HBA上的所有SRP远程端口,以确保资源得到正确的释放和清理。原创 2023-08-07 14:23:20 · 77 阅读 · 0 评论