Abstract:
Provided are a method, system, and program for restoring a source file referenced by multiple file names to a restore file. An operation is processed to restore a source file having a first file name to a restore file, wherein the source file is in a state of being accessed by a process. A determination is made as to whether a second file name references the source file. A first temporary file name and a second temporary file name are created that both reference the restore file in response to determining that the second file name references the source file. The first temporary file name is renamed to the first file name and the second temporary file name is renamed to the second file name. After the renaming of the first and second temporary file names, the first and second file names reference the restore file.

Description:
BACKGROUND OF THE INVENTION 
     1. Field of the Invention 
     The present invention relates to a method, system, and article of manufacture for restoring a source file referenced by multiple file names to a restore file. 
     2. Description of the Related Art 
     A file in a file system referenced by a file name may be replaced, restored or updated to a restore file by having the file name of the file reference the restore file. However, if the file is being accessed, then a temporary file name is created pointing to the restore file. During a reboot operation, the file name to replace is deleted and the temporary file name is changed to the original file name to complete the restore operation. 
     Certain operating systems allow multiple file names to be used to reference a file. For instance, in certain Microsoft® Windows® operating systems, a file may have multiple names that reference the file, referred to as hard links and soft or symbolic links. The master file table of the operating system may include an entry for each file that includes all the names that reference that file. (Microsoft and Windows are registered trademarks of the Microsoft Corporation in the United States and other countries). 
     There is a need in the art for techniques to restore or replace a file that may be referenced by multiple file names. 
     SUMMARY 
     Provided are a method, system, and program for restoring a source file referenced by multiple file names to a restore file. An operation is processed to restore a source file having a first file name to a restore file, wherein the source file is in a state of being accessed by a process. A determination is made as to whether a second file name references the source file. A first temporary file name and a second temporary file name are created that both reference the restore file in response to determining that the second file name references the source file. The first temporary file name is renamed to the first file name and the second temporary file name is renamed to the second file name. After the renaming of the first and second temporary file names, the first and second file names reference the restore file. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         FIG. 1  illustrates an embodiment of a computing environment. 
         FIG. 2  illustrates information maintained for a file in a master file table of an operating system as known in the prior art. 
         FIGS. 3   a ,  3   b ,  3   c  illustrate a series of operations to restore a source file to a restore file. 
         FIGS. 4 and 5  illustrate an embodiment of operations to restore a source file to a restore file. 
     
    
    
     DETAILED DESCRIPTION 
       FIG. 1  illustrates an embodiment of a computing environment. A system  2  includes one or more processors  4  and a memory  6  including an operating system  8 , application program files  10 , and file system  12 , such as a hierarchical file system, executed by the processor  4 . The operating system  8  maintains a master file table  14  or other similar file directory structure or index that includes an entry for each file created in the file system  12 . A restore operation  16  comprises a program to update or replace a current file in the file system  12  with another file. The restore operation  16  may be part of the operating system  8  or other program component. A boot registry  18  includes commands to perform as part of hard or soft reboot operation. The commands in the boot registry  16  may include a command to delete a file and then rename another file to the name of the deleted file. For instance, if the restore operation  16  is invoked to replace (e.g., restore or update the file) a source file currently in use by the application programs  10  or operating system  8 , then the restore file, which comprises the file that will replace the source file, is assigned a temporary file name. The restore operation  16  places commands in the boot registry  16  that are performed upon rebooting to delete the file to replace and then rename the temporary file name to the name of the file being replaced to complete the restore or update operation. The system  2  may be coupled to a storage  22  having files that when accessed by the programs  8 ,  10 , and  12  are loaded into the memory  6 . A boot operation  20  comprises the process or component that executes booting operations, including commands placed in the boot registry  18 . 
     The system  2  may comprise a suitable computational device known in the art, such as a server, desktop computer, workstation, mainframe, hand held computing device, telephony device, etc. The storage  22  may be implemented in a storage system known in the art, such as a storage system including a plurality of storage devices, e.g., interconnected hard disk drives (a Redundant Array of Independent Disks (RAID), Just a Bunch of Disks (JBOD), Direct Access Storage Device (DASD), disks connected in a loop configuration (serial loop, Fibre Channel Arbitrated Loop), a single storage device, a tape library, an optical library, a network attached storage (NAS), etc. 
       FIG. 2  illustrates information maintained for a file entry  50  in the master file table  14  in a manner known in the art. The file entry  50  includes a file name  52 ; a file location  54  comprising the location where the file  52  is located in the storage device  20 ; optionally one or more additional file names  56   a  . . .  56   n  if multiple file names reference the single file, such as the case with hard links; a name counter indicating the number of file names that reference the file identified by the entry  50 ; and other file attributes  58 , such as read-only, hidden, and system flags, creation, accessed, and modified time stamps, etc. In the embodiment of  FIG. 2 , all the file names are maintained in one file entry  50 . In an alternative embodiment, there may be separate file entries  50  for the different file names or hard links referencing a single file. 
       FIGS. 3   a ,  3   b , and  3   c  illustrate operations to replace a source file  70  referenced by file names F 1  and F 2  with a restore file  72  as part of a file update or restore operation. In  FIG. 3   a , the original source file  70  is referenced by file names F 1  and F 2 , which may comprise hard links. After the restore, if the source file  70  is currently being accessed, e.g., locked,  FIG. 3   b  illustrates that the file names F 1  and F 2  reference the original source file  70  and temporary file names F 1 .tmp and F 2 .tmp both reference the restore file  72 .  FIG. 3   c  illustrates that after a reboot or other operation releasing the source file  70 , the source file  70  and file names (F 1  and F 2 ) are deleted and the temporary file names (F 1 .tmp and F 2 .tmp) referencing the restore file  72  are renamed to the original file names F 1  and F 2 . Although  FIGS. 3   a ,  3   b , and  3   c  illustrates operations with respect to two file names that reference the source file  70  and restore file  72 , there may be any number of multiple names that reference the original source file  70  and that are updated to reference the restore file  72 . 
       FIG. 4  illustrates an embodiment of operations performed by the restore operation  16  to replace a source file  70  with a restore file  72 , where the restore file  72  may comprise a backup copy being restored, a newer version of the source file  70 , etc. The restore operation  16  updates the one or more file names used to access the original source file to reference the restore file  72 . Upon initiating (at block  100 ) the restore operation  16  to restore the source file  70  to a restore file  72 , if (at block  102 ) the source file  70  is not being accessed, then the restore operation  16  may replace (at block  104 ) the source file  70  with the restore file  72 . This may be accomplished by changing the file location  54  in the file entry  50  for the source file  70  to reference the new restore file  72  and then delete the source file  70 . If (at block  102 ) the source file  70  is being accessed and if (at block  106 ) only one file name  52  references the source file  70 , then the restore operation  16  creates (at block  108 ) a temporary file name (e.g., F 1 .tmp) that references the restore file  72 . The temporary file name may be created by creating a new file entry  50  having the temporary file name  52  whose file location  54  references the restore file  72 . One or more entries are added (at block  110 ) to the boot registry  18  indicating an operation to delete the source file  70  and rename the temporary file name (e.g., F 1 .tmp) to the source file name (F 1 ) upon the next soft or hard reboot or restart operation. In an alternative embodiment, the commands to delete the source file  70  and rename the temporary file name may be performed when the source file  70  is released and available, without rebooting the system  2 . 
     If (at block  106 ) multiple file names, e.g., a first and second file names, reference the source file  70  (there are multiple file names  52 ,  56   a  . . .  56   n  in the file entry  52  for the source file  70 ), then the restore operation  16  creates (at block  112 ) a first temporary file name (F 1 .tmp) and a second temporary file name (F 2 .tmp) that both reference the restore file  72 . If there are more than two file names referencing the source file, then the operations described as performed with respect to the first and second temporary file names would also be performed for any additional file names that reference the source file. The restore operation  16  adds (at block  114 ) one or more entries to the boot registry  18  of commands to delete the file names that reference the source file  70 , e.g., the first (F 1 ) and second file names (F 2 ), and rename the temporary file names, e.g., first (F 1 .tmp) and second (F 2 .tmp) temporary file names, which reference the restore file  72 , to the source file names initially referencing the source file, e.g., first and second file names (F 1  and F 2 ). In certain embodiments, the file name delete operation may delete the indicated file names  52 ,  56   a  . . .  56   n  from the file entry  50  for the source file  70 . If the file entry  50  referencing the source file  70  does not include any more file names  52 ,  56   a  . . .  56   n  after the delete operation, i.e., the name counter  58  is zero, then the file entry  50  for the source file  70  may be deleted. The restore operation  16  may invoke operating system  8  application program interfaces (APIs) to determine the name references, e.g., hard links, for a file. 
       FIG. 5  illustrates an embodiment of operations performed by the boot operation  20 , which may be part of the operating system  8  or another component, during a reboot operation to execute the commands in the boot registry  18 , i.e., the commands initialized by the restore operation  16 . Upon initiating (at block  150 ) a reboot operation  20 , the boot operation  20  accesses (at block  152 ) the boot registry  18  commands. For each command to delete a file (e.g., first (F 1 ) and second (F 2 ) file names), the reboot operation  20  executes the commands to delete (at block  154 ) the source files  70  referenced by the deleted file names. A file may be deleted by removing the file names specified in the command from one or more file entries  50  having file name fields  52 ,  56   a  . . .  56   n  matching the file name to delete. If (at block  156 ) there are no file names  52 ,  56   a  . . .  56   n  remaining in the file entry  50  from which the file names are deleted, then the file entry  50  is removed (at block  158 ). From block  156  or  158 , control proceeds to block  160  to perform (at block  160 ) the rename operation for each rename command to rename a file (e.g., first (F 1 .tmp) and second (F 2 .tmp) temporary file names). The rename operations rename the specified file names (e.g., first (F 1 .tmp) and second (F 1 .tmp) temporary file names) to the specified new name (e.g., first (F 1 ) and second (F 1 ) file names). In certain embodiments, a file may be renamed by updating the file name field  52 ,  56   a  . . .  56   n  in the file entry  50  having the file names to the new name. 
     Described embodiments provide techniques to perform a restore operation to restore a source file referenced with multiple names to a restore file such that the multiple file names referencing the source file are modified to reference the restore file. 
     Additional Embodiment Details 
     The described operations may be implemented as a method, apparatus or article of manufacture using standard programming and/or engineering techniques to produce software, firmware, hardware, or any combination thereof. The described operations may be implemented as code maintained in a “computer readable medium”, where a processor may read and execute the code from the computer readable medium. A computer readable medium may comprise media such as magnetic storage medium (e.g., hard disk drives, floppy disks, tape, etc.), optical storage (CD-ROMs, DVDs, optical disks, etc.), volatile and non-volatile memory devices (e.g., EEPROMs, ROMs, PROMs, RAMs, DRAMs, SRAMs, Flash Memory, firmware, programmable logic, etc.), etc. The code implementing the described operations may further be implemented in hardware logic in a hardware device (e.g., an integrated circuit chip, Programmable Gate Array (PGA), Application Specific Integrated Circuit (ASIC), etc.). Still further, the code implementing the described operations may be implemented in “transmission signals”, where transmission signals may propagate through space or through a transmission media, such as an optical fiber, copper wire, etc. The transmission signals in which the code or logic is encoded may further comprise a wireless signal, satellite transmission, radio waves, infrared signals, Bluetooth, etc. The transmission signals in which the code or logic is encoded is capable of being transmitted by a transmitting station and received by a receiving station, where the code or logic encoded in the transmission signal may be decoded and stored in hardware or a computer readable medium at the receiving and transmitting stations or devices. An “article of manufacture” comprises computer readable medium, hardware logic, and/or transmission signals in which code may be implemented. A device in which the code implementing the described embodiments of operations is encoded may comprise a computer readable medium or hardware logic. Of course, those skilled in the art will recognize that many modifications may be made to this configuration without departing from the scope of the present invention, and that the article of manufacture may comprise suitable information bearing medium known in the art. 
     The terms “an embodiment”, “embodiment”, “embodiments”, “the embodiment”, “the embodiments”, “one or more embodiments”, “some embodiments”, and “one embodiment” mean “one or more (but not all) embodiments of the present invention(s)” unless expressly specified otherwise. 
     The terms “including”, “comprising”, “having” and variations thereof mean “including but not limited to”, unless expressly specified otherwise. 
     The enumerated listing of items does not imply that any or all of the items are mutually exclusive, unless expressly specified otherwise. 
     The terms “a”, “an” and “the” mean “one or more”, unless expressly specified otherwise. 
     The variables, e.g., “a”, “n”, etc., when used to represent a variable number of an element may indicate any number of instances of the element, and may indicate different integer numbers when used with different elements. 
     Devices that are in communication with each other need not be in continuous communication with each other, unless expressly specified otherwise. In addition, devices that are in communication with each other may communicate directly or indirectly through one or more intermediaries. 
     A description of an embodiment with several components in communication with each other does not imply that all such components are required. On the contrary a variety of optional components are described to illustrate the wide variety of possible embodiments of the present invention. 
     Further, although process steps, method steps, algorithms or the like may be described in a sequential order, such processes, methods and algorithms may be configured to work in alternate orders. In other words, any sequence or order of steps that may be described does not necessarily indicate a requirement that the steps be performed in that order. The steps of processes described herein may be performed in any order practical. Further, some steps may be performed simultaneously. 
     When a single device or article is described herein, it will be readily apparent that more than one device/article (whether or not they cooperate) may be used in place of a single device/article. Similarly, where more than one device or article is described herein (whether or not they cooperate), it will be readily apparent that a single device/article may be used in place of the more than one device or article or a different number of devices/articles may be used instead of the shown number of devices or programs. The functionality and/or the features of a device may be alternatively embodied by one or more other devices which are not explicitly described as having such functionality/features. Thus, other embodiments of the present invention need not include the device itself. 
     The illustrated operations of  FIGS. 4 and 5  show certain events occurring in a certain order. In alternative embodiments, certain operations may be performed in a different order, modified or removed. Moreover, steps may be added to the above described logic and still conform to the described embodiments. Further, operations described herein may occur sequentially or certain operations may be processed in parallel. Yet further, operations may be performed by a single processing unit or by distributed processing units. 
     The foregoing description of various embodiments of the invention has been presented for the purposes of illustration and description. It is not intended to be exhaustive or to limit the invention to the precise form disclosed. Many modifications and variations are possible in light of the above teaching. It is intended that the scope of the invention be limited not by this detailed description, but rather by the claims appended hereto. The above specification, examples and data provide a complete description of the manufacture and use of the composition of the invention. Since many embodiments of the invention can be made without departing from the spirit and scope of the invention, the invention resides in the claims hereinafter appended.