适配器接口的地址分配的制作方法

文档序号:7723579阅读:298来源:国知局
专利名称:适配器接口的地址分配的制作方法
专利说明本发明专利申请是国际申请号为PCT/US2004/040138 ,国际申请日为2004年12月 1日,进入中国国家阶段的申请号为200480036848. 4,名称为"适配器接口的地址分配"的
发明专利申请的分案申请。
背景
1.领域 本实施例涉及对适配器接口的地址分配。
2.相关技术的描沭 适配器或多通道协议控制器使得耦合至适配器的设备能根据存储互连架构,也 称为硬件接口,经由物理电缆或电线与一个或多个连接的最终设备通信,其中存储互连架 构定义了通信和识别这样的通信的标准方法,诸如串行附连小型计算机系统接口 (SCSI) (SAS)、串行高级技术附连(SATA)等。这些存储互连架构允许设备维持一个或多个连接, 诸如与最终设备的直接点对点连接或贯穿一个或多个扩展器的连接。设备也可经由交换 机、扩展器、光纤通道仲裁环、光纤等互连。在SAS/SATA架构中,SAS端口由一个或多个SAS PHY组成,其中每一SAS PHY接口到物理层(即物理接口或连接)和含有多个协议链路层的 SAS链路层。来自一个端口中的SAS PHY的通信由用于该端口的传输层处理。对每一SAS 端口存在一个传输层,用于与由该端口支持的每一类型的应用层接口。如SAS协议中所定 义的"PHY"是用于接口到其它设备和物理接口的设备对象。关于设备和扩展器的SAS架 构的进一步细节在由ANSI发布的参考号IS0/IEC 14776-150 :200x and ANSIINCITS. *** : 200x PHY layer (SO/IEC 14776-150 :200x和ANSI INCITS. *** :200xPHY层)(2003年7月 9日)的技术规范"Information Technology-Serial AttachedSCSI (SAS)(信息技术_串 行附连SCSI (SAS))"中有描述;关于光纤通道架构的细节在文献号ISO/IEC AWI 14165-25 的技术规范"Fibre Channel Framing andSignaling Interface (光纤通道帧禾口信令接 口 )"中有描述;关于SATA架构的细节在技术规范"Serial ATA :High Speed Serialized AT Attachment (串行ATA :高速串行化AT连接)"1. OA版(2003年1月)中有描述。
在适配器内,PHY层可包括用于执行数据的串-并转换的并-串转换器,使得并行 数据被发送给PHY层之上的各层,而串行数据从PHY经由物理接口发送给接收设备的PHY 层。在SAS规范中,对每一SAS PHY层存在一组链路层,使得每一链路层协议引擎高效地耦 合至PHY层中的并-串转换器。不同设备上的PHY的物理接口可经由电缆或经由电路板上 来连通电路板路径的蚀刻路径来连接。 如上所述,端口包含一个或多个PHY。设备中的端口基于在标识序列期间出现的 配置与物理PHY相关联。对设备内被配置成在标识序列期间使用SAS域内的同一SAS地 址的那些PHY,将该设备内的一个或多个PHY分配给端口 ,其中设备上在一个端口中具有相 同SAS地址的PHY连接至远程设备上也使用SAS域内的同一 SAS地址的PHY。宽端口具有 多个接口或PHY,而窄端口仅有一个PHY。宽链路包含将宽端口的PHY连接至相应的远程宽 端口中的相应PHY的一组物理链路,而窄链路是将窄端口附连至相应的远程窄端口的物理 链路。关于SAS架构的进一步细节在由ANSI发布的参考号ISO/IEC 14776-150 :200x and
4ANSIINCITS. *** :200x PHY layer(SO/IEC 14776-150 :200x和ANSI INCITS. *** :200xPHY 层)(2003年7月9日)的技术规范"Information Technology-Serial AttachedSCSI (SAS) (信息技术_串行连接SCSI (SAS))"中有描述。
附图简述 现在参考附图,附图中相同的参考标号表示全部附图中相应的部分

图1和2示出了根据各实施例的系统和适配器; 图3、5a、5b和7示出根据各实施例可如何连接设备;以及 图4和6示出了根据各实施例执行连接的设备之间的标识序列的操作。 详细描述 在以下描述中,对构成本发明的一部分并示出若干实施例的附图进行参考。可以 理解,可利用其它实施例并可进行结构上或操作上的改变。 图1示出了可在其中实现各实施例的计算环境。主机系统2包括一个或多个中央 处理单元(CPU)4(仅示出一个)、易失性存储器6、非易失性存储8、操作系统10和以及适 配器12a、12b,适配器包含与包括最终设备、交换机、扩展器、存储设备、服务器等远程设备 连接的物理接口。应用程序16还在存储器6中执行,它能经由适配器12a、12b之一发送和 接收传输。主机2可包括本领域中已知的任何计算设备,诸如大型机、服务器、个人计算机、 工作站、膝上型计算机、手持式计算机、电话设备、网络设备、虚拟化设备、存储控制器等。可 使用本领域中已知的各种CPU 4和操作系统10。存储器6中的程序和数据可被换入存储8
中,作为存储器管理操作的一部分。 操作系统IO可为适配器12中所支持的每一存储接口加载设备驱动程序20a和 20b,来允许与使用同样的所支持的存储接口通信的设备通信,并且还加载诸如外围部件互 连(PCI)接口等总线接口 24,来允许与总线26通信。PCI接口的进一步细节在由PCI-SIG 公布的出版物"PCL Local Bus, Rev. 2. 3(PCL局部总线,2. 3版)"中有描述。操作系统10 可在检测到适配器12a、12b的存在之后加载由适配器12a、12b支持的设备驱动程序20a、 20b,这可在初始化期间发生或动态发生。在图1的实施例中,操作系统IO加载三个设备驱 动程序20a和20b。例如,设备驱动程序20a和20b可支持SAS和SATA存储接口 ,即互连架 构。可基于适配器12a和12b支持的存储接口的个数加载更多或更少的设备驱动程序。
图2示出了适配器12的一个实施例,它可包括适配器12a、12b。每一适配器包括 一个或多个端口 30,其中每一端口 30包含与一个或多个SAS PHY 34接口的端口层32。每 一 PHY包括含有一个或多个协议链路层的SAS链路层36。图2示出了三个协议链路层,包 括处理SSP帧的串行SCSI协议(SSP)链路层38a、串行隧道协议(STP)层38b、串行管理协 议(SMP)层38c,它们进而经由端口层32与它们各自的传输层,即SSP传输层40a、 STP传 输层40b和SMP传输层40c接口 。这些层可被实现为从存储器中执行的程序组件和/或以 硬件实现。 端口 30的每一 PHY 34还包括SAS PHY层42和物理层44。物理层44包括物理接 口,后者包含发送器和接收器电路、路径和连接器。如图所示,物理层44耦合至PHY层42,其 中PHY层42规定了诸如转化比特的8bl0b等编码方案和计时机制。PHY层32a、32b. . . 32n 可包括执行串-并转换的串-并转换器和跟踪传入数据的锁相环(PLL),并向该串并-转换 器提供传入数据的数据时钟以在执行转换时使用。数据在适配器12处以串行格式接收,并在SAS PHY层32a、32b. . . 32n处转换成并行格式用于在适配器12内传输。SAS PHY层42 还规定差错检测、位移位和减幅,以及带外(00B)信令来建立与另一设备中的另一SAS PHY 的操作链路、与将数据发送给适配器12的外部设备中的PHY的速度协商等。
在图2的实施例中,存在与应用层50中的每一类型的应用层48a、48b、48c接口 的一个协议传输层40a、40b和40c。应用层50可在适配器12或主机系统2中支持,并向 最终用户提供网络服务。例如,SSP传输层46a与SCSI应用层48a接口, STP传输层46c 与高级技术附连(ATA)应用层48b接口,而SMP传输层46d与管理应用层48c接口。关 于物理层、PHY层、链路层、端口层、传输层和应用层以及实现此处描述的这些层的组件 的细节可在技术规范"InformationTechnology-Serial Attached SCSI (SAS)(信息技 术_串行附连SCSI (SAS))"中找到。关于ATA技术的进一步细节在出版物"Information Technology-ATAttachment with Packet Interface-6 (ATA/ATAPI-6)(信息技术_带有包 接口的AT附连-6 (ATA/ATAPI-6))",参考号ANSI INCITS 261-2002 (2002年9月)中有描 述。 每一端口 30具有适配器12上唯一的SAS地址,而该端口内的每一 PHY 34具有适 配器12内的唯一标识符,用于管理功能和路由。适配器12还可具有一个或多个唯一的域 地址,其中适配器12中的不同端口可被组织成不同的域或设备。PHY的SAS地址可包括向 其分配了 PHY的端口的SAS地址,且该端口 SAS地址用于向SAS域中的外部设备标识和定
址该ray。 图3示出了设备100和102可如何接口的示例,其中设备100具有分别链接至设 备104处的8个PHY 106a、 106b. . . 160 j的8个PHY 104a、 104b. . . 104 j 。设备100和102
可包括主机、扩展器、存储设备、服务器等,其中这些设备可实现参考图2所述的架构。这些 设备100和102可具有对其PHY的初始地址配置,其中PHY可共享相同的端口地址,且可位 于同一域中。设备中PHY的初始地址配置基于用户的配置选择。 图4示出了实现诸如适配器12设备100和102等图2的架构的设备中所实现的 操作,来执行标识序列和配置端口内的PHY。在标识序列期间,向设备告知连接至该设备的 本地接口 (例如本地PHY)的远程接口 (例如远程PHY)的地址,。图4中的标识序列操作 可在适配器12、设备100、 102的端口层32中编程,或由适配器12的设备驱动程序20a和 20b执行。在例如100的设备处复位或起动序列之后开始(框150处)标识序列时,为例如 100的设备处维护的初始或默认配置中提供的每一端口 j在框152到170处执行循环。对 每一初始端口 j,为在初始配置中分配给端口 j的每一PHY i在框154到160处执行循环。 在框156处,例如100的设备将包含作为端口 j的SAS地址的PHY i的SAS地址的标识地 址信息发送给例如远程设备102中的106a、106b. . . 106h等附连的KIY。 PHY i还从K1Y i 所附连的PHY中接收(在框158处)标识地址信息。设备100可在发送标识信息之前从远 程设备102处接收标识信息,反之亦然。当PHY发送并接收了标识信息时,PHY的标识完成。 此外,如果设备100没有接收到关于附连的设备PHY的标识信息,那么将发生超时,在那里 将重新起动整个链接初始化过程。控制然后返回至框154处来发送和接收下一 PHY的标识 地址信息。 当所有的PHY,例如104a、104b. 104h,都从附连的PHY,例如,106a、106b. 106h 中接收了标识地址信息之后,(在框162)作出关于是否所有的PHY,例如104a、104b. . . 104h都从它们所连接的PHY中接收了同样的SAS地址的判断。如果是,则为包含最初分配给端 口 j的所有的PHY,例如104a、 104b. . . 104h的端口 j形成宽端口 ,使得所有的PHY都被配置 成使用初始端口 j的SAS地址。然后将所有远程PHY,例如106a、106b. . . 106h的公共SAS 地址与本地PHY,例如104a、104b. . . 104h的公共端口 j的SAS地址相关联,以在操作期间使 用。如果(在框162处)远程PHY 106a、106b. . . 106h的SAS地址不相同,则对每一所接收 到的唯一远程SAS地址k,连接至远程SAS地址k的本地PHY,例如104a、 104b. . . 104h被分 配(框168处)给具有新的唯一端口 SAS地址的新配置的端口。如果所连接的远程PHY位 于不同的远程设备中,则本地PHY的该新的唯一 SAS地址可以不相同。在某些实施例中,新 的唯一端口 SAS地址可不同于为该端口配置的初始SAS地址,或一个端口 SAS地址可与初 始SAS地址相同,且至不同远程设备的连接的其它额外的新的SAS地址可以是唯一的。从 框166或168,控制(在框170处)回到框152来考虑初始配置中的任何其它端口。当考虑 了初始配置中的所有端口之后,如果(在框172处)配置了新的端口和SAS地址,则控制返 回至框150以使用PHY到端口地址的新分配来执行初始化过程的第二实例。
本地和远程PHY分别包括本地和远程设备处的本地和远程接口 。接口是连接至同 一或不同设备上的另一接口的物理或逻辑组件。术语接口可包括除PHY接口以外的接口 。 宽端口包括分配了多个接口的端口 ,其中一个或多个接口可分配给一个端口 。诸如本地SAS 地址等的本地地址包括分配给一个或多个接口的地址或标识符,而诸如远程SAS地址等远 程地址包括分配给连接至诸如本地接口之一等另一接口的远程设备中的一个或多个接口 的地址或标识符。 使用图4的操作,端口被配置成在每一新的端口中包含最大个数的PHY,其中每一 新端口中的PHY将连接至所连接的适配器中具有相同SAS地址的PHY。此外,如果初始端口 配置中的PHY没有连接至具有相同PHY地址的PHY,则使用新的SAS地址配置该新端口来提 供新端口 ,使得分配给该新端口的PHY连接到所连接的适配器中具有相同SAS地址的PHY。 此外,当对端口的重新配置之后,再次执行标识序列来使用新端口配置执行配置。
图5a示出一个实施例,其中设备180中的PHY被配置成具有一个SAS地址"x",它 们连接至三个不同的设备182、 184和186中的PHY,这三个设备各自具有不同的SAS地址 "A"、"B"和"C"。在具有图5a的配置的设备内执行图4的操作,得到图5b中所示的配置, 其中适配器180被配置成使用三个SAS地址XA、XB和XC来与设备182、 184和186中的PHY 通信。SAS地址XA、 XB和XC中的每一个可包括不同端口的地址。 图6示出了执行标识序列和建立端口配置的操作的替换实施例。图6包括众多图 4中的相同操作,除了以下例外。当确定(框212处)所连接的PHY没有对端口 j返回相 同的地址,则替代图4中进行的使用不同的SAS地址配置新端口,在框218处,对每一接收 到的唯一的目标SAS地址k,在设备180中形成具有唯一域标识符的不同的域。然后使用 SAS地址和新配置的域标识符两者来内部地标识每一 PHY。当域指定完成后,例如IOO(图 3)的设备不再次执行标识序列,而是改为使用域标识符和SAS地址来区分连接至不同设备 的具有相同地址的PHY。然而,外部设备182、 184、 186可使用相同的SAS地址来对本地PHY 定址。 图7示出了在具有图5a中所示的配置的设备中执行图6的操作得到的实施例,其 中例如100的设备被配置成对连接至不同设备252、254和256的PHY使用相同的SAS地址"X",但其中连接至不同地址的PHY在不同的域A、B、C中配置。因此,设备250使用域标识 符和SAS地址的组合来区分其本地PHY。使用图6的实施例,因为不存在默认端口配置的 替换,因此不像图4中172处所执行的第二标识序列那样,将不执行第二标识序列。改为使 用相同的地址"X"。因此,远程设备182、 184、 186 (图7)使用相同的SAS地址来对设备180 中的不同PHY定址,且设备180使用域地址A、 B、 C结合端口 SAS地址"X"来区分本地PHY 设备。 所述实施例提供了用于当接口从所附连的PHY接收到不同SAS地址时向端口分配 PHY或接口的技术。图6的实施例最小化了本地与远程PHY之间的通信和协调,因为对从所 附连的设备接收到不同地址的接口使用了初始地址配置,而该设备通过向不同的域分配接 口来内部地区分连接至不同地址的接口。 在某些实施例中,执行配置来形成具有最大可能带宽,即最大个数PHY/连接的端 口。对端口中PHY个数的最大化则最大化了端口的吞吐量。此外,最大化PHY则最大化了 负载平衡的可能性。再者,最大化端口处PHY和连接的个数则增加了至端口的替换路径的 个数,这最小化了 1/0时延。更进一步,最大化端口处PHY的个数则提供了冗余连接来允许 万一一个或多个PHY失败时的继续操作。
其它实施例细节 所述实施例可被实现为使用程序设计和/或工程技术来生产软件、固件、硬件或 其任意组合的方法、装置或制品。如此处使用的术语"制品"和"电路"指的是状态机、以 硬件逻辑(例如,集成电路芯片、可编程门阵列(PGA)、专用集成电路(ASIC)等)实现的代 码或逻辑、或计算机可读介质,诸如磁存储介质(例如,硬盘驱动器、软盘、磁带等)、光存储 (CD-ROM、光盘等)、易失性和非易失性存储器设备(例如,EEPROM、 R0M、 PR0M、 RAM、 DRAM、 SRAM、固件、可编程逻辑等)。计算机可读介质中的代码由处理器访问和执行。当代码或逻 辑由处理器执行时,电路可包括包含该代码或逻辑的介质以及执行从该介质加载的代码的 处理器。其中实现较佳实施例的代码还可经由传输介质或通过网络从文件服务器访问。在 这样的情况中,其中实现代码的制品可包括传输介质,诸如网络传输线、无线传输介质、经 由空间的信号传播、无线电波、红外信号等。因此,"制品"可包括其中具体化代码的介质。 另外,"制品"可包括其中具体化、处理和执行代码的硬件和软件的组合。当然,本领域中的 技术人员可以认识到,可对该配置进行各种修改,而制品可包括本领域中已知的任何信息 携带介质。另外,该设备、适配器等能以适配器或主板上的一个或多个集成电路来实现。
在所述实施例中,物理接口由PHY来表示,从而提供物理连接与适配器内其它层 之间的接口。在其它实施例中,表示物理连接的接口可使用除PHY以外的构造来实现。
所述实施例使用SAS架构。在替换实施例中,用于将物理连接分配给端口的所述 技术可应用于其它存储接口 。 在所述实施例中,参考设备/适配器架构内的各层描述了某些操作。在替换实施 例中,描述为由某一层执行的功能可在另一层中执行。 在所述实施例中,发送是从远程设备经由连接在设备处接收的。在替换实施例中, 由传输协议层或设备驱动程序处理的所发送和接收的信息可从在设备驱动程序和传输协 议驱动器在其中执行的同一计算机中执行的单独的进程接收。 在某些实施例中,设备驱动程序和网络适配器实施例可包含在计算机系统中,该
8计算机系统包含存储控制器,诸如SCSI、独立磁盘冗余阵列(RAID)等控制器,它们管理对
诸如磁盘驱动器、磁带介质、光盘等的非易失性存储设备的访问。在替换实现中,网络适配
器实施例可包含在不包含存储控制器的系统中,诸如某些集线器和交换机。 在所述实施例中,由适配器支持的存储接口包括SATA和SAS。在其它实施例中,可
支持其它存储接口 。另外,适配器被描述为支持某些传输协议,例如SSP、STP和SMP。在其
它实现中,适配器可支持用于使用所支持的存储接口来发送的其它传输协议。所支持的存
储接口可按照相同的链路速度或不同的非重叠的链路速度发送数据。此外,当不同的所支
持的存储互连架构使用不同的物理配置时,物理接口可具有不同的物理配置,即,管脚和其
它物理内部连线的排列和数量。 图4和6中所示的操作示出了以某一顺序发生的某些事件。在替换实施例中,某 些操作能以不同的顺序执行,修改或移除。而且,可对上述操作添加操作,而仍旧遵循所述 实施例。此外,此处所述的操作可顺序发生,或某些操作可并行处理。再者,操作可由单个 处理单元或由分布式处理单元执行。 适配器12a、12b能以网络卡,诸如外围部件互连(PCI)卡或某些其它的I/0卡来 实现,或在安装在系统主板或底板上的集成电路组件上实现。 已经为说明和描述起见而呈现了对各个实施例的前述描述。考虑到以上教导,各 种修改和变化是可能的。
权利要求
一种方法,包括将相同的初始本地串行附连小型计算机系统接口(SAS)地址分配给本地设备中的所有本地SAS PHY;为所述本地SAS PHY中的一些,接收被分配给与所述本地SAS PHY相连接的远程设备中的远程SAS PHY的远程SAS地址;通过将相同的本地SAS地址分配给从所述远程SAS PHY接收相同远程SAS地址的本地PHY,基于接收到的远程SAS地址,配置所述本地设备中的本地端口的宽度。
2. 如权利要求1所述的方法,其特征在于,从四个远程sas phy接收所述相同的远程 sas地址,以形成包含四个sas phy的sas宽端口 。
3. 如权利要求1所述的方法,其特征在于,从所有远程sas phy接收所述相同的远程 sas地址,以形成具有最大可能宽度的sas宽端口 。
4. 如权利要求1所述的方法,其特征在于,从所述多个远程sas phy中的一个接收相同 的远程sas地址,以形成一 sas窄端口 。
5. 如权利要求1所述的方法,其特征在于,所述本地设备是主机适配器。
6. 如权利要求1所述的方法,其特征在于,所述远程设备是存储设备。
7. 如权利要求1所述的方法,其特征在于,所述接收到的远程sas地址是作为标识序列 的一部分被接收的,还包括将所述初始本地sas地址发送到与所述本地sas phy相连接的远程sasphy。
8. 如权利要求7所述的方法,其特征在于,所述被分配给所述本地sas phy的、包括至 少一个生成的标识符的初始sas地址包括本地sas地址,还包括响应于生成所述本地sas地址,启动一附加标识序列;以及响应于所述附加标识序列,将标识所述本地sas phy的本地sas地址发送给相连的远程sas ray。
9. 一种装置,包括一本地设备中的多个本地串行附连小型计算机系统接口 (sas)phy,用以与至少一个远 程设备上的多个远程sas phy进行通信;以及 能引起操作的电路,所述操作包括将相同的初始本地串行附连小型计算机系统接口 (sas)地址分配给本地设备中的所有本地sas ray;为所述本地sas phy中的一些,接收被分配给与所述本地sas phy相连接的远程设备 中的远程sas phy的远程sas地址;以及通过将相同的本地sas地址分配给从所述远程sas phy接收相同远程sas地址的本地 phy,基于接收到的远程sas地址,配置所述本地设备中的本地端口的宽度。
10. 如权利要求9所述的装置,其特征在于,从四个远程sas phy接收所述相同的远程 sas地址,以形成包含四个sas phy的sas宽端口 。
11. 如权利要求9所述的装置,其特征在于,从所有远程sas phy接收所述相同的远程 sas地址,以形成具有最大可能宽度的sas宽端口 。
12. 如权利要求9所述的装置,其特征在于,从所述多个远程sas phy中的一个接收相 同的远程sas地址,以形成一 sas窄端口 。
13. 如权利要求9所述的装置,其特征在于,所述本地设备是主机适配器。
14. 如权利要求9所述的装置,其特征在于,所述远程设备是扩展器。
15. 如权利要求9所述的装置,其特征在于,所述远程设备是存储设备。
16. 如权利要求9所述的装置,其特征在于,所述接收到的远程sas地址是作为标识序 列的一部分被接收的,还包括将所述初始本地sas地址发送到与所述本地sas phy相连接的远程sasphy。
17. 如权利要求16所述的装置,其特征在于,所述被分配给所述本地sas phy的、包括 至少一个生成的标识符的初始sas地址包括本地sas地址,还包括响应于生成所述本地sas地址,启动一附加标识序列;以及响应于所述附加标识序列,将标识所述本地sas phy的本地sas地址发送给相连的远程sas ray。
18. —种包括具有相关联信息的计算机可读存储介质的制品,其中所述信息在被访问 时使得一机器执行将相同的初始本地串行附连小型计算机系统接口 (sas)地址分配给本地设备中的所有本地sas ray ;为所述本地sas phy中的一些,接收被分配给与所述本地sas phy相连接的远程设备 中的远程sas phy的远程sas地址;以及通过将相同的本地sas地址分配给从所述远程sas phy接收相同远程sas地址的本地 phy,基于接收到的远程sas地址,配置所述本地设备中的本地端口的宽度。
19. 如权利要求18所述的制品,其特征在于,所述接收到的远程sas地址是作为标识序 列的一部分被接收的,还包括将所述初始本地sas地址发送到与所述本地sas phy相连接的远程sasphy。
20. 如权利要求19所述的制品,其特征在于,所述被分配给所述本地sas phy的、包括 至少一个生成的标识符的初始sas地址包括本地sas地址,还包括响应于生成所述本地sas地址,启动一附加标识序列;以及响应于所述附加标识序列,将标识所述本地sas phy的本地sas地址发送给相连的远程sas ray。
全文摘要
提供了一种方法、系统和程序。维护将多个本地接口分配给一个初始本地地址的初始配置。对每一本地接口,接收到本地接口所连接的至少一个远程设备上的远程接口的远程地址。响应于对连接至分配了初始本地地址的本地接口的每一远程接口接收相同的的远程地址,使用初始本地地址来标识分配给初始本地地址的本地接口。
文档编号H04L29/06GK101788971SQ200910266849
公开日2010年7月28日 申请日期2004年12月1日 优先权日2003年12月18日
发明者P·瑟托 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1