1. A method of managing storage resources for a log-structured file system (LFS), the method comprising:
copying write block data from a plurality of used segments of the LFS;
writing the copied write block data to one or more free segments of the LFS;
indexing an unsafe free segments list (UFSL) with indications of the plurality of used segments after copying the write block data; and
preventing reuse of the plurality of used segments while the indications of the plurality of used segments are indexed in the UFSL.
2. The method of claim 1, further comprising:
in response to performing a scheduled synchronization operation, clearing the indications of the plurality of used segments from the UFSL; and
reusing at least one of the plurality of used segments that was previously indexed to the UFSL.
3. The method of claim 2, wherein:
the LFS is a flash storage system; and
the scheduled synchronization operation is a flush track cache operation that is scheduled to occur on a periodic basis to update a block manager of the flash storage system with current storage location information.
4. The method of claim 2, wherein reusing the at least one of the plurality of used segments which was previously indexed to the UFSL comprises:
writing new write block data to the at least one of the plurality of used segments which was previously indexed to the UFSL; and
updating a block manager with a storage location for the new write block data.
5. The method of claim 2, wherein performing the scheduled synchronization operation comprises mapping one or more logical storage addresses associated with the copied write block data to one or more physical storage addresses where the copied write block data is stored after writing the copied write block data to the one or more free segments of the LFS.
6. The method of claim 1, further comprising:
receiving new write block data after indexing the UFSL; and
in response to receiving the new write block data, consulting the UFSL to determine which segments of the LFS are indexed in the UFSL as unavailable segments.
7. The method of claim 6, further comprising:
identifying one or more free segments of the LFS that are not indexed in the UFSL as unavailable segments; and
writing the received new write block data to the identified one or more free segments of the LFS.
8. A method of writing page data in a non-overwrite storage system, the method comprising:
determining a number of required segments for writing the page data in the non-overwrite storage system;
consulting an unsafe free segments list (UFSL) to identify which free segments of the non-overwrite storage system should not be written to;
determining whether sufficient free segments are available for writing the page data in the non-overwrite storage system; and
in response to determining that sufficient free segments are available, writing the page data to data blocks of one or more free segments of the non-overwrite storage system.
9. The method of claim 8, wherein determining whether sufficient free segments are available, further comprises:
comparing the number of required segments for writing the page data in the non-overwrite storage system to a number of available free segments in the non-overwrite storage system, excluding free segments identified in the UFSL; and
determining whether the number of free segments in the non-overwrite storage system, excluding free segments identified in the UFSL, is equal to or exceeds the number of required segments for writing the page data in the non-overwrite storage system.
10. The method of claim 8, further comprising:
in response to determining that sufficient free segments are not available for writing the page data in the non-overwrite storage system, performing a synchronization operation to clear the UFSL; and
determining whether sufficient free segments are available for writing the page data in the non-overwrite storage system after performing the synchronization operation.
11. The method of claim 10, wherein:
the non-overwrite storage system is a flash storage system; and
the synchronization operation is a flush track cache operation that is scheduled to occur on a periodic basis to update a block manager of the flash storage system with current storage location information.
12. The method of claim 10, wherein in response to performing the synchronization operation and determining that sufficient free segments are available for writing the page data in the non-overwrite storage system, writing the page data to data blocks of one or more free segments of the non-overwrite storage system.
13. The method of claim 10, further comprising:
in response to performing the synchronization operation and determining that sufficient free segments are available for writing the page data in the non-overwrite storage system,
writing the page data to data blocks of one or more free segments which was previously identified in the UFSL.
14. The method of claim 10, further comprising:
in response to performing the synchronization operation and determining that sufficient free segments are not available for writing the page data in the non-overwrite storage system, performing a garbage collection operation to free up one or more segments of the non-overwrite storage system;
determining whether sufficient free segments are available for writing the page data in the non-overwrite storage system after performing the garbage collection operation; and
in response to performing the garbage collection operation and determining that sufficient free segments are available for writing the page data in the non-overwrite storage system, writing the page data to data blocks of one or more free segments of the non-overwrite storage system.
15. A non-overwrite storage system comprising:
a non-volatile storage component having a plurality of storage segments;
a volatile storage component having an unsafe free segments list (UFSL); and
a controller coupled to the non-volatile storage component and to the volatile storage component, wherein the controller is configured to:
copy page data from one or more used segments of the plurality of storage segments;
write the copied page data to one or more free segments of the plurality of storage segments;
index the UFSL with indications of the one or more used segments after copying the page data; and
prevent reuse of the one or more used segments while the indications of the one or more used segments are indexed in the UFSL.
16. The non-overwrite storage system of claim 15, wherein the controller is further configured to:
perform a synchronization operation that clears the indications of the one or more used segments from the UFSL; and
reuse at least one of the one or more used segments that was previously indexed to the UFSL.
17. The non-overwrite storage system of claim 16, wherein:
the non-overwrite storage system is a flash storage system; and
the synchronization operation is a flush track cache operation that is scheduled to occur on a periodic basis to update a block manager of the flash storage system with current storage location information.
18. The non-overwrite storage system of claim 16, wherein, as part of the reuse, the controller is configured to:
write new page data to the at least one of the one or more used segments which was previously indexed to the UFSL; and
update a block manager with a storage location for the new page data.
19. The non-overwrite storage system of claim 15, wherein the controller is further configured to:
receive new page data after indexing the UFSL; and
in response to receiving the new page data, consult the UFSL to determine which segments of the non-overwrite storage system are indexed in the UFSL as unavailable segments.
20. The non-overwrite storage system of claim 19, wherein the controller is further configured to:
identify one or more free segments of the non-overwrite storage system that are not indexed in the UFSL as unavailable segments; and
write the received new page data to the identified one or more free segments of the non-overwrite storage system.
The claims below are in addition to those above.
All refrences to claim(s) which appear below refer to the numbering after this setence.
1. A computer-readable medium which stores a program for controlling an image forming apparatus, the program causing a computer to, in a virtual space providing system in which a computer that provides a virtual space and an image forming apparatus are connected via a network:
determine whether a print command to a virtual image forming apparatus defined in the virtual space is a command to create a virtual output product by the virtual image forming apparatus, or a command to print an output product by the image forming apparatus that is linked to the virtual image forming apparatus;
simulate printing of an output product by the image forming apparatus by creating virtual printed matter in the virtual space, when it is determined that the command is to create a virtual output product by the virtual image forming apparatus; and
output the print command to the image forming apparatus, when it is determined that the command is to print an output product by the image forming apparatus that is linked to the virtual image forming apparatus.
2. The medium which stores the program according to claim 1, the program further causing a computer to simulate displaying of the status of the image forming apparatus.
3. The medium which stores the program according to claim 2, wherein the status of the image forming apparatus includes at least one of termination of print processing based on the print command and an error.
4. The medium which stores the program according to claim 1, wherein when it is determined that the command is to create a virtual output product by a first virtual image forming apparatus that is different from the virtual image forming apparatus, virtual printed matter is created by the first virtual image forming apparatus.
5. The medium which stores the program according to claim 4, wherein when it is determined that the command is to create an output product by a first image forming apparatus that is different from the image forming apparatus that is linked to the virtual image forming apparatus, the print command is output to the first image forming apparatus.
6. The medium which stores the program according to claim 1, wherein the simulated printing by the virtual image forming apparatus is not charged for, whereas the printing by the image forming apparatus based on the print command is charged for.
7. A virtual space providing system in which a computer that provides a virtual space and an image forming apparatus are connected via a network, comprising:
a determination unit configured to determine whether a print command to a virtual image forming apparatus defined in the virtual space is a command to create a virtual output product by the virtual image forming apparatus, or a command to print an output product by the image forming apparatus that is linked to the virtual image forming apparatus;
a simulation unit configured to simulate printing of an output product by the image forming apparatus by creating virtual printed matter in the virtual space, when it is determined that the command is to create a virtual output product by the virtual image forming apparatus as a result of the determination by the determination unit; and
an output unit configured to output the print command to the image forming apparatus, when it is determined that the command is to print an output product by the image forming apparatus that is linked to the virtual image forming apparatus.
8. A method for controlling an image forming apparatus that is executed in a virtual space providing system in which a computer that provides a virtual space and an image forming apparatus are connected via a network, the method comprising:
a determination step of determining whether a print command to a virtual image forming apparatus defined in the virtual space is a command to create a virtual output product by the virtual image forming apparatus, or a command to print an output product by the image forming apparatus that is linked to the virtual image forming apparatus;
a simulation step of simulating, printing of an output product by the image forming apparatus by creating virtual printed matter in the virtual space, when it is determined that the command is to create a virtual output product by the virtual image forming apparatus as a result of the determination in the determination step; and
an output step of outputting the print command to the image forming apparatus, when it is determined that the command is to print an output product by the image forming apparatus that is linked to the virtual image forming apparatus.