WO2017019006A1 - Component compatibility verification - Google Patents

Component compatibility verification Download PDF

Info

Publication number
WO2017019006A1
WO2017019006A1 PCT/US2015/042188 US2015042188W WO2017019006A1 WO 2017019006 A1 WO2017019006 A1 WO 2017019006A1 US 2015042188 W US2015042188 W US 2015042188W WO 2017019006 A1 WO2017019006 A1 WO 2017019006A1
Authority
WO
WIPO (PCT)
Prior art keywords
component
compatibility data
compatibility
version
compatible
Prior art date
Application number
PCT/US2015/042188
Other languages
French (fr)
Inventor
Matthew Gates
Original Assignee
Hewlett Packard Enterprise Development Lp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hewlett Packard Enterprise Development Lp filed Critical Hewlett Packard Enterprise Development Lp
Priority to PCT/US2015/042188 priority Critical patent/WO2017019006A1/en
Publication of WO2017019006A1 publication Critical patent/WO2017019006A1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44589Program code verification, e.g. Java bytecode verification, proof-carrying code

Definitions

  • Software components may provide different features and/or functionality to a complex operation. By using separate components, each may focus on a specialization and be maintained and updated separately rather than using a single, overly complex controller component to handle all aspects of an operation.
  • FIG. 1 is a block diagram of an example compatibility verification device
  • FIG. 2 is a flowchart of an example of a method for providing compatibility verifications.
  • FIG. 3 is a block diagram of an example system for providing compatibility verifications.
  • a server may operate a controller, comprising a software stack of individual components.
  • a software stack may comprise, for example, a Redundant Array of Independent Disks (RAID) component, a cache management component, an encryption component, a third party plugin component, a replication component, a logging component, etc.
  • RAID Redundant Array of Independent Disks
  • the components of the software stack of one controller often communicate with the components of another controller to coordinate operations.
  • a storage server with two controllers may replicate data to be stored to disk(s) managed by each of the controllers. If the components of each controller are incompatible, however, the operation may not be performed successfully.
  • Compatibility such as the ability to share a communication protocol between components, may be determined by sharing elements of compatibility data among respective components of each software stack to verify that the versions of each component can understand each other.
  • the elements of compatibility data may also be shared across the components of the software stack in case a component of one type (e.g., a RAID component) needs to communicate with a component of another type (e.g., an encryption component). Controllers with incompatible components may be disabled and/or removed from an operation's communications to help avoid errors.
  • FIG. 1 is a block diagram of an example compatibility verification device 100 consistent with disclosed implementations.
  • Compatibility verification device 100 may comprise a processor 1 10 and a non- transitory machine-readable storage medium 120.
  • Compatibility verification device 100 may comprise a computing device such as a server computer, a desktop computer, a laptop computer, a handheld computing device, a smart phone, a tablet computing device, a mobile phone, a network device (e.g., a switch and/or router), or the like.
  • Processor 1 10 may comprise a central processing unit (CPU), a semiconductor-based microprocessor, a programmable component such as a complex programmable logic device (CPLD) and/or field-programmable gate array (FPGA), or any other hardware device suitable for retrieval and execution of instructions stored in machine-readable storage medium 120.
  • processor 1 10 may fetch, decode, and execute a plurality of provide compatibility data instructions 130, receive compatibility data instructions 132, determine compatibility data verification instructions 134, and enable operational communication instructions 136 to implement the functionality described in detail below.
  • Executable instructions may comprise logic stored in any portion and/or component of machine-readable storage medium 120 and executable by processor 1 10.
  • the machine-readable storage medium 120 may comprise both volatile and/or nonvolatile memory and data storage components. Volatile components are those that do not retain data values upon loss of power. Nonvolatile components are those that retain data upon a loss of power.
  • the machine-readable storage medium 120 may comprise, for example, random access memory (RAM), read-only memory (ROM), hard disk drives, solid- state drives, USB flash drives, memory cards accessed via a memory card reader, floppy disks accessed via an associated floppy disk drive, optical discs accessed via an optical disc drive, magnetic tapes accessed via an appropriate tape drive, and/or other memory components, and/or a combination of any two and/or more of these memory components.
  • the RAM may comprise, for example, static random access memory (SRAM), dynamic random access memory (DRAM), and/or magnetic random access memory (MRAM) and other such devices.
  • the ROM may comprise, for example, a programmable read-only memory (PROM), an erasable programmable read-only memory (EPROM), an electrically erasable programmable read-only memory (EEPROM), and/or other like memory device.
  • PROM programmable read-only memory
  • EPROM erasable programmable read-only memory
  • EEPROM electrically erasable programmable read-only memory
  • Receive compatibility data instructions 132 may receive a first element of compatibility data 140 associated with a first component 145(A).
  • compatibility data 140 may comprise a software version, a list of supported data formats and/or supported protocols, localization settings, tolerance requirements, available resources such usable as communication ports and/or storage space, etc.
  • Determine compatibility data verification instructions 134 may determine whether the first element of compatibility data 140 is verified according to a second component 145(B) and may determine whether a second element of compatibility data (not shown) associated with the second component 145(B) is verified according to the first component 145(A).
  • components 145(A)-(B) may comprise corresponding RAID controllers in a pair of storage controllers' software stacks. The compatibility data for each RAID controller may be examined by the corresponding controller in the other stack to determine if the software version of the other component is compatible.
  • compatibility data 140 may comprise a version of component 145(A) and the instructions 134 to determine whether the first element of compatibility data 140 is verified according to the second component 145(B) may comprise determining whether the version associated with the first component 145(A) comprises a later version than a version associated with the second component 145(B). Such a determination may rely, for example, on a version number, a date stamp of the component, a text string, and/or other data elements.
  • Compatibility may be restricted by a communication protocol format, the presence of required resources such as sufficient memory, and/or security requirements such as access to a particular encryption/decryption key and/or supporting a certain level of encryption on exchanged data.
  • Receive compatibility data instructions 132 may provide for the exchange of compatibility data 140 directly between the components 145(A)-(B) and/or compatibility data may be collected from a plurality of components associated with each controller and provided in bulk to the other controller(s) to distribute among their respective components.
  • a determination of compatibility may be deferred to the later version among the components 145(A)-(B). For example, if second component 145(B) comprises a version number of 2.1 and first component 145(A) comprises a version number of 2.0, the compatibility determination of second component 145(B) may overrule a verification of compatibility with first component 145(A).
  • determine compatibility data verification instructions 134 may determine whether a new version of the second component has been installed. In response to determining that the new version of the second component has been installed, the element of compatibility data associated with the second component may be provided to the first component to determine whether the new version of the second component may be verified as compatible with the first component.
  • Enable operational communication instructions 136 may, in response to determining that the first element of compatibility data 140 is verified according to the second component 145(B) and that the second element of compatibility data is verified according to the first component 145(A), enable operational communication between the first component 145(A) and the second component 145(B). In response to determining that the first element of compatibility data 140 is not verified according to the second component 145(B), enable operational communication instructions 136 may disable operational communication between the first component 145(A) and the second component 145(B). When operational communication between the components 145(A)-(B) is enabled, the two controllers associated with components 145(A)-(B) may communicate and cooperate to complete operations.
  • two storage controllers may perform cooperative data replication and/or de-duplication operations.
  • operational communication between the components 145(A)-(B) is disabled, the two controllers associated with components 145(A)-(B) may be prevented from communication in the performance of such operations, and the operation may be performed by a single controller and/or only those controllers whose components have been verified as compatible.
  • FIG. 2 is a flowchart of an example method 200 for compatibility verification consistent with disclosed implementations. Although execution of method 200 is described below with reference to the components of compatibility verification device 100, other suitable components for execution of method 200 may be used.
  • Method 200 may begin in block 205 and proceed to block 210 where device 100 may exchange a plurality of compatibility data between a first component and a second component.
  • the first component and the second component may comprise respective software components of a first software stack and a second software stack, such as corresponding RAID components of two storage controller's stacks.
  • receive compatibility data instructions 132 may receive a first element of compatibility data 140 associated with a first component 145(A) and/or a second element of compatibility data associated with a second component 145(B).
  • compatibility data 140 may comprise a software version, a list of supported data formats and/or supported protocols, localization settings, tolerance requirements, available resources such usable as communication ports and/or storage space, etc.
  • Method 200 may then advance to block 215 where device 100 may determine whether the first component and the second component are compatible according to the exchanged plurality of compatibility data.
  • determine compatibility data verification instructions 134 may determine whether the first element of compatibility data 140 is verified according to a second component 145(B) and may determine whether a second element of compatibility data (not shown) associated with the second component 145(B) is verified according to the first component 145(A).
  • components 145(A)-(B) may comprise corresponding RAID controllers in a pair of storage controllers' software stacks. The compatibility data for each RAID controller may be examined by the corresponding controller in the other stack to determine if the software version of the other component is compatible.
  • compatibility data 140 may comprise a version of component 145(A) and the instructions 134 to determine whether the first element of compatibility data 140 is verified according to the second component 145(B) may comprise determining whether the version associated with the first component 145(A) comprises a later version than a version associated with the second component 145(B). Such a determination may rely, for example, on a version number, a date stamp of the component, a text string, and/or other data elements.
  • Compatibility may be restricted by a communication protocol format, the presence of required resources such as sufficient memory, and/or security requirements such as access to a particular encryption/decryption key and/or supporting a certain level of encryption on exchanged data.
  • Receive compatibility data instructions 132 may provide for the exchange of compatibility data 140 directly between the components 145(A)-(B) and/or compatibility data may be collected from a plurality of components associated with each controller and provided in bulk to the other controller(s) to distribute among their respective components.
  • a determination of compatibility may be deferred to the later version among the components 145(A)-(B). For example, if second component 145(B) comprises a version number of 2.1 and first component 145(A) comprises a version number of 2.0, the compatibility determination of second component 145(B) may overrule a verification of compatibility with first component 145(A).
  • determine compatibility data verification instructions 134 may determine whether a new version of the second component has been installed. In response to determining that the new version of the second component has been installed, the element of compatibility data associated with the second component may be provided to the first component to determine whether the new version of the second component may be verified as compatible with the first component.
  • a further determination may be made by device 100 at block 215 as to whether at least one third component associated with the first software stack is compatible with the second component according to the exchanged plurality of compatibility data.
  • component 245(A) may comprise a RAID component and may further determine whether compatibility data from a corresponding component of another controller is also compatible with a cache component of the controller for component 245(A).
  • determining whether the first component and the second component are compatible may comprise determining whether the first component and the second component comprise a compatible communication protocol.
  • software components may define a specific message format to exchange data with each other. New versions of the format may include additional fields and/or properties that may not be understood by older versions of the component.
  • newer versions of the component may modify the communication protocol between the first component and the second component to be compatible with the older version, such as by reverting to an older version of the messaging format and/or stripping out unknown fields.
  • method 200 may advance to block 220 where device 100 may disable communication with the second component, wherein the second component comprises an older version of the first component.
  • enable operational communication instructions 136 may disable operational communication between the first component 145(A) and the second component 145(B).
  • the two controllers associated with components 145(A)-(B) may be prevented from communication in the performance of such operations, and the operation may be performed by a single controller and/or only those controllers whose components have been verified as compatible.
  • device 100 may upgrade the second component to a compatible version with the first component.
  • the version of the component from a first controller may be copied to and installed on the second controller.
  • an update server may be contacted to download a new version of the second component.
  • method 200 may advance to block 226 where device 100 may enable communication between the first component and the second component.
  • enable operational communication instructions 136 may, in response to determining that the first element of compatibility data 140 is verified according to the second component 145(B) and that the second element of compatibility data is verified according to the first component 145(A), enable operational communication between the first component 145(A) and the second component 145(B).
  • the two controllers associated with components 145(A)-(B) may communicate and cooperate to complete operations.
  • two storage controllers may perform cooperative data replication and/or de-duplication operations.
  • Method 200 may then end at block 250.
  • FIG. 3 is a block diagram of an example system 300 for providing compatibility verification.
  • System 300 may comprise a computing device 310 comprising a first controller engine 315 that may comprise a software stack of a first plurality of components 320(A)-(C) and a second controller engine 325 that may comprise a software stack of a second plurality of components 330(A)-(C).
  • Device 310 may further comprise a compatibility engine 340. Although only one device 310 is pictured in system 300, other devices and/or other controller engines may be present and/or in communication with device 310 and controller engines 315, 325.
  • Computing device 310 may comprise, for example, a general and/or special purpose computer, server, mainframe, desktop, laptop, tablet, smart phone, game console, and/or any other system capable of providing computing capability consistent with providing the implementations described herein.
  • Computing device 410 may comprise any combination of hardware and programming to implement the functionalities of the respective components. In examples described herein, such combinations of hardware and programming may be implemented in a number of different ways. For example, programming may comprise processor executable instructions stored on a non-transitory machine-readable storage medium and the hardware for the engines may include a processing resource to execute those instructions.
  • Controller engine 315 may provide a first plurality of compatibility data associated with a first set of software components 320(A)-(C) to a second controller engine and receive a second plurality of compatibility data associated with a second set of software components 330(A)-(C) from the second controller engine.
  • the compatibility data may be exchanged directly between respective components, aggregated and exchanged between controller engines 315, 325 and/or via compatibility engine 340.
  • Compatibility engine 340 may provide the received second plurality of compatibility data to each of the first set of software components.
  • controller engine 325 may provide the compatibility data associated with components 330(A)-(C) to compatibility engine 340.
  • Compatibility engine 340 may then distribute this compatibility data to controller engine 315, to a respective component of components 320(A)-(C), and/or to each of components 320(A)-(C).
  • compatibility data for a RAID component of controller engine 325 e.g., component 330(A)
  • Compatibility engine 340 may determine whether each of the first set of software components 320(A)-(C) comprises a compatible communication protocol with the second set of software components 330(A)-(C). In response to determining that at least one of the first set of software components does not comprise a compatible communication protocol with the second set of software components, compatibility engine 340 may determine whether a modified communication protocol is available, and in response to determining that a modified communication protocol is not available, disable communication between the first controller engine 315 and the second controller engine 325.
  • compatibility engine 340 may identify which of the first controller engine 315 and the second controller engine 325 comprises an older version of the at least one of the first set of software components 320(A)-(C) that does not comprise the compatible communication protocol with the second set of software components 325(A)-(C).
  • the controller engine comprising the older version may be the one disabled from communication by compatibility engine 340.
  • the disclosed examples may include systems, devices, computer- readable storage media, and methods for compatibility verification. For purposes of explanation, certain examples are described with reference to the components illustrated in the Figures.
  • the functionality of the illustrated components may overlap, however, and may be present in a fewer or greater number of elements and components. Further, all or part of the functionality of illustrated elements may coexist or be distributed among several geographically dispersed locations. Moreover, the disclosed examples may be implemented in various environments and are not limited to the illustrated examples.

Abstract

Examples disclosed herein relate to compatibility verification instructions to receive a first element of compatibility data associated with a first component, determine whether the first element of compatibility data is verified according to a second component, determine whether a second element of compatibility data associated with a second component is verified according to the first component, and in response to determining that the first element of compatibility data is verified according to the second component and that the second element of compatibility data is verified according to the first component, enable operational communication between the first component and the second component.

Description

COMPONENT COMPATIBILITY VERIFICATION
BACKGROUND
[0001 ] Software components may provide different features and/or functionality to a complex operation. By using separate components, each may focus on a specialization and be maintained and updated separately rather than using a single, overly complex controller component to handle all aspects of an operation.
BRIEF DESCRIPTION OF THE DRAWINGS
[0002] In the accompanying drawings, like numerals refer to like components or blocks. The following detailed description references the drawings, wherein:
[0003] FIG. 1 is a block diagram of an example compatibility verification device;
[0004] FIG. 2 is a flowchart of an example of a method for providing compatibility verifications; and
[0005] FIG. 3 is a block diagram of an example system for providing compatibility verifications.
DETAILED DESCRIPTION
[0006] As described above, different software components may provide different functionalities to a complex operation. For example, a server may operate a controller, comprising a software stack of individual components. For a data storage controller, such a software stack may comprise, for example, a Redundant Array of Independent Disks (RAID) component, a cache management component, an encryption component, a third party plugin component, a replication component, a logging component, etc.
[0007] In multi-controller environments, the components of the software stack of one controller often communicate with the components of another controller to coordinate operations. For example, a storage server with two controllers may replicate data to be stored to disk(s) managed by each of the controllers. If the components of each controller are incompatible, however, the operation may not be performed successfully. Compatibility, such as the ability to share a communication protocol between components, may be determined by sharing elements of compatibility data among respective components of each software stack to verify that the versions of each component can understand each other. The elements of compatibility data may also be shared across the components of the software stack in case a component of one type (e.g., a RAID component) needs to communicate with a component of another type (e.g., an encryption component). Controllers with incompatible components may be disabled and/or removed from an operation's communications to help avoid errors.
[0008] Referring now to the drawings, FIG. 1 is a block diagram of an example compatibility verification device 100 consistent with disclosed implementations. Compatibility verification device 100 may comprise a processor 1 10 and a non- transitory machine-readable storage medium 120. Compatibility verification device 100 may comprise a computing device such as a server computer, a desktop computer, a laptop computer, a handheld computing device, a smart phone, a tablet computing device, a mobile phone, a network device (e.g., a switch and/or router), or the like.
[0009] Processor 1 10 may comprise a central processing unit (CPU), a semiconductor-based microprocessor, a programmable component such as a complex programmable logic device (CPLD) and/or field-programmable gate array (FPGA), or any other hardware device suitable for retrieval and execution of instructions stored in machine-readable storage medium 120. In particular, processor 1 10 may fetch, decode, and execute a plurality of provide compatibility data instructions 130, receive compatibility data instructions 132, determine compatibility data verification instructions 134, and enable operational communication instructions 136 to implement the functionality described in detail below. [0010] Executable instructions may comprise logic stored in any portion and/or component of machine-readable storage medium 120 and executable by processor 1 10. The machine-readable storage medium 120 may comprise both volatile and/or nonvolatile memory and data storage components. Volatile components are those that do not retain data values upon loss of power. Nonvolatile components are those that retain data upon a loss of power.
[001 1] The machine-readable storage medium 120 may comprise, for example, random access memory (RAM), read-only memory (ROM), hard disk drives, solid- state drives, USB flash drives, memory cards accessed via a memory card reader, floppy disks accessed via an associated floppy disk drive, optical discs accessed via an optical disc drive, magnetic tapes accessed via an appropriate tape drive, and/or other memory components, and/or a combination of any two and/or more of these memory components. In addition, the RAM may comprise, for example, static random access memory (SRAM), dynamic random access memory (DRAM), and/or magnetic random access memory (MRAM) and other such devices. The ROM may comprise, for example, a programmable read-only memory (PROM), an erasable programmable read-only memory (EPROM), an electrically erasable programmable read-only memory (EEPROM), and/or other like memory device.
[0012] Receive compatibility data instructions 132 may receive a first element of compatibility data 140 associated with a first component 145(A). For example, compatibility data 140 may comprise a software version, a list of supported data formats and/or supported protocols, localization settings, tolerance requirements, available resources such usable as communication ports and/or storage space, etc.
[0013] Determine compatibility data verification instructions 134 may determine whether the first element of compatibility data 140 is verified according to a second component 145(B) and may determine whether a second element of compatibility data (not shown) associated with the second component 145(B) is verified according to the first component 145(A). For example, components 145(A)-(B) may comprise corresponding RAID controllers in a pair of storage controllers' software stacks. The compatibility data for each RAID controller may be examined by the corresponding controller in the other stack to determine if the software version of the other component is compatible. In some implementations, for example, compatibility data 140 may comprise a version of component 145(A) and the instructions 134 to determine whether the first element of compatibility data 140 is verified according to the second component 145(B) may comprise determining whether the version associated with the first component 145(A) comprises a later version than a version associated with the second component 145(B). Such a determination may rely, for example, on a version number, a date stamp of the component, a text string, and/or other data elements.
[0014] Compatibility may be restricted by a communication protocol format, the presence of required resources such as sufficient memory, and/or security requirements such as access to a particular encryption/decryption key and/or supporting a certain level of encryption on exchanged data. Receive compatibility data instructions 132 may provide for the exchange of compatibility data 140 directly between the components 145(A)-(B) and/or compatibility data may be collected from a plurality of components associated with each controller and provided in bulk to the other controller(s) to distribute among their respective components.
[0015] In some implementations, a determination of compatibility may be deferred to the later version among the components 145(A)-(B). For example, if second component 145(B) comprises a version number of 2.1 and first component 145(A) comprises a version number of 2.0, the compatibility determination of second component 145(B) may overrule a verification of compatibility with first component 145(A).
[0016] In some implementations, determine compatibility data verification instructions 134 may determine whether a new version of the second component has been installed. In response to determining that the new version of the second component has been installed, the element of compatibility data associated with the second component may be provided to the first component to determine whether the new version of the second component may be verified as compatible with the first component.
[0017] Enable operational communication instructions 136 may, in response to determining that the first element of compatibility data 140 is verified according to the second component 145(B) and that the second element of compatibility data is verified according to the first component 145(A), enable operational communication between the first component 145(A) and the second component 145(B). In response to determining that the first element of compatibility data 140 is not verified according to the second component 145(B), enable operational communication instructions 136 may disable operational communication between the first component 145(A) and the second component 145(B). When operational communication between the components 145(A)-(B) is enabled, the two controllers associated with components 145(A)-(B) may communicate and cooperate to complete operations. For example, two storage controllers may perform cooperative data replication and/or de-duplication operations. When operational communication between the components 145(A)-(B) is disabled, the two controllers associated with components 145(A)-(B) may be prevented from communication in the performance of such operations, and the operation may be performed by a single controller and/or only those controllers whose components have been verified as compatible.
[0018] FIG. 2 is a flowchart of an example method 200 for compatibility verification consistent with disclosed implementations. Although execution of method 200 is described below with reference to the components of compatibility verification device 100, other suitable components for execution of method 200 may be used.
[0019] Method 200 may begin in block 205 and proceed to block 210 where device 100 may exchange a plurality of compatibility data between a first component and a second component. In some implementations, the first component and the second component may comprise respective software components of a first software stack and a second software stack, such as corresponding RAID components of two storage controller's stacks. [0020] For example, receive compatibility data instructions 132 may receive a first element of compatibility data 140 associated with a first component 145(A) and/or a second element of compatibility data associated with a second component 145(B). For example, compatibility data 140 may comprise a software version, a list of supported data formats and/or supported protocols, localization settings, tolerance requirements, available resources such usable as communication ports and/or storage space, etc.
[0021 ] Method 200 may then advance to block 215 where device 100 may determine whether the first component and the second component are compatible according to the exchanged plurality of compatibility data. For example, determine compatibility data verification instructions 134 may determine whether the first element of compatibility data 140 is verified according to a second component 145(B) and may determine whether a second element of compatibility data (not shown) associated with the second component 145(B) is verified according to the first component 145(A). For example, components 145(A)-(B) may comprise corresponding RAID controllers in a pair of storage controllers' software stacks. The compatibility data for each RAID controller may be examined by the corresponding controller in the other stack to determine if the software version of the other component is compatible. In some implementations, for example, compatibility data 140 may comprise a version of component 145(A) and the instructions 134 to determine whether the first element of compatibility data 140 is verified according to the second component 145(B) may comprise determining whether the version associated with the first component 145(A) comprises a later version than a version associated with the second component 145(B). Such a determination may rely, for example, on a version number, a date stamp of the component, a text string, and/or other data elements.
[0022] Compatibility may be restricted by a communication protocol format, the presence of required resources such as sufficient memory, and/or security requirements such as access to a particular encryption/decryption key and/or supporting a certain level of encryption on exchanged data. Receive compatibility data instructions 132 may provide for the exchange of compatibility data 140 directly between the components 145(A)-(B) and/or compatibility data may be collected from a plurality of components associated with each controller and provided in bulk to the other controller(s) to distribute among their respective components.
[0023] In some implementations, a determination of compatibility may be deferred to the later version among the components 145(A)-(B). For example, if second component 145(B) comprises a version number of 2.1 and first component 145(A) comprises a version number of 2.0, the compatibility determination of second component 145(B) may overrule a verification of compatibility with first component 145(A).
[0024] In some implementations, determine compatibility data verification instructions 134 may determine whether a new version of the second component has been installed. In response to determining that the new version of the second component has been installed, the element of compatibility data associated with the second component may be provided to the first component to determine whether the new version of the second component may be verified as compatible with the first component.
[0025] In some implementations, a further determination may be made by device 100 at block 215 as to whether at least one third component associated with the first software stack is compatible with the second component according to the exchanged plurality of compatibility data. For example, component 245(A) may comprise a RAID component and may further determine whether compatibility data from a corresponding component of another controller is also compatible with a cache component of the controller for component 245(A).
[0026] In some implementations, determining whether the first component and the second component are compatible may comprise determining whether the first component and the second component comprise a compatible communication protocol. For example, software components may define a specific message format to exchange data with each other. New versions of the format may include additional fields and/or properties that may not be understood by older versions of the component. In some implementations, newer versions of the component may modify the communication protocol between the first component and the second component to be compatible with the older version, such as by reverting to an older version of the messaging format and/or stripping out unknown fields.
[0027] In response to determining that the first component and the second component are not compatible, method 200 may advance to block 220 where device 100 may disable communication with the second component, wherein the second component comprises an older version of the first component. For example, in response to determining that the first element of compatibility data 140 is not verified according to the second component 145(B), enable operational communication instructions 136 may disable operational communication between the first component 145(A) and the second component 145(B). When operational communication between the components 145(A)-(B) is disabled, the two controllers associated with components 145(A)-(B) may be prevented from communication in the performance of such operations, and the operation may be performed by a single controller and/or only those controllers whose components have been verified as compatible. In some implementations, in response to determining that the first component and the second component are not compatible, device 100 may upgrade the second component to a compatible version with the first component. For example, the version of the component from a first controller may be copied to and installed on the second controller. For another example, an update server may be contacted to download a new version of the second component.
[0028] In response to determining that the first component and the second component are compatible, method 200 may advance to block 226 where device 100 may enable communication between the first component and the second component. For example, enable operational communication instructions 136 may, in response to determining that the first element of compatibility data 140 is verified according to the second component 145(B) and that the second element of compatibility data is verified according to the first component 145(A), enable operational communication between the first component 145(A) and the second component 145(B). When operational communication between the components 145(A)-(B) is enabled, the two controllers associated with components 145(A)-(B) may communicate and cooperate to complete operations. For example, two storage controllers may perform cooperative data replication and/or de-duplication operations.
[0029] Method 200 may then end at block 250.
[0030] FIG. 3 is a block diagram of an example system 300 for providing compatibility verification. System 300 may comprise a computing device 310 comprising a first controller engine 315 that may comprise a software stack of a first plurality of components 320(A)-(C) and a second controller engine 325 that may comprise a software stack of a second plurality of components 330(A)-(C). Device 310 may further comprise a compatibility engine 340. Although only one device 310 is pictured in system 300, other devices and/or other controller engines may be present and/or in communication with device 310 and controller engines 315, 325.
[0031] Computing device 310 may comprise, for example, a general and/or special purpose computer, server, mainframe, desktop, laptop, tablet, smart phone, game console, and/or any other system capable of providing computing capability consistent with providing the implementations described herein. Computing device 410 may comprise any combination of hardware and programming to implement the functionalities of the respective components. In examples described herein, such combinations of hardware and programming may be implemented in a number of different ways. For example, programming may comprise processor executable instructions stored on a non-transitory machine-readable storage medium and the hardware for the engines may include a processing resource to execute those instructions.
[0032] Controller engine 315 may provide a first plurality of compatibility data associated with a first set of software components 320(A)-(C) to a second controller engine and receive a second plurality of compatibility data associated with a second set of software components 330(A)-(C) from the second controller engine. The compatibility data may be exchanged directly between respective components, aggregated and exchanged between controller engines 315, 325 and/or via compatibility engine 340.
[0033] Compatibility engine 340 may provide the received second plurality of compatibility data to each of the first set of software components. For example, controller engine 325 may provide the compatibility data associated with components 330(A)-(C) to compatibility engine 340. Compatibility engine 340 may then distribute this compatibility data to controller engine 315, to a respective component of components 320(A)-(C), and/or to each of components 320(A)-(C). Thus, in some implementations, compatibility data for a RAID component of controller engine 325 (e.g., component 330(A)) may be provided to the RAID component of controller engine 315 (e.g., component 320(A)).
[0034] Compatibility engine 340 may determine whether each of the first set of software components 320(A)-(C) comprises a compatible communication protocol with the second set of software components 330(A)-(C). In response to determining that at least one of the first set of software components does not comprise a compatible communication protocol with the second set of software components, compatibility engine 340 may determine whether a modified communication protocol is available, and in response to determining that a modified communication protocol is not available, disable communication between the first controller engine 315 and the second controller engine 325.
[0035] In some implementations, in order to disable communication between the first controller engine and the second controller engine, compatibility engine 340 may identify which of the first controller engine 315 and the second controller engine 325 comprises an older version of the at least one of the first set of software components 320(A)-(C) that does not comprise the compatible communication protocol with the second set of software components 325(A)-(C). The controller engine comprising the older version may be the one disabled from communication by compatibility engine 340. [0036] The disclosed examples may include systems, devices, computer- readable storage media, and methods for compatibility verification. For purposes of explanation, certain examples are described with reference to the components illustrated in the Figures. The functionality of the illustrated components may overlap, however, and may be present in a fewer or greater number of elements and components. Further, all or part of the functionality of illustrated elements may coexist or be distributed among several geographically dispersed locations. Moreover, the disclosed examples may be implemented in various environments and are not limited to the illustrated examples.
[0037] Moreover, as used in the specification and the appended claims, the singular forms "a," "an," and "the" are intended to include the plural forms as well, unless the context indicates otherwise. Additionally, although the terms first, second, etc. may be used herein to describe various elements, these elements should not be limited by these terms. Instead, these terms are only used to distinguish one element from another.
[0038] Further, the sequence of operations described in connection with the Figures are examples and are not intended to be limiting. Additional or fewer operations or combinations of operations may be used or may vary without departing from the scope of the disclosed examples. Thus, the present disclosure merely sets forth possible examples of implementations, and many variations and modifications may be made to the described examples. All such modifications and variations are intended to be included within the scope of this disclosure and protected by the following claims.

Claims

CLAIMS We claim:
1 . A non-transitory machine-readable storage medium comprising instructions to:
receive a first element of compatibility data associated with a first component;
determine whether the first element of compatibility data is verified according to a second component;
determine whether a second element of compatibility data associated with the second component is verified according to the first component; and
in response to determining that the first element of compatibility data is verified according to the second component and that the second element of compatibility data is verified according to the first component, enable operational communication between the first component and the second component.
2. The non-transitory machine-readable medium of claim 1 , wherein the first element of compatibility data comprises a first component version.
3. The non-transitory machine-readable medium of claim 2, wherein the instructions to determine whether the first element of compatibility data is verified according to the second component comprises determining whether the first component version comprises a later version than a second component version.
4. The non-transitory machine-readable medium of claim 3, wherein the instructions, in response to determining that the first component version comprises a later version than a second component version, further comprise instructions to defer to the determination of whether the second element of compatibility data is verified according to the first component.
5. The non-transitory machine-readable medium of claim 1 , wherein the instructions, in response to determining that the first element of compatibility data is not verified according to the second component, further comprise instructions to disable operational communication between the first component and the second component.
6. The non-transitory machine-readable medium of claim 5, wherein the instructions to receive the second element of compatibility data associated with the second component further comprise instructions to:
determine whether a new version of the second component has been installed; and
in response to determining that the new version of the second component has been installed, provide the second element of compatibility data associated with the new version of the second component to the first component.
7. The non-transitory machine-readable medium of claim 1 , further comprising instructions to:
determine whether the second element of compatibility data associated with the second component is verified according to a third component in communication with the first component.
8. A computer-implemented method, comprising:
exchanging a plurality of compatibility data between a first component and a second component;
determining whether the first component and the second component are compatible according to the exchanged plurality of compatibility data;
in response to determining that the first component and the second component are not compatible, disabling communication with the second component, wherein the second component comprises an older version of the first component;
in response to determining that the first component and the second component are compatible, enabling communication between the first component and the second component.
9. The computer-implemented method of claim 8, wherein the first component and the second component comprise respective software components of a first software stack and a second software stack.
10. The computer-implemented method of claim 9, further comprising determining whether at least one third component associated with the first software stack is compatible with the second component according to the exchanged plurality of compatibility data.
1 1 . The computer-implemented method of claim 8, wherein determining whether the first component and the second component are compatible comprises determining whether the first component and the second component comprise a compatible communication protocol.
12. The computer-implemented method of claim 1 1 , wherein in response to determining that the first component and the second component are not compatible, modifying a communication protocol between the first component and the second component.
13. The computer-implemented method of claim 8, wherein in response to determining that the first component and the second component are not compatible, upgrading the second component to a compatible version with the first component.
14. A system, comprising:
a first controller engine to:
provide a first plurality of compatibility data associated with a first set of software components to a second controller engine, and
receive a second plurality of compatibility data associated with a second set of software components from the second controller engine; and a compatibility engine to:
provide the received second plurality of compatibility data to each of the first set of software components,
determine whether each of the first set of software components comprises a compatible communication protocol with the second set of software components,
in response to determining that at least one of the first set of software components does not comprise a compatible communication protocol with the second set of software components, determine whether a modified communication protocol is available, and
in response to determining that a modified communication protocol is not available, disable communication between the first controller engine and the second controller engine.
15. The system of claim 14, wherein to disable communication between the first controller engine and the second controller engine comprises the compatibility engine to identify which of the first controller engine and the second controller engine comprises an older version of the at least one of the first set of software components that does not comprise the compatible communication protocol with the second set of software components.
PCT/US2015/042188 2015-07-27 2015-07-27 Component compatibility verification WO2017019006A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/US2015/042188 WO2017019006A1 (en) 2015-07-27 2015-07-27 Component compatibility verification

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2015/042188 WO2017019006A1 (en) 2015-07-27 2015-07-27 Component compatibility verification

Publications (1)

Publication Number Publication Date
WO2017019006A1 true WO2017019006A1 (en) 2017-02-02

Family

ID=57885074

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2015/042188 WO2017019006A1 (en) 2015-07-27 2015-07-27 Component compatibility verification

Country Status (1)

Country Link
WO (1) WO2017019006A1 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190265298A1 (en) * 2018-02-23 2019-08-29 Rohde & Schwarz Gmbh & Co. Kg Prediction system as well as method for predicting compatibility
FR3115130A1 (en) * 2020-10-09 2022-04-15 Safran Electronics & Defense Method and system for managing compatibility between two pieces of equipment

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5579509A (en) * 1991-02-08 1996-11-26 International Business Machines Corporation Apparatus and method for verifying compatibility of system components
US20040181790A1 (en) * 2003-03-12 2004-09-16 Herrick Joseph W. System and method for maintaining installed software compliance with build standards
US20060265696A1 (en) * 2005-05-23 2006-11-23 International Business Machines Corporation Method and system for data migration between versions of software
US20110321029A1 (en) * 2010-06-24 2011-12-29 Microsoft Corporation Upgrade management of application components
US20130060558A1 (en) * 2011-09-07 2013-03-07 Jason Schultz Updating of interfaces in non-emulated environments by programs in the emulated environment

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5579509A (en) * 1991-02-08 1996-11-26 International Business Machines Corporation Apparatus and method for verifying compatibility of system components
US20040181790A1 (en) * 2003-03-12 2004-09-16 Herrick Joseph W. System and method for maintaining installed software compliance with build standards
US20060265696A1 (en) * 2005-05-23 2006-11-23 International Business Machines Corporation Method and system for data migration between versions of software
US20110321029A1 (en) * 2010-06-24 2011-12-29 Microsoft Corporation Upgrade management of application components
US20130060558A1 (en) * 2011-09-07 2013-03-07 Jason Schultz Updating of interfaces in non-emulated environments by programs in the emulated environment

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190265298A1 (en) * 2018-02-23 2019-08-29 Rohde & Schwarz Gmbh & Co. Kg Prediction system as well as method for predicting compatibility
FR3115130A1 (en) * 2020-10-09 2022-04-15 Safran Electronics & Defense Method and system for managing compatibility between two pieces of equipment

Similar Documents

Publication Publication Date Title
US9407664B1 (en) Systems and methods for enforcing enterprise data access control policies in cloud computing environments
US9219611B1 (en) Systems and methods for automating cloud-based code-signing services
US10754954B2 (en) Securely exchanging information during application startup
CN102722670B (en) Mobile storage equipment-based file protection method, equipment and system
JP6201049B2 (en) System and method for updating system level services in a read-only system image
US10187485B1 (en) Systems and methods for sending push notifications that include preferred data center routing information
US9384353B2 (en) System and method for encryption of disk based on pre-boot compatibility testing
US20230100899A1 (en) Modularized basic input output system (bios) firmware activation
CN109376119B (en) Method for creating disk image file encrypted snapshot, method for using disk image file encrypted snapshot and storage medium
WO2017019006A1 (en) Component compatibility verification
US8452931B1 (en) Systems and methods for simultaneously providing multiple data protection functions
CN110569042B (en) System, method, equipment and storage medium for supporting function of updating FPGA in virtual machine
CN110417579B (en) Method, equipment and readable medium for managing gigabit network by using gigabit network card
CN107463638A (en) File sharing method and equipment between offline virtual machine
US20200250107A1 (en) Systems and methods for safely detecting indeterminate states of ranges in a self-encrypting storage resource
CN112513855A (en) Secure operation of encrypted data
US20180034782A1 (en) Secure device and proxy for secure operation of a host data processing system
CN110908715B (en) Pairing system for multiple devices
US11079959B2 (en) Migration of memory devices
US9405469B2 (en) Secure reservation mode for logical unit numbers and persistent reservations
US10938765B1 (en) Systems and methods for preparing email databases for analysis
US20190042770A1 (en) Systems and methods for attached digital storage devices
US9600508B1 (en) Data layer service availability
WO2016018207A1 (en) Providing data backup
US10044846B2 (en) Method for executing dual operating systems of smart phone

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 15899803

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 15899803

Country of ref document: EP

Kind code of ref document: A1