Patent Publication Number: US-9886292-B2

Title: Making user profile data portable across platforms

Description:
TECHNICAL FIELD 
     This disclosure relates generally to information handling systems and, more particularly, to providing layered resources to an information handling system. 
     BACKGROUND 
     As the value and use of information continues to increase, individuals and businesses seek additional ways to process and store information. One option available to users is information handling systems. An information handling system generally processes, compiles, stores, and/or communicates information or data for business, personal, or other purposes thereby allowing users to take advantage of the value of the information. Because technology and information handling needs and requirements vary between different users or applications, information handling systems may also vary regarding what information is handled, how the information is handled, how much information is processed, stored, or communicated, and how quickly and efficiently the information may be processed, stored, or communicated. The variations in information handling systems allow for information handling systems to be general or configured for a specific user or specific use such as financial transaction processing, airline reservations, enterprise data storage, or global communications. In addition, information handling systems may include a variety of hardware and software components that may be configured to process, store, and communicate information and may include one or more information handling systems, data storage systems, and networking systems. 
     SUMMARY 
     In one embodiment a method comprises detecting a log in by a user to an information handling system, for example, a client connected to a network. The user may log in to one or more of a platform, an operating system and a session of the client. An operating system version of the client is identified. It is determined if a user profile associated with the user exists for the identified operating system version. The user profile data layer and the user profile operating system layer are mounted wherein both layers are associated with the user. Mounting the user profile operating system layer may comprise incorporating any operating system data the user has modified. The user profile data layer and each user profile operating system may be located on different layers of a multi-layer virtual disk. Any modifications to user data and operating system data associated with the user are captured so that for any future log in by the user the user data and the operating system data will be available to the user. 
     In one embodiment, it is determined if the log in by the user is a first time the user has logged in to the client with the identified operating system. In such an embodiment, the user profile operating system layer associated with the user is created. If it is the first time that the user has logged in to any client within the system or network configuration, then the user profile data layer is created. For example, it may be determined whether the user has an associated user profile data layer. The user profile data layer and the user profile operating system layer may be created by a layering mechanism, such as a layering file-system filter driver. 
     In one embodiment, an additional user profile operating system layer associated with the user for a different operating system is created. A virtual disk is mounted and the user profile data layer, the user profile operating system layer and the additional user profile operating system layer are maintained on a separate layer of the virtual disk, wherein the virtual disk comprises metadata indicative of information located at one or more layers of the virtual disk. 
     In one embodiment one or more computer-readable non-transitory storage media embodying logic that is operable when executed performs or implements one or more embodiments. In one embodiment, an information handling system comprises one or more processors and a memory coupled to the processors comprising instructions executable by the processors, the processors being operable when executing the instructions to perform or implement one or more embodiments. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       For a more complete understanding of the present invention and its features and advantages, reference is now made to the following description, taken in conjunction with the accompanying drawings, in which: 
         FIG. 1  is a block diagram of selected elements of an information handling system. 
         FIG. 2  is an example of a network environment. 
         FIG. 3  is an example of a layer. 
         FIG. 4  illustrates a method of making user data portable across platforms according to one or more embodiments of the present disclosure. 
         FIG. 5  illustrates a method of making user data portable across platforms according to one or more embodiments of the present disclosure. 
     
    
    
     DETAILED DESCRIPTION 
     The detailed description set forth below is intended as a description of various configurations of the subject technology and is not intended to represent the only configurations in which the subject technology may be practiced. The appended drawings are incorporated herein and constitute a part of the detailed description. The detailed description includes specific details for the purpose of providing a thorough understanding of the subject technology. However, it will be apparent to those skilled in the art that the subject technology may be practiced without these specific details. In some instances, well-known structures and components are shown in block diagram form in order to avoid obscuring the concepts of the subject technology. 
     In the following description, details are set forth by way of example to facilitate discussion of the disclosed subject matter. It should be apparent to a person of ordinary skill in the field, however, that the disclosed embodiments are exemplary and not exhaustive of all possible embodiments. 
     For the purposes of this disclosure, an information handling system may include an instrumentality or aggregate of instrumentalities operable to compute, classify, process, transmit, receive, retrieve, originate, switch, store, display, manifest, detect, record, reproduce, handle, or utilize various forms of information, intelligence, or data for business, scientific, control, entertainment, or other purposes. For example, an information handling system may be a personal computer, a PDA, a consumer electronic device, a network storage device, or another suitable device and may vary in size, shape, performance, functionality, and price. The information handling system may include memory, one or more processing resources such as a central processing unit (CPU) or hardware or software control logic. Additional components or the information handling system may include one or more storage devices, one or more communications ports for communicating with external devices as well as various input and output (I/O) devices, such as a keyboard, a mouse, and a video display. The information handling system may also include one or more buses operable to transmit communication between the various hardware components. 
     Herein, a computer-readable non-transitory storage medium or media may include one or more semiconductor-based or other integrated circuits (ICs) (such, as for example, field-programmable gate arrays (FPGAs) or application-specific ICs (ASICs)), hard disk drives (HDDs), hybrid hard drives (HHDs), optical discs, optical disc drives (ODDs), magneto-optical discs, magneto-optical drives, floppy diskettes, floppy disk drives (FDDs), magnetic tapes, solid-state drives (SSDs), RAM-drives, SECURE DIGITAL cards or drives, any other suitable computer-readable non-transitory storage media, or any suitable combination of two or more of these, where appropriate. A computer-readable non-transitory storage medium may be volatile, non-volatile, or a combination of volatile and non-volatile, where appropriate. 
     Particular embodiments are best understood by reference to  FIGS. 1-5 , wherein like numbers are used to indicate like and corresponding parts. 
       FIG. 1  illustrates an example information handling system  100 . In particular embodiments, one or more information handling systems  100  perform one or more steps of one or more methods described or illustrated herein. In particular embodiments, one or more information handling systems  100  provide functionality described or illustrated herein. In particular embodiments, software running on one or more information handling systems  100  performs one or more steps of one or more methods described or illustrated herein or provides functionality described or illustrated herein. Particular embodiments include one or more portions of one or more information handling systems  100 . Herein, reference to an information handling system may encompass a computing device, and vice versa, where appropriate. Moreover, reference to an information handling system may encompass one or more information handling systems, where appropriate. 
     This disclosure contemplates any suitable number of information handling systems  100 . This disclosure contemplates information handling system  100  taking any suitable physical form. As example and not by way of limitation, information handling system  100  may be an embedded information handling system, a system-on-chip (SOC), a single-board information handling system (SBC) (such as, for example, a computer-on-module (COM) or system-on-module (SOM)), a desktop information handling system, a laptop or notebook information handling system, an interactive kiosk, a mainframe, a mesh of information handling systems, a mobile telephone, a personal digital assistant (PDA), a server, a tablet information handling system, or a combination of two or more of these. Where appropriate, information handling system  100  may include one or more information handling systems  100 ; be unitary or distributed; span multiple locations; span multiple machines; span multiple data centers; or reside in a cloud, which may include one or more cloud components in one or more networks. Where appropriate, one or more information handling systems  100  may perform without substantial spatial or temporal limitation one or more steps of one or more methods described or illustrated herein. As an example and not by way of limitation, one or more information handling systems  100  may perform in real time or in batch mode one or more steps of one or more methods described or illustrated herein. One or more information handling systems  100  may perform at different times or at different locations one or more steps of one or more methods described or illustrated herein, where appropriate. 
     In particular embodiments, information handling system  100  includes a processor  102 , memory  104 , storage  106 , an input/output (I/O) interface  108 , a communication interface  110 , and a bus  112 . Although this disclosure describes and illustrates a particular information handling system having a particular number of particular components in a particular arrangement, this disclosure contemplates any suitable information handling system having any suitable number of any suitable components in any suitable arrangement. 
     In particular embodiments, processor  102  includes hardware for executing instructions, such as those making up a computer program. As an example and not by way of limitation, to execute instructions, processor  102  may retrieve (or fetch) the instructions from an internal register, an internal cache, memory  104 , or storage  106 ; decode and execute them; and then write one or more results to an internal register, an internal cache, memory  104 , or storage  106 . In particular embodiments, processor  102  may include one or more internal caches for data, instructions, or addresses. This disclosure contemplates processor  102  including any suitable number of any suitable internal caches, where appropriate. As an example and not by way of limitation, processor  102  may include one or more instruction caches, one or more data caches, and one or more translation lookaside buffers (TLBs). Instructions in the instruction caches may be copies of instructions in memory  104  or storage  106 , and the instruction caches may speed up retrieval of those instructions by processor  102 . Data in the data caches may be copies of data in memory  104  or storage  106  for instructions executing at processor  102  to operate on; the results of previous instructions executed at processor  102  for access by subsequent instructions executing at processor  102  or for writing to memory  104  or storage  106 ; or other suitable data. The data caches may speed up read or write operations by processor  102 . The TLBs may speed up virtual-address translation for processor  102 . In particular embodiments, processor  102  may include one or more internal registers for data, instructions, or addresses. This disclosure contemplates processor  102  including any suitable number of any suitable internal registers, where appropriate. Where appropriate, processor  102  may include one or more arithmetic logic units (ALUs); be a multi-core processor; or include one or more processors  102 . Although this disclosure describes and illustrates a particular processor, this disclosure contemplates any suitable processor. 
     In particular embodiments, memory  104  includes main memory for storing instructions for processor  102  to execute or data for processor  102  to operate on. As an example and not by way of limitation, information handling system  100  may load instructions from storage  106  or another source (such as, for example, another information handling system  100 ) to memory  104 . Processor  102  may then load the instructions from memory  104  to an internal register or internal cache. To execute the instructions, processor  102  may retrieve the instructions from the internal register or internal cache and decode them. During or after execution of the instructions, processor  102  may write one or more results (which may be intermediate or final results) to the internal register or internal cache. Processor  102  may then write one or more of those results to memory  104 . In particular embodiments, processor  102  executes only instructions in one or more internal registers or internal caches or in memory  104  (as opposed to storage  106  or elsewhere) and operates only on data in one or more internal registers or internal caches or in memory  104  (as opposed to storage  106  or elsewhere). One or more memory buses (which may each include an address bus and a data bus) may couple processor  102  to memory  104 . Bus  112  may include one or more memory buses, as described below. In particular embodiments, one or more memory management units (MMUs) reside between processor  102  and memory  104  and facilitate accesses to memory  104  requested by processor  102 . In particular embodiments, memory  104  includes random access memory (RAM). This RAM may be volatile memory, where appropriate. Where appropriate, this RAM may be dynamic RAM (DRAM) or static RAM (SRAM). Moreover, where appropriate, this RAM may be single-ported or multi-ported RAM. This disclosure contemplates any suitable RAM. Memory  104  may include one or more memories  104 , where appropriate. Although this disclosure describes and illustrates particular memory, this disclosure contemplates any suitable memory. 
     In particular embodiments, storage  106  includes mass storage for data or instructions. As an example and not by way of limitation, storage  106  may include a hard disk drive (HDD), a floppy disk drive, flash memory, an optical disc, a magneto-optical disc, magnetic tape, or a USB drive or a combination of two or more of these. Storage  106  may include removable or non-removable (or fixed) media, where appropriate. Storage  106  may be internal or external to information handling system  100 , where appropriate. In particular embodiments, storage  106  is non-volatile, solid-state memory. In particular embodiments, storage  106  includes read-only memory (ROM). Where appropriate, this ROM may be mask-programmed ROM, programmable ROM (PROM), erasable PROM (EPROM), electrically erasable PROM (EEPROM), electrically alterable ROM (EAROM), or flash memory or a combination of two or more of these. This disclosure contemplates mass storage  106  taking any suitable physical form. Storage  106  may include one or more storage control units facilitating communication between processor  102  and storage  106 , where appropriate. Where appropriate, storage  106  may include one or more storages  106 . Although this disclosure describes and illustrates particular storage, this disclosure contemplates any suitable storage. 
     In particular embodiments, I/O interface  108  includes hardware, software, or both, providing one or more interfaces for communication between information handling system  100  and one or more I/O devices. Information handling system  100  may include one or more of these I/O devices, where appropriate. One or more of these I/O devices may enable communication between a person and information handling system  100 . As an example and not by way of limitation, an I/O device may include a keyboard, keypad, microphone, monitor, mouse, printer, scanner, speaker, still camera, stylus, tablet, touch screen, trackball, video camera, another suitable I/O device or a combination of two or more of these. An I/O device may include one or more sensors. This disclosure contemplates any suitable I/O devices and any suitable I/O interfaces  108  for them. Where appropriate, I/O interface  108  may include one or more device or software drivers enabling processor  102  to drive one or more of these I/O devices. I/O interface  108  may include one or more I/O interfaces  108 , where appropriate. Although this disclosure describes and illustrates a particular I/O interface, this disclosure contemplates any suitable I/O interface. 
     In particular embodiments, communication interface  110  includes hardware, software, or both providing one or more interfaces for communication (such as, for example, packet-based communication) between information handling system  100  and one or more other information handling systems  100  or one or more networks. As an example and not by way of limitation, communication interface  110  may include a network interface controller (NIC) or network adapter for communicating with an Ethernet or other wire-based network or a wireless NIC (WNIC) or wireless adapter for communicating with a wireless network, such as a WI-FI network. This disclosure contemplates any suitable network and any suitable communication interface  110  for it. As an example and not by way of limitation, information handling system  100  may communicate with an ad hoc network, a personal area network (PAN), a local area network (LAN), a wide area network (WAN), a metropolitan area network (MAN), or one or more portions of the Internet or a combination of two or more of these. One or more portions of one or more of these networks may be wired or wireless. As an example, information handling system  100  may communicate with a wireless PAN (WPAN) (such as, for example, a BLUETOOTH WPAN), a WI-FI network, a WI-MAX network, a cellular telephone network (such as, for example, a Global System for Mobile Communications (GSM) network), or other suitable wireless network or a combination of two or more of these. Information handling system  100  may include any suitable communication interface  110  for any of these networks, where appropriate. Communication interface  110  may include one or more communication interfaces  110 , where appropriate. Although this disclosure describes and illustrates a particular communication interface, this disclosure contemplates any suitable communication interface. 
     In particular embodiments, bus  112  includes hardware, software, or both coupling components of information handling system  100  to each other. As an example and not by way of limitation, bus  112  may include an Accelerated Graphics Port (AGP) or other graphics bus, an Enhanced Industry Standard Architecture (EISA) bus, a front-side bus (FSB), a HYPERTRANSPORT (HT) interconnect, an Industry Standard Architecture (ISA) bus, an INFINIBAND interconnect, a low-pin-count (LPC) bus, a memory bus, a Micro Channel Architecture (MCA) bus, a Peripheral Component Interconnect (PCI) bus, a PCI-Express (PCIe) bus, a serial advanced technology attachment (SATA) bus, a Video Electronics Standards Association local (VLB) bus, or another suitable bus or a combination of two or more of these. Bus  112  may include one or more buses  112 , where appropriate. Although this disclosure describes and illustrates a particular bus, this disclosure contemplates any suitable bus or interconnect. 
       FIG. 2  illustrates an example configuration of networked information handling systems (e.g. client devices and servers). In particular embodiments, one or more client devices  220  and one or more servers  240  are connected via network  210 . Network  210  may be a public network or a private (e.g. corporate) network. Additionally, network  210  may, for example, be a Local Area Network (LAN), a Wide Area Network (WAN), a wireless network, the Internet, an intranet or any other suitable type of network. In particular embodiments, network  210  may include one or more routers for routing data between client devices  220  and/or servers  240 . A device (e.g., a client device  220  or a server  240 ) on network  210  may be addressed by a corresponding network address including, for example, an Internet protocol (IP) address, an Internet name, a Windows Internet name service (WINS) name, a domain name or other system name. In particular embodiments, network  210  may include one or more logical groupings of network devices such as, for example, one or more sites (e.g. customer sites) or subnets. As an example, a corporate network may include potentially thousands of offices or branches, each with its own subnet (or multiple subnets) having many devices. One or more client devices  220  may communicate with one or more servers  240  via any suitable connection including, for example, a modem connection, a LAN connection including the Ethernet or a broadband WAN connection including DSL, Cable, Ti, T3, Fiber Optics, Wi-Fi, or a mobile network connection including GSM, GPRS, 3G, or WiMax. 
     Client device  220  may be a desktop computer, a laptop computer, a tablet computer, a handheld device, a mobile phone, a kiosk, a vending machine, a billboard, or any suitable information handling system. In particular embodiments, a client device  220  is an embedded computer and may have flash memory (e.g. a solid state drive) instead of a hard disk drive. In particular embodiments, a client device  220  is a thin client having limited processing capabilities and limited storage, and such a thin client may require minimal management and updates. A client device  220  may communicate with a server  240  via one or more protocols such as Hypertext Transfer Protocol (HTTP), Hypertext Transfer Protocol Secure (HTTPS), File Transfer Protocol (FTP), Common Internet File System (CIFS), Independent Computing Architecture (ICA) protocol (developed by Citrix Systems, Inc.), Remote Desktop Protocol (RDP) (developed by Microsoft Corporation), or any suitable protocol or combination of protocols. 
     A server  240  may include one or more of: a computing device, a desktop computer, a laptop computer, a database, a corporate server, a repository server, a configuration application server, a domain name system (DNS) server, a dynamic host configuration protocol (DHCP) server, a virtual machine (e.g., VMware® Virtual Machine), a desktop session (e.g., Microsoft Terminal Server), a published application (e.g., Microsoft Terminal Server), or any suitable information handling system. As an example, a private (e.g. corporate) network may include a device manager server and a repository server each configured to communicate with multiple client devices  220  across one or more domains, sites, or subnets of network  210 . In particular embodiments, a server  240  may include one or more servers, or functions of one or more servers. A client device  220  may access software resources provided by a server  240  such as, for example, operating systems, add-ons, content, or any other suitable data, applications, or images. In particular embodiments, a client  220  may access resources provided by a server  240  only after providing suitable authentication information. Alternatively, a server  240  may provide software or other resources automatically to one or more client devices  220 . 
     A system and method for providing layered resources to an information handling system is disclosed herein. A layer is a container or collection of data or resources. The data or resources may comprise executable code, such as an operating system or user application. The data or resources may comprise configuration data for an information handling system, such as registry settings in a Microsoft Windows environment, or other data structures used to store configuration settings, such as text files, XML files, and the like. The data or resources may comprise files in any format, including but not limited to, text files, HTML files, or proprietary files such as Microsoft Word “.DOC” or “.DOCX” files or Microsoft Excel “.XLS” spreadsheets. 
       FIG. 3  illustrates a particular embodiment of a layer  310 . In this embodiment, layer  310  contains one or more files or resources  401 A- 401 N associated with an application, such as Microsoft Word, Microsoft Excel, Microsoft Outlook, Adobe Acrobat, or the FireFox web browser. The files or resources  401 A- 401 N may comprise executable code, non-executable data (e.g., images, help files, templates, et cetera), or a combination of executable and non-executable data. The layer may also contain configuration information necessary for the application to run on the information handling system. For example, for an application executable by a Microsoft Windows operating system, the application may require one or more registry settings. Therefore, the layer may store the registry keys and values associated with the application. The registry keys and values may be stored as metadata. In particular embodiments, the registry keys and values may be stored in a registry hive in the layer. 
     In particular embodiments, the layer comprises an operating system image, and files  401 A- 401 N comprise the executable and non-executable files associated with a particular operating system. For example, the files may comprise the bootloader, the kernel, hardware drivers, software drivers, and other files associated with the operating system. The layer may also contain configuration information necessary for the operating system, such as environment settings and network configuration settings. 
     In particular embodiments, a layer may contain data or resources for more than one application or operating system. For example, an organization may create an “Accounting Department” layer that contains all the files, resources, or configuration settings necessary for applications deployed to users in the organization&#39;s accounting department. Continuing with this example, the accounting department layer may contain an image of Microsoft Excel, Microsoft Word, and other applications typically deployed to users in the accounting department, all in a single layer. In particular embodiments, the layer may also contain files, resources, or configuration settings for one or more operating systems. 
     A layer may also contain metadata that describes the contents of the layer. Any suitable data structure, such as an XML file, a hash table, a tree data structure, an array, a linked list, a Microsoft registry hive, may be used to store the metadata, any data structure known to one ordinary skill in the art or any combination thereof. The layer may contain one or more data structures to store the metadata. Referring to the particular embodiment depicted in  FIG. 3 , layer  310  comprises file metadata  402  and configuration metadata  404 . File metadata  402  may comprise one or more data structures identifying the files  401 A- 401 N stored in layer  310 , identify one or more logical blocks associated with the files, or identify one or more logical-to-physical mappings of the files. Configuration metadata  404  may store configuration settings associated with the layer, or identify where configuration settings associated with the layer are stored. In particular embodiments, registry key and value pairs are stored in configuration metadata  404 . In particular embodiments, the configuration metadata is stored in a Microsoft registry hive. 
     No particular storage medium is required for storing a layer and the associated data or resources. By way of example and not by way of limitation, layer  310  may be stored on a hard disk drive (e.g., a partition the hard disk drive), a virtual disk, a RAM disk, a USB storage device, a flash storage device, a DVD (digital versatile disc), or any other suitable storage medium. The storage medium may be local to the information handling system. In particular embodiments, the storage medium may be remote from the information handling system. For example, the storage medium may comprise a network file share (e.g., a Network File System share, an NTFS/SMB file share), a block-based network share (e.g., storage area network using FibreChannel or iSCSI), or a cloud storage service. In a particular embodiment, a layer may be stored on a streaming virtual disk (vDisk). By way of example and not by way of limitation, an implementation of a streaming vDisk is available from Dell Inc. In particular embodiments, a layer may comprise a folder or directory on a storage medium where the data and resources associated with the layer are stored. For example, a layer may comprise a partition of a streaming Virtual Disk (vDisk) where all of the data and resources associated with the layer are stored. 
     In particular embodiments, a layer may be stored remotely from the information handling system. If the information handling system maintains connectivity to the remote storage medium, the layer may remain remotely stored from the information handling system. In particular embodiments, the layer (or portions of the layer) may be cached or staged to a storage medium local to the information handling system. For example, caching or staging a layer locally may permit increased performance during runtime or permit offline usage of the layer. The layering system and method disclosed herein does not require that the one or more layers provided to the information handling system be stored on a single type of storage medium or at a single location. By way of example and not by way of limitation, an information handling system may be provided with access to a first layer that is stored on a local storage medium, and a second layer that is stored on a remote storage medium. 
     In particular embodiments, the layering system comprises a layering client, a layering mechanism, such as a layering file-system filter driver (LFFD), and a layering registry filter driver (LRFD) provided for the information handling system. 
     In particular embodiments, the layering client is responsible for managing the mounting of layers. The layering client may determine which layers are to be mounted based upon the identity of the user, a role associated with the user, an identifier of the information handling system, a geographic location, or any other criteria that may be relevant to provisioning software to an information handling system. Layers may be mounted at boot time (such as when a layer is used to provide the operating system), during a log-on process, or dynamically (such as when a user clicks an icon associated with a layer resource). In particular embodiments, a layer is mounted as a file system and is assigned an available drive letter. The drive associated with the drive letter may be hidden from the user to prevent a user from directly accessing or modifying the contents of the layer. When more than one layer is mounted, the layering client may assign a priority or ordering to the mounted layers. The assigned priority or ordering may be used to resolve conflicts between layers, such as when more than one mounted layer contains a similarly named resource. 
     In particular embodiments, the criteria or rules to mount a layer are decoupled from the client device where layers are actually mounted. For example, the layering client may send an identifier associated with the current user and an identifier associated with the client device  220  to a management server  240 . The management server  240  is responsible for applying the criteria or rules to determine which layers the client device  220  should mount. The rules or criteria may comprise any combination of user name, a group associated with the user, time of the day, type of device (laptop/PC/Tablet), or any other suitable criteria. 
     In particular embodiments, the layering client may configure the other layering drivers provided for the information handling system  100 . For example, the layering client may notify the layering drivers when a layer has been mounted or dismounted. The layering client may also be used to alter the operating state of the layering drivers. For example, the layering drivers may have multiple operating states, such as a “normal” or “runtime” state, and an “install” or “create layer” state. 
     In particular embodiments, a method of creating a layer is disclosed herein. The layering client may receive a notification to create a layer. The notification may be received from a user interface provided on the information handling system  100  or may be received from a remote information handling system  100 . The layering client may determine a target storage location on a suitable storage medium from the notification, or by prompting a selection by a user of the information handling system  100 . The layering client may re-format the target storage location if appropriate. The layering client may create a file metadata  402 , a configuration metadata  404 , or both on the target storage location. If any other layers are mounted, the layering client may dismount the other layers. The layering client mounts the target storage location as a layer. The layering configures the LFFD and the LRFD, if an LRFD is present, to operate in an “install” or “create layer” state. While in the “install” state, a user may install applications using standard application installer technology, and the installed applications will be created on the newly created layer. Once all applications have been installed, the layering client may receive a notification that installation is complete and that the layering system should be put back into a “normal” or “runtime” state. At this point, the layering client may dismount the newly created layer. The layering client configures the LFFD and the LRFD, if an LRFD is present, to operate in a “normal” or “runtime” state. 
     In particular embodiments, the LFFD may be loaded onto a file system stack of the information handling system&#39;s operating system (OS). The LFFD may register with the OS to receive notifications for all file operations (e.g. create, open, close, read, write, rename, delete, directory enumeration, etc.). The LFFD is operable to allow a file operation to pass-through to the file system, or the LFFD may modify a file operation. By way of example and not by way of limitation, the LFFD may modify a file operation by blocking the operation, replicating the operation, redirecting the operation, or performing one of the operations described herein. 
     In the normal or runtime state, the LFFD examines each file operation and determines whether the file operation must be redirected or modified to make use of a file contained in a mounted layer. This determination may be made by performing a path lookup against metadata describing the files contained in the mounted layers. For example, the LFFD may load the file metadata for a layer when it is mounted, and then use the file metadata to perform a path lookup. 
     In particular embodiments, a method for handling a file open operation by the LFFD is disclosed. The LFFD receives a notification of a file open operation, and identifies the target file from the notification. Next, the LFFD may perform a path lookup against the file metadata of a first mounted layer. If there is no match, the LFFD may move to the next mounted layer and perform a path lookup against the file metadata of the next mounted layer recursively until there are no other mounted layers or a match is found. If there are no other mounted layers, the LFFD will allow the file open operation to be handled by the file system. When a path lookup results in a match, the LFFD looks for a file described by file metadata. If the file is found in the mounted layer, the LFFD modifies the file open operation by redirecting the target of the file open operation to point to the file found in the mounted layer. If no file is found in the mounted layer, the LFFD proceeds to perform a path lookup against the next mounted layer and so on. The order in which the LFFD checks the file metadata of each mounted layer may be determined by a priority or ordering assigned to the layers. 
     For example, assume a layer is mounted as drive E:, and the layer contains a file “Foo.txt” that is associated with the path “\Program Files\App\”. If the LFFD receives a notification for a file open operation that specifies a target of “C:\Program Files\App\Foo.txt”, the LFFD will perform a path lookup against the file metadata for all mounted layers. In this example, the LFFD will match the path “\Program Files\App\”, and determine that the file operation may be associated with the layer mounted at E:. Next, the LFFD will check to see if there is a file “Foo.txt” in the mounted layer. In this example, the LFFD will locate the file “Foo.txt”. Having made the determination that the file operation targets a file associated with a mounted layer, the LFFD will redirect the file open operation such that the file located at “E:\Program Files\App\Foo.txt” is opened instead of a file located at the same path on the C: drive, even if such a file existed. If the LFFD matches the path to a mounted layer, but the LFFD does not locate the described file within the layer, then the LFFD will allow the file operation to pass to the file system of the operating system for normal handling. 
     In particular embodiments, a method for handling a file directory enumeration operation by the LFFD is disclosed. The LFFD receives a notification of a file directory enumeration operation, and identifies the target file directory. For each mounted layer, the LFFD creates a file directory enumeration operation that targets the mounted layer. The results returned by the file directory enumeration operation for each mounted layer are merged together with the result of a file directory enumeration operation that is allowed to pass-through to the file system. Before returning the results, the LFFD will filter out duplicate files such that only the file associated with the highest priority layer is returned. 
     For example, assume there is a first layer mounted at E:, a second layer mounted at F:, and a third layer mounted at G:. When the LFFD receives a notification of a file directory enumeration operation targeting “C:\Program Files\App\”, the LFFD will send file directory enumeration operations targeting “E:\Program Files\App\”, “F:\Program Files\App\”, and “G:\Program Files\App\”. The results of these operations are merged with the result of a file directory enumeration operation that is passed-through to the file system targeting “C:\Program Files\App\”. To the user or an application, the results appear to only come from a single directory while the results were generated by combining the files in four different file directories. If there are two or more files with the same name across the four different file directories, the LFFD will filter out the duplicate file names according to the priority or ordering assigned to the layers. 
     In particular embodiments, a method for handling a file directory enumeration operation by the LFFD using a file directory query hook is disclosed. The LFFD makes use of a directory query hook provided by file system instead of creating separate file directory enumeration operations that target each mounted layer. First, the LFFD receives a file directory enumeration operation. The LFFD identifies the highest priority layer, redirects the file directory enumeration operation to the highest priority layer, sets a flag that indicates that more results will be available, and records in metadata the next layer to be queried. When the query is returned from the highest priority layer, the initiating process receives the results, and the set flag triggers the initiating process to resubmit the file directory enumeration operation. The LFFD recognizes that the file directory enumeration operation is a continuation of a prior request, checks the metadata to identify the next layer to be queried, redirects the operation to the next layer, sets the flag indicating that more results are available, and updates the metadata to identify the next layer to be queried. The process continues until there are no more layers to check, in which case, the operation is passed-through to the file system. During this process, the LFFD tracks the results returned by each operation, and filters duplicate files from subsequent queries to prevent multiple files with the same name appearing in the directory view. 
     In particular embodiments, it may be unnecessary for the LFFD to modify the behavior of other file operations if the remaining types of file operations make use of a file handle. For example, if a file open operation must be performed before a read file operation, a write file operation, or a close file operation, no modification to these file operations are necessary so long as the file operations make use of a file handle returned from a file open operation. If the target file is associated with a file in a layer, then the file handle returned by the file open operation will have been redirected to the layer resource by the LFFD. Continuing the previous example, when a file open operation targeting “C:\Program Files\App\Foo.txt” is handled by the LFFD, the LFFD returns a file handle that points to the “Foo.txt” file at its location in the layer mounted at the E: drive. Any subsequent file operations using the file handle will make use of the file located in the layer automatically. 
     In particular embodiments, the LFFD may perform the path lookups described herein using cached metadata. In a particular embodiment, the metadata cache is created by loading metadata stored in a layer when the layer is first mounted. The cached metadata can be stored as a hash table where paths are used as the hash key or as in-memory search tree. 
     In another particular embodiment, the metadata cache is implemented using Microsoft Windows registry hives. In this embodiment, the file metadata for each layer is stored in a registry hive in each layer. When the layer is mounted, the LFFD locates the registry hive containing the file metadata for the layer, and loads the registry hive into the registry. The LFFD performs path lookups by querying each layer&#39;s registry hive loaded into the registry. When the layer is dismounted, the LFFD unloads the registry hive from the registry. 
     In particular embodiments, a method for handling a file create operation by the LFFD operating in an “install” or “create layer” mode is disclosed. The LFFD receives a notification of a file create operation, and determines the target path. The LFFD redirects the file create operation to a destination location on the storage medium for the mounted layer that is in an “install” state. The LFFD may update the file metadata associated with the mounted layer to include information concerning the target path and the destination location to facilitate a path lookup. The LFFD may return a file handle pointing to the destination location to the calling process. 
     For example, assume that the layer in an “install” state is mounted as E:. While the layering system is in install mode, the user runs an installer package for an application. The installer package attempts to create a file at the target path “C:\Program Files\App\Foo.txt”. The LFFD receives a notification of the file create operation, and redirects the file create operation to the destination path “E:\Program Files\App\Foo.txt”. The LFFD may update the file metadata to associate the target path “\Program Files\App\Foo.txt” with the destination path within the layer “\Program Files\App\Foo.txt”. At the completion of the file create operation, the installer package receives a file handle that points to the file stored at “E:\Program Files\App\Foo.txt”. 
     In particular embodiments, a method for handling a file modify operation by the LFFD operating in an “install” or “create layer” mode is disclosed. The LFFD receives a notification of a file modification operation, and determines the target path. The LFFD redirects the file create operation to a destination location on the storage medium for the mounted layer that is in an “install” state. If the file does not exist on the storage medium for the mounted layer, the file may be copied from the target path to the mounted layer, and then apply the modification. The LFFD may update the file metadata associated with the mounted layer to include information concerning the target path and the destination location to facilitate a path lookup. The LFFD may return a file handle pointing to the destination location to the calling process. 
     If the information handling system  100  is running an operating system that uses a registry for storing configuration settings (for example, a Microsoft Windows operating system), then a layering registry filter driver (LRFD) may be provided. The LRFD may register with the OS to receive a notification for all registry operations (e.g. create key, get key value, delete key, delete key value, enumerate keys, etc.). The layering registry filter driver can allow a registry operation to pass-through to the OS&#39;s registry, or block, replicate or redirect the registry operation to target configuration metadata in a mounted layer. In the normal or runtime state, the LRFD examines each registry operation and determines whether the registry operation must be redirected or modified to make use of a registry key or value associated with a mounted layer. This determination may be made by performing a lookup against the configuration metadata stored in the mounted layers. 
     In particular embodiments, a method for handling a registry modification or retrieval operation by the LRFD is disclosed. The LRFD receives a notification of a registry modification or retrieval operation (e.g., get registry key value or set registry key value), and identifies the target key from the notification. Next, the LRFD queries the configuration metadata for each mounted layer in the order of priority assigned to the mounted layers. When the first match is found, the LRFD redirects the registry operation to the configuration metadata in the mounted layer associated with the first match, and returns the result to the calling process. If there is no match, the LRFD allows the registry operation to pass-through to the registry for normal handling. 
     For example, assume there is a first layer mounted at E:, a second layer mounted at F:, and a third layer mounted at G:. Also assume that the second layer&#39;s configuration metadata contains a key and value associated with the registry path “HKEY_LOCAL_MACHINE\SOFTWAREWendor\Key1”, and assume that the registry also contains a key and value at the same path. When the LRFD receives a notification of a registry get key value operation targeting “HKEY_LOCAL_MACHINE\SOFTWAREWendor\Key1”, the LRFD will query configuration metadata for the first mounted layer and not find a match, the LRFD will query configuration metadata for the second mounted layer and find a match. At this point, the LRFD will redirect the registry operation to the configuration metadata of the second layer, and the calling process will receive the value stored in the configuration metadata of the second layer. Continuing with this example, assume that the registry path does not exist in the second mounted layer. With this modification, the LRFD would query the configuration data of all three mounted layers, and not find a match. At this point, the LRFD would allow the registry operation to be handled by the registry. 
     In particular embodiments, a method for handling a registry enumeration operation by the LRFD is disclosed. The LRFD receives a notification of a registry enumeration operation, and identifies the target registry path from the notification. Next, the LRFD queries the configuration metadata for each mounted layer in the order of priority assigned to the mounted layers. For each queried configuration metadata, the LRFD gathers and merges all of the registry keys and values associated with the target path. If there are registry keys that are the same in more than one configuration metadata or the registry, the LRFD filters out the registry keys and values associated with the lower priority layers and the registry. The combined results are returned to the calling process. 
     In particular embodiments, all writes and modifications to user data, user profiles and registry settings are captured and redirected to the user profile layer. In particular embodiments, the configuration metadata is a registry hive stored in the layer. In such an embodiment, redirecting the registry operation comprises redirecting the registry operation from the registry to the registry hive stored in the layer. 
     In one embodiment, a layer is a user profile layer. A user profile generally has two primary elements. First, a user profile comprises OS specific data. OS specific data may comprise any one or more of user profile settings, registry hive for the user, desktop background, user specific OS environment settings, user specific application data and any other OS specific data known to one of ordinary skill in the art. The OS specific data is OS dependent in that the OS specific data does not apply across different versions of an OS. For example, registry settings created for a 32-bit OS could not be used for a 64-bit OS. 
     User profiles may also include user data. User data may comprise any one or more of documents, pictures, music, video, and any other type of user data known to one of ordinary skill in the art. User data is not dependent on the OS and may be ported to different versions of an OS or may be ported to a different OS. Because of OS specific requirements and dependencies, limitations are placed on the ability to move a user profile across platforms, devices, information handling systems  100 , and any other computing device known to one of ordinary skill in the art. Typically, a user profile can only be ported between machines running or executing the exact same version of an OS. 
     To overcome the restrictions of porting a user profile, the present invention contemplates splitting a user profile into two separate layers. The OS specific data or OS dependent contents of a user profile are captured in a user profile OS layer. User data of a user profile is captured in a user profile data layer. 
       FIG. 4  illustrates a method of making user data portable across platforms according to one or more embodiments of the present disclosure. At step  402 , a user log in is detected. The log in may be detected each time the user logs in to a particular information handling system  100 , platform, OS, session, environment, remote desktop session, or any other type of log in known to one of ordinary skill in the art. At step  404 , a layering mechanism, such as an LFFD, creates or mounts the user profile data layer associated with the user. At step  406 , the layering mechanism captures any user changes to the user data in the user profile data layer associated with the user. For example, user data may be captured whenever changes to occur to specific folders associated with the user&#39;s session or activity. For example, changes to a user&#39;s folders such as “\Documents”, “\Downloads”, “\Pictures”, “\Desktop”, “\Music”, and “\Videos” may be captured. This list is illustrative and any number of folders and files in any number of data paths may be tracked to capture changes to user data associated with the user. 
       FIG. 5  illustrates a method of making OS specific data of a user profile portable across similar platforms according to one or more embodiments of the present disclosure, for example, from one personal computer to another personal computer. At step  502 , a user log in is detected. The log in may be detected each time the user logs in to a particular information handling system  100 , platform, OS, session, environment, remote desktop session, or any other type of log in known to one of ordinary skill in the art. At step  504 , the OS version associated with the user&#39;s log in is identified. At step  506 , it is determined if a previous user profile for the identified OS version exists. If a user profile does exist, then at step  508  the layering mechanism, such as an LFFD, mounts the user profile OS layer associated with the user. Mounting the user profile OS layer also incorporates any settings the user has changed or modified after logging in to any other information handling systems  100  with the same OS. At step  510 , the layering mechanism captures any user changes to OS specific data in the user profile OS layer associated with the user. If at step  506  no previous user profile exists for the identified OS version, then at step  512  the LFFD creates a new user profile OS layer and the method proceeds to step  508 . 
     In one or more embodiments, the steps of  FIG. 4  and  FIG. 5  are performed sequentially, in any combination or order, substantially simultaneously with each other, or in any other suitable manner known to one of ordinary skill in the art. 
     By separating the user data and the OS specific data into separate layers, the user data is separated from any OS dependencies. The user data is always available to the user on any information handling system  100  irrespective of the base OS. User profile settings are also made available to the user whenever the user logs in to any other information handling system  100  with the OS version. The user profile settings are thus portable and accessible between same versions of the OS on any information handling system  100 . 
     For example, when a user logs in for the first time to an information handling system  100  running a specific operating system, for example, an information handling system running a 64-bit OS, such as WIN7 by Microsoft, a new layer is created for the user. A user profile OS layer associated with the operating system, for example, WIN7, is created, for example, a UPOSWin7×64 layer is created. If this is the first time that the user has logged in to any information handling system of the configuration, network, environment, system or any other type of network or computer configuration known to one of a skill in the art, for example, it is determined that no user profile data layer is associated with the user, then a user profile data layer is created, for example, a UPData layer. If the same user then subsequently logs in to a different information handling system  100  running a 32-bit OS, such as Win8.1 by Microsoft, the another user profile OS layer associated with the user is created for this new OS. For example, a UPOSWin8.1×32 user profile OS layer may be created. The user now has three user profile layers associated with the user, two user profile OS layers (UPOSWin7×64 and UPOSWin8.1×32) and one user profile data layer (UPData). 
     If the user logs in to another information handling system  100  that is running a 64-bit OS but a different version than any prior user profile, a new user profile OS layer is created. For example, if the user logs in to an information handling system  100  that is running 64-bit Win8.1 OS by Microsoft, an additional layer is created for the user, such as a UPOSWin8.1×64 layer. The user now has a user profile that includes three user profile OS layers (UPOSWin7×64, UPOSWin8.1×32, and UPOSWin8.1×64) and one user profile data layer (UPData). Thus for each different OS the user has a separate user profile OS layer but the user maintains the same user profile data layer. 
     While the user profile OS layer and the user profile data layer are separate layers, both are associated with a single or specific user. The different layers may be managed by maintaining or locating the layers in a single multi-layer vDisk. A multi-layer vDisk may contain one or more department installed applications (DIA) or user profile layers. A multi-layer vDisk has metadata at the root of the VDisk that comprises the number of layers contained in the vDisk, location of each layer, and any other data known to one of ordinary skill in the art. 
     When the vDisk is mounted, the LFFD determines if the vDisk is a multi-layer vDisk or a single-layer vDisk. If the vDisk is a multi-layer vDisk, then the LFFD read the metadata at the root and mount each layer of the vDisk separately. During an unmount of the vDisk, the LFFD unmounts each layer separately and may unmount the vDisk if no other layers are mounted. 
     For example, a multi-layer vDisk may have a different layer for each user profile OS layer and user profile data layer associated with a user. Using the above example, the multi-layer vDisk would have a UPOSWin7×64 layer, a UPOSWin8.1×32 layer, a UPOSWin8.1×64 layer and a UPData layer associated with the user. 
     Herein, a computer-readable non-transitory storage medium or media may include one or more semiconductor-based or other integrated circuits (ICs) (such, as for example, field-programmable gate arrays (FPGAs) or application-specific ICs (ASICs)), hard disk drives (HDDs), hybrid hard drives (HHDs), optical discs, optical disc drives (ODDs), magneto-optical discs, magneto-optical drives, floppy diskettes, floppy disk drives (FDDs), magnetic tapes, solid-state drives (SSDs), RAM-drives, SECURE DIGITAL cards or drives, any other suitable computer-readable non-transitory storage media, or any suitable combination of two or more of these, where appropriate. A computer-readable non-transitory storage medium may be volatile, non-volatile, or a combination of volatile and non-volatile, where appropriate. 
     Those of skill in the art would appreciate that items such as the various illustrative blocks, modules, elements, components, methods, operations, steps, and algorithms described herein may be implemented as hardware, computer software, or a combination of both. 
     To illustrate the interchangeability of hardware and software, items such as the various illustrative blocks, modules, elements, components, methods, operations, steps, and algorithms have been described generally in terms of their functionality. Whether such functionality is implemented as hardware or software depends upon the particular application and design constraints imposed on the overall system. Skilled artisans may implement the described functionality in varying ways for each particular application. 
     In one aspect, “means,” a block, a module, an element, a component or a processor may be an item (for example, one or more of blocks, modules, elements, components or processors) for performing one or more functions or operations. In one aspect, such an item may be an apparatus, hardware, or a portion thereof. In one example, an item may have a structure in the form of, for example, an instruction(s) encoded or stored on a machine-readable medium, on another device, or on a portion thereof. An instruction(s) may be software, an application(s), a subroutine(s), or a portion thereof. The instructions(s) may be for performing the function(s) or operation(s). The instruction(s) may be executable by one or more processors to perform the function(s) or operation(s). One or more processors may execute the instruction(s) by, for example, transferring or copying and instructions into an executable memory space and executing the instructions. In one example, an item may be implemented as one or more circuits configured to perform the function(s) or operation(s). A circuit may include one or more circuits and/or logic. A circuit may be analog and/or digital. A circuit may be electrical and/or optical. A circuit may include transistors. In an example, one or more items may be implemented as a processing system (for example, a digital signal processor (DSP), an application specific integrated circuit (ASIC), a field programmable gate array (FPGA), etc.), as a portion(s) of any of the foregoing, or as a combination(s) of any of the foregoing. Those skilled in the art will recognize how to implement the instructions, circuits, and processing systems. 
     In one aspect of the disclosure, when actions or functions (for example, hooking, modifying, intercepting, redirecting, determining, traversing, obtaining, creating, operating, deleting, removing, receiving, providing, generating, converting, displaying, notifying, accepting, selecting, controlling, transmitting, reporting, sending, or any other action or function) are described as being performed by an item (for example, one or more of blocks, modules, elements, components or processors), it is understood that such actions or functions may be performed, for example, by the item directly. In another example, when an item is described as performing an action, the item may be understood to perform the action indirectly, for example, by facilitating such an action (for example, assisting, allowing, enabling, causing, or providing for, such action to occur; or performing a portion of such an action). For example, determining can refer to facilitating determination, attaching can refer to facilitating attaching, and receiving can refer to facilitating receiving. In one aspect, performing an action may refer to performing a portion of the action (for example, performing a beginning part of the action, performing an end part of the action, or performing a middle portion of the action). 
     A reference to an element in the singular is not intended to mean “one and only one” unless specifically so stated, but rather “one or more.” For example, a client may refer to one or more clients, a server may refer to one or more servers, an operation may refer to one or more operations, and a signal, message, or communication may refer to one or more signals, messages, or communications. 
     Unless specifically stated otherwise, the term “some” refers to one or more. Pronouns in the masculine (for example, his) include the feminine and neuter gender (for example, her and its) and vice versa. Headings and subheadings, if any, are used for convenience only and do not limit the invention. 
     A phrase such as an “embodiment” does not imply that such embodiment is essential to the subject technology or that such embodiment applies to all configurations of the subject technology. A disclosure relating to an embodiment may apply to all embodiments, or one or more embodiments. An embodiment may provide one or more examples. A phrase such an embodiment may refer to one or more embodiments and vice versa. A phrase such as a “configuration” does not imply that such configuration is essential to the subject technology or that such configuration applies to all configurations of the subject technology. A disclosure relating to a configuration may apply to all configurations, or one or more configurations. A configuration may provide one or more examples. A phrase such a configuration may refer to one or more configurations and vice versa. 
     In one aspect, the term “coupled” or the like may refer to being directly coupled. In another aspect, the term “coupled” or the like may refer to being indirectly coupled or communicatively coupled. 
     Various items may be arranged differently (for example, arranged in a different order, or partitioned in a different way) all without departing from the scope of the subject technology. In one aspect of the disclosure, the elements recited in the accompanying claims may be performed by one or more modules or sub-modules. 
     It is understood that the specific order or hierarchy of steps, operations or processes disclosed is an illustration of exemplary approaches. Based upon design preferences, it is understood that the specific order or hierarchy of steps, operations or processes may be rearranged. Some of the steps, operations or processes may be performed simultaneously. Some or all of the steps, operations, or processes may be performed automatically, without the intervention of a user. The accompanying method claims, if any, present elements of the various steps, operations or processes in a sample order, and are not meant to be limited to the specific order or hierarchy presented. 
     The disclosure is provided to enable any person skilled in the art to practice the various aspects described herein. The disclosure provides various examples of the subject technology, and the subject technology is not limited to these examples. Various modifications to these aspects will be readily apparent to those skilled in the art, and the generic principles defined herein may be applied to other aspects. 
     All structural and functional equivalents to the elements of the various aspects described throughout this disclosure that are known or later come to be known to those of ordinary skill in the art are expressly incorporated herein by reference and are intended to be encompassed by the claims. Moreover, nothing disclosed herein is intended to be dedicated to the public regardless of whether such disclosure is explicitly recited in the claims. No claim element is to be construed under the provisions of 35 U.S.C. § 112, sixth paragraph, unless the element is expressly recited using the phrase “means for” or, in the case of a method claim, the element is recited using the phrase “step for.” Furthermore, to the extent that the term “include,” “have,” or the like is used, such term is intended to be inclusive in a manner similar to the term “comprise” as “comprise” is interpreted when employed as a transitional word in a claim. 
     The Title, Background, Summary, Brief Description of the Drawings and Abstract of the disclosure are hereby incorporated into the disclosure and are provided as illustrative examples of the disclosure, not as restrictive descriptions. It is submitted with the understanding that they will not be used to limit the scope or meaning of the claims. In addition, in the Detailed Description, it can be seen that the description provides illustrative examples and the various features are grouped together in various embodiments for the purpose of streamlining the disclosure. This method of disclosure is not to be interpreted as reflecting an intention that the claimed subject matter requires more features than are expressly recited in each claim. Rather, as the following claims reflect, inventive subject matter lies in less than all features of a single disclosed configuration or operation. The following claims are hereby incorporated into the Detailed Description, with each claim standing on its own as a separately claimed subject matter. 
     The claims are not intended to be limited to the aspects described herein, but are to be accorded the full scope consistent with the language claims and to encompass all legal equivalents. Notwithstanding, none of the claims are intended to embrace subject matter that fails to satisfy the requirement of 35 U.S.C. § 101, 102, or 103, nor should they be interpreted in such a way. Any unintended embracement of such subject matter is hereby disclaimed. 
     The scope of this disclosure encompasses all changes, substitutions, variations, alterations, and modifications to the example embodiments described or illustrated herein that a person having ordinary skill in the art would comprehend. The scope of this disclosure is not limited to the example embodiments described or illustrated herein. Moreover, although this disclosure describes and illustrates respective embodiments herein as including particular components, elements, feature, functions, operations, or steps, any of these embodiments may include any combination or permutation of any of the components, elements, features, functions, operations, or steps described or illustrated anywhere herein that a person having ordinary skill in the art would comprehend. Furthermore, reference in the appended claims to an apparatus or system or a component of an apparatus or system being adapted to, arranged to, capable of, configured to, enabled to, operable to, or operative to perform a particular function encompasses that apparatus, system, component, whether or not it or that particular function is activated, turned on, or unlocked, as long as that apparatus, system, or component is so adapted, arranged, capable, configured, enabled, operable, or operative.