WRITE BACK CACHING OF BOOT DISK IN A UEFI ENVIRONMENT
Write back caching of Operating System (OS) boot data in a UEFI environment is disclosed. One embodiment is an apparatus that includes a non-volatile memory, a storage device, and a processor. The non-volatile memory caches boot data for an OS. The storage device stores the OS. The processor receives a write request for the storage device, and determines whether the write request modifies boot data accessed within a UEFI pre-OS boot environment. The processor directs the write request to the storage device responsive to determining that the write request modifies boot data accessed within the UEFI pre-OS boot environment, and directs the write request to the non-volatile memory responsive to determining that the write request does not modify boot data accessed within the UEFI pre-OS boot environment.
1 . An apparatus comprising:
a non-volatile memory operable to cache boot data for an Operating System (OS);
a storage device operable to store the OS; and
a processor operable to receive a write request for the storage device, to determine whether the write request modifies boot data accessed within a Unified Extensible Firmware Interface (UEFI) pre-OS boot environment, and to:
direct the write request to the storage device responsive to determining that the write request modifies boot data accessed within the UEFI pre-OS boot environment; and
direct the write request to the non-volatile memory responsive to determining that the write request does not modify boot data accessed within the UEFI pre-OS boot environment.
2 . The apparatus of claim 1 wherein:
the UEFI pre-OS boot environment comprises boot data accessed prior to a UEFI ExitBootServices( ) function.
3 . The apparatus of claim 1 wherein:
the storage device is a Hard Disk Drive; and
the non-volatile memory is a Solid State Disk.
4 . The apparatus of claim 1 wherein:
the processor is further operable to identify an OS boot file on the storage device accessed within the UEFI pre-OS boot environment, to identify Logical Block Addresses (LBAs) for the boot file, and to determine that the write request modifies boot data accessed within the UEFI pre-OS boot environment if at least one LBA for the boot file corresponds to an LBA for the write request.
5 . The apparatus of claim 1 wherein:
the processor is further operable to identify OS boot files on the storage device accessed within the UEFI pre-OS boot environment, to identify Logical Block Addresses (LBAs) for the boot files, and to determine that the write request does not modify boot data accessed within the UEFI pre-OS boot environment if no LBAs for the boot files corresponds to LBAs for the write request.
6 . The apparatus of claim 1 wherein:
the processor is further operable to identify an OS boot file on the storage device accessed outside of the UEFI pre-OS boot environment, to identify Logical Block Addresses (LBAs) for the boot file, and to determine that the write request does not modify boot data accessed within the UEFI pre-OS boot environment if at least one LBA for the boot file corresponds to an LBA for the write request.
7 . The apparatus of claim 1 wherein:
the processor is further operable to identify OS boot files on the storage device accessed outside of the UEFI pre-OS boot environment, to identify Logical Block Addresses (LBAs) for the boot files, and to determine that the write request does not modify boot data accessed within the UEFI pre-OS boot environment if no LBAs for the boot files corresponds to LBAs for the write request.
8 . A method comprising:
receiving a write request for a storage device that stores an Operating System (OS);
determining whether the write request modifies boot data accessed within a Unified Extensible Firmware Interface (UEFI) pre-OS boot environment;
directing the write request to the storage device responsive to determining that the write request modifies boot data accessed within the UEFI pre-OS boot environment; and
directing the write request to a non-volatile memory that caches boot data for the OS responsive to determining that the write request does not modify boot data accessed within the UEFI pre-OS boot environment.
9 . The method of claim 8 wherein:
the UEFI pre-OS boot environment comprises boot data accessed prior to a UEFI ExitBootServices( ) function.
10 . The method of claim 8 wherein:
the storage device is a Hard Disk Drive; and
the non-volatile memory is a Solid State Disk.
11 . The method of claim 8 wherein:
the method further comprises:
identifying an OS boot file on the storage device accessed within the UEFI pre-OS boot environment; and
identifying Logical Block Addresses (LBAs) for the boot file; and
determining whether the write request modifies boot data further comprises:
determining that the write request modifies boot data accessed within the UEFI pre-OS boot environment if at least one LBA for the boot file corresponds to an LBA for the write request.
12 . The method of claim 8 wherein:
the method further comprises:
identifying OS boot files on the storage device accessed within the UEFI pre-OS boot environment; and
identifying Logical Block Addresses (LBAs) for the boot files; and
determining whether the write request modifies boot data further comprises:
determining that the write request does not modify boot data accessed within the UEFI pre-OS boot environment if no LBAs for the boot files corresponds to LBAs for the write request.
13 . The method of claim 8 wherein:
the method further comprises:
identifying an OS boot file on the storage device accessed outside of the UEFI pre-OS boot environment; and
identifying Logical Block Addresses (LBAs) for the boot file; and
determining whether the write request modifies boot data further comprises:
determining that the write request does not modify boot data accessed within the UEFI pre-OS boot environment if at least one LBA for the boot file corresponds to an LBA for the write request.
14 . The method of claim 8 wherein:
the method further comprises:
identifying OS boot files on the storage device accessed outside of the UEFI pre-OS boot environment; and
identifying Logical Block Addresses (LBAs) for the boot files; and
determining whether the write request modifies boot data further comprises:
determining that the write request does not modify boot data accessed within the UEFI pre-OS boot environment if no LBAs for the boot files corresponds to LBAs for the write request.
15 . A non-transitory computer readable medium embodying instructions which, when executed by a processor, direct the processor to:
receive a write request for a storage device that stores an Operating System (OS);
determine whether the write request modifies boot data accessed within a Unified Extensible Firmware Interface (UEFI) pre-OS boot environment;
direct the write request to the storage device responsive to determining that the write request modifies boot data accessed within the UEFI pre-OS boot environment; and
direct the write request to a non-volatile memory that caches boot data for the OS responsive to determining that the write request does not modify boot data accessed within the UEFI pre-OS boot environment.
16 . The non-transitory computer readable medium of claim 15 wherein:
the UEFI pre-OS boot environment comprises boot data accessed prior to a UEFI ExitBootServices( ) function.
17 . The non-transitory computer readable medium of claim 15 wherein:
the instructions further direct the processor to:
identify an OS boot file on the storage device accessed within the UEFI pre-OS boot environment; and
identify Logical Block Addresses (LBAs) for the boot file; and
instructions that direct the processor to determine whether the write request modifies boot data further comprise instructions that direct the processor to:
determine that the write request modifies boot data accessed within the UEFI pre-OS boot environment if at least one LBA for the boot file corresponds to an LBA for the write request.
18 . The non-transitory computer readable medium of claim 15 wherein:
the instructions further direct the processor to:
identify OS boot files on the storage device accessed within the UEFI pre-OS boot environment; and
identify Logical Block Addresses (LBAs) for the boot files; and
instructions that direct the processor to determine whether the write request modifies boot data further comprise instructions that direct the processor to:
determine that the write request does not modify boot data accessed within the UEFI pre-OS boot environment if no LBAs for the boot files corresponds to LBAs for the write request.
19 . The non-transitory computer readable medium of claim 15 wherein:
the instructions further direct the processor to:
identify an OS boot file on the storage device accessed outside of the UEFI pre-OS boot environment; and
identify Logical Block Addresses (LBAs) for the boot file; and
instructions that direct the processor to determine whether the write request modifies boot data further comprise instructions that direct the processor to:
determine that the write request does not modify boot data accessed within the UEFI pre-OS boot environment if at least one LBA for the boot file corresponds to an LBA for the write request.
20 . The non-transitory computer readable medium of claim 15 wherein:
the instructions further direct the processor to:
identify OS boot files on the storage device accessed outside of the UEFI pre-OS boot environment; and
identify Logical Block Addresses (LBAs) for the boot files; and
instructions that direct the processor to determine whether the write request modifies boot data further comprise instructions that direct the processor to:
determine that the write request does not modify boot data accessed within the UEFI pre-OS boot environment if no LBAs for the boot files corresponds to LBAs for the write request.