Notice of Pre-AIA or AIA Status
The present application, filed on or after March 16, 2013, is being examined under the first inventor to file provisions of the AIA .
DETAILED ACTION
Continued Examination Under 37 CFR 1.114
A request for continued examination under 37 CFR 1.114, including the fee set forth in 37 CFR 1.17(e), was filed in this application after final rejection. Since this application is eligible for continued examination under 37 CFR 1.114, and the fee set forth in 37 CFR 1.17(e) has been timely paid, the finality of the previous Office action has been withdrawn pursuant to 37 CFR 1.114. Applicant's submission filed on 4/15/2026 has been entered.
As per the instant application having Application No. 18/659,331, the amendments filed on 3/12/2026 (where claims 1, 7, 10, 12-13, 15, 18 and 20 were amended) and 4/15/2026 (further amending claims 7 and 9) are herein acknowledged. Claims 1-20 are pending.
In the response to this Office action, the Examiner respectfully requests that support be shown for language added to any original claims on amendment and any new claims. That is, indicate support for newly added claim language by specifically pointing to page(s) and line numbers in the specification and/or drawing figure(s). This will assist the Examiner in prosecuting this application.
Examiner cites particular columns and line numbers in the references as applied to the claims below for the convenience of the applicant. Although the specified citations are representative of the teachings in the art and are applied to the specific limitations within the individual claim, other passages and figures may apply as well. It is respectfully requested that, in preparing responses, the applicant fully consider the references in entirety as potentially teaching all or part of the claimed invention, as well as the context of the passage as taught by the prior art or disclosed by the examiner.
REJECTIONS BASED ON PRIOR ART
Double Patenting
The nonstatutory double patenting rejection is based on a judicially created doctrine grounded in public policy (a policy reflected in the statute) so as to prevent the unjustified or improper timewise extension of the “right to exclude” granted by a patent and to prevent possible harassment by multiple assignees. A nonstatutory obviousness-type double patenting rejection is appropriate where the conflicting claims are not identical, but at least one examined application claim is not patentably distinct from the reference claim(s) because the examined application claim is either anticipated by, or would have been obvious over, the reference claim(s). See, e.g., In re Berg, 140 F.3d 1428, 46 USPQ2d 1226 (Fed. Cir. 1998); In re Goodman, 11 F.3d 1046, 29 USPQ2d 2010 (Fed. Cir. 1993); In re Longi, 759 F.2d 887, 225 USPQ 645 (Fed. Cir. 1985); In re Van Ornum, 686 F.2d 937, 214 USPQ 761 (CCPA 1982); In re Vogel, 422 F.2d 438, 164 USPQ 619 (CCPA 1970); and In re Thorington, 418 F.2d 528, 163 USPQ 644 (CCPA 1969).
A timely filed terminal disclaimer in compliance with 37 CFR 1.321(c) or 1.321(d) may be used to overcome an actual or provisional rejection based on a nonstatutory double patenting ground provided the conflicting application or patent either is shown to be commonly owned with this application, or claims an invention made as a result of activities undertaken within the scope of a joint research agreement.
Effective January 1, 1994, a registered attorney or agent of record may sign a terminal disclaimer. A terminal disclaimer signed by the assignee must fully comply with 37 CFR 3.73(b).
Note that (MPEP 804.0 (I.B.1)) states: A complete response to a nonstatutory double patenting (NDP) rejection is either a reply by applicant showing that the claims subject to the rejection are patentably distinct from the reference claims or the filing of a terminal disclaimer in accordance with 37 CFR 1.321 in the pending application(s) with a reply to the Office action (see MPEP § 1490 for a discussion of terminal disclaimers). Such a response is required even when the nonstatutory double patenting rejection is provisional.
As filing a terminal disclaimer, or filing a showing that the claims subject to the rejection are patentably distinct from the reference application’s claims, is necessary for further consideration of the rejection of the claims, such a filing should not be held in abeyance. Only objections or requirements as to form not necessary for further consideration of the claims may be held in abeyance until allowable subject matter is indicated. Therefore, an application must not be allowed unless the required compliant terminal disclaimer(s) is/are filed and/or the withdrawal of the nonstatutory double patenting rejection(s) is made of record by the examiner. See MPEP § 804.02, subsection VI, for filing terminal disclaimers required to overcome nonstatutory double patenting rejections in applications filed on or after June 8, 1995.
Claims 1-20 are rejected on the ground of nonstatutory obviousness-type double patenting as being unpatentable over claims 1-20 of U.S. Patent # 11983119 (Corresponding to Application No. 17569434) in view of Atkisson et al. (US 2012/0239860). Although the conflicting claims are not identical, they are not patentably distinct from each other because the claims in the patent in view of Atkisson disclose/obviate the subject matter of the claims in the instant application.
Claims of the instant application are compared to claims of the patent in the following table:
Instant Application
U.S. Patent # 11983119 (Corresponding to Application No. 17569434)
1. A computer storage device, comprising: a host interface; a controller; non-volatile storage media; and firmware containing instructions which, when executed by the controller, instruct the controller to at least:
store a namespace map mapping blocks of logical block addresses in a namespace to blocks, based on a predetermined block size, from a logical address capacity of the non-volatile storage media; adjust the namespace map to change a size of the namespace, wherein the size of the namespace is not a multiple of the predetermined block size at least before the namespace map is adjusted or after the namespace map is adjusted; and
translate logical addresses in the namespace to physical addresses for the non-volatile storage media using the namespace map.
2. The computer storage device of claim 1, wherein the namespace map is adjusted in response to a request for a host to increase the size of the namespace.
3. The computer storage device of claim 2, wherein the namespace map is adjusted by adding an identifier of a block from the logical address capacity for association with the namespace.
4. The computer storage device of claim 1, wherein the namespace map is adjusted in response to a request for a host to reduce the size of the namespace.
5. The computer storage device of claim 4, wherein the namespace map is adjusted by removing an identifier of a block from the logical address capacity from association with the namespace.
6. The computer storage device of claim 1, wherein the namespace map is adjusted in response to an increase in demand of allocated capacity of the namespace.
7. The computer storage device of claim 1, wherein the logical address capacity of the non-volatile storage media is divided into predetermined blocks having the predetermined block size.
8. The computer storage device of claim 7, wherein the predetermined block size is a power of two.
9. The computer storage device of claim 7, wherein before the size of the namespace is changed, the namespace has a first block having a size smaller than the predetermined block size, and the first block is mapped by the namespace map to a portion of a first particular block among the predetermined blocks; and wherein after the size of the namespace is changed, the size of the first block is increased, and the first block is mapped by the namespace map to at least a portion of a second particular block among the predetermined blocks.
10. The computer storage device of claim 9, wherein the second particular block is different from the first particular block.
11. The computer storage device of claim 10, wherein the namespace map is adjusted via: copying data from the portion of the first particular block to a corresponding portion of the second particular block; and replacing in the namespace map an identifier of the portion of the first particular block with an identifier of the corresponding portion of the second particular block.
12. The computer storage device of claim 10, wherein the namespace map is adjusted via: adding to the namespace map an identifier of a first portion of the second particular block, wherein the at least a portion of the second particular block includes the first portion of the second particular block and a second portion of the second particular block; and after the size of the namespace has changed: copying, in a background process, data from the portion of the first particular block to a second portion of the second particular block; and replacing in the namespace map an identifier of the portion of the first particular block and the identifier of the first portion of the second particular block with an identifier of the corresponding portion of the second particular block.
13. The computer storage device of claim 9, wherein after the size of the namespace is changed, the size of the first block is increased to the predetermined block size.
14. The computer storage device of claim 13, wherein the namespace map is adjusted via: replacing in the namespace map an identifier of the portion of the first particular block with an identifier of the second particular block.
A method implemented in a computer storage device, the method comprising:
storing a namespace map mapping blocks of logical block addresses in a namespace to blocks, based on a predetermined block size, from a logical address capacity of non-volatile storage media of the computer storage device;
adjusting the namespace map to change a size of the namespace, wherein the size of the namespace is not a multiple of the predetermined block size at least before or after the adjusting; and
translating logical addresses in the namespace to physical addresses for the non-volatile storage media using the namespace map.
16. The method of claim 15, wherein the adjusting of the namespace map is in response to one of: a request for a host to increase the size of the namespace; a request for a host to decrease the size of the namespace; and a determination to increase an allocated portion of the namespace, wherein the size of the namespace is a size of the allocated portion.
17. The method of claim 16, wherein the adjusting the namespace map includes at least one of: adding an identifier of a block from the logical address capacity of the non-volatile storage media to the namespace map; and removing an identifier of a block in the logical address capacity of the non-volatile storage media to the namespace map.
18. The method of claim 17, wherein the logical address capacity of the non-volatile storage media is divided into predetermined blocks having a same, predetermined block size that is a power of two; and each of the blocks from the logical address capacity of the non-volatile storage media mapped for the namespace is either one of the predetermined blocks or a portion of one of the predetermined block.
19. The method of claim 18, further comprising: adjusting the namespace map to remap logical block addresses in a namespace to contiguous ones of the predetermined blocks.
20. A non-transitory computer storage medium storing instructions which, when executed by a controller of a computer storage device, cause the controller to perform a method, the method comprising:
storing a namespace map mapping blocks of logical block addresses in a namespace to blocks, based on a predetermined block size, from a logical address capacity of non-volatile storage media of the computer storage device; adjusting the namespace map to change a size of the namespace, wherein the size of the namespace is not a multiple of the predetermined block size at least before or after the adjusting; and
translating logical addresses in the namespace to physical addresses for the non-volatile storage media using the namespace map.
1. A computer storage device, comprising: a host interface; a controller; non-volatile storage media; and firmware containing instructions which, when executed by the controller, instruct the controller to at least:
store a namespace map mapping blocks of logical block addresses in a namespace to: blocks, of a same, predetermined block size, allocated from a logical address capacity of the non-volatile storage media; and a further block, of a size smaller than the predetermined block size, allocated from the logical address capacity of the non-volatile storage media;
adjust the namespace map to change a size of the namespace; and
translate logical addresses in the namespace to physical addresses for the non-volatile storage media using the namespace map.
2. The computer storage device of claim 1, wherein the namespace map is adjusted in response to a request for a host to increase the size of the namespace.
3. The computer storage device of claim 2, wherein the namespace map is adjusted by adding an identifier of a block from the logical address capacity for association with the namespace.
4. The computer storage device of claim 1, wherein the namespace map is adjusted in response to a request for a host to reduce the size of the namespace.
5. The computer storage device of claim 4, wherein the namespace map is adjusted by removing an identifier of a block from the logical address capacity from association with the namespace.
6. The computer storage device of claim 1, wherein the namespace map is adjusted in response to an increase in demand of allocated capacity of the namespace.
7. The computer storage device of claim 1, wherein the logical address capacity of the non-volatile storage media is not a multiple of the predetermined block size.
8. The computer storage device of claim 7, wherein the predetermined block size is a power of two.
9. The computer storage device of claim 1, wherein before the size of the namespace is changed, the namespace has a respective block having a size smaller than the predetermined block size, and the respective block is mapped by the namespace map to the further block allocated as a portion of a first particular block of predetermined blocks of the predetermined block size in the logical address capacity of the non-volatile storage media; and wherein after the size of the namespace is changed, the size of the respective block is increased, and the respective block is mapped by the namespace map to at least a portion of a second particular block of the predetermined blocks.
10. The computer storage device of claim 9, wherein the second particular block is different from the first particular block.
11. The computer storage device of claim 10, wherein the namespace map is adjusted via: copying data from the portion of the first particular block to a corresponding portion of the second particular block; and replacing in the namespace map an identifier of the portion of the first particular block with an identifier of the corresponding portion of the second particular block.
12. The computer storage device of claim 10, wherein the namespace map is adjusted via: adding to the namespace map an identifier of a first portion of the second particular block, wherein the at least a portion of the second particular block includes the first portion of the second particular block and a second portion of the second particular block; and after the size of the namespace has changed: copying, in a background process, data from the portion of the first particular block to a second portion of the second particular block; and replacing in the namespace map an identifier of the portion of the first particular block and the identifier of the first portion of the second particular block with an identifier of the corresponding portion of the second particular block.
13. The computer storage device of claim 9, wherein after the size of the namespace is changed, the size of the respective block is increased to the predetermined block size.
14. The computer storage device of claim 13, wherein the namespace map is adjusted via: replacing in the namespace map an identifier of the portion of the first particular block with an identifier of the second particular block.
15. A method implemented in a computer storage device, the method comprising:
storing a namespace map mapping blocks of logical block addresses in a namespace to: blocks, of a same, predetermined block size, allocated from a logical address capacity of the non-volatile storage media; and a further block, of a size smaller than the predetermined block size, allocated from the logical address capacity of the non-volatile storage media;
adjusting the namespace map to change a size of the namespace; and
translating logical addresses in the namespace to physical addresses for the non-volatile storage media using the namespace map.
16. The method of claim 15, wherein the adjusting of the namespace map is in response to one of: a request for a host to increase the size of the namespace; a request for a host to decrease the size of the namespace; and a determination to increase an allocated portion of the namespace, wherein the size of the namespace is a size of the allocated portion.
17. The method of claim 16, wherein the adjusting the namespace map includes at least one of: adding an identifier of a block from the logical address capacity of the non-volatile storage media to the namespace map; and removing an identifier of a block in the logical address capacity of the non-volatile storage media to the namespace map.
18. The method of claim 17, wherein the logical address capacity of the non-volatile storage media is divided into predetermined blocks having a same, predetermined block size that is a power of two; and each of the blocks from the logical address capacity of the non-volatile storage media mapped for the namespace is either one of the predetermined blocks or a portion of one of the predetermined block.
19. The method of claim 18, further comprising: adjusting the namespace map to remap logical block addresses in a namespace to contiguous ones of the predetermined blocks.
20. A non-transitory computer storage medium storing instructions which, when executed by a controller of a computer storage device, cause the controller to perform a method, the method comprising:
storing a namespace map mapping blocks of logical block addresses in a namespace to: blocks, of a same, predetermined block size, allocated from a logical address capacity of the non-volatile storage media; and a further block, of a size smaller than the predetermined block size, allocated from the logical address capacity of the non-volatile storage media;
adjusting the namespace map to change a size of the namespace; and
translating logical addresses in the namespace to physical addresses for the non-volatile storage media using the namespace map.
With respect to claims 1, 15 and 20, the patent does not expressly refer to wherein the size of the namespace is not a multiple of the predetermined block size at least before the namespace map is adjusted or after the namespace map is adjusted; however, regarding these limitations, Atkisson teaches [“[0125] The logical address space 432 may be "sparse" meaning the logical address space 432 is large enough that allocated/assigned logical identifiers are non-contiguous and separated by sections of one or more unallocated/unassigned addresses, and, as such, may comprise a logical capacity that exceeds the physical storage capacity of the non-volatile storage device 402. Accordingly, the logical address space 432 may be defined independent of the non-volatile storage device 402; the logical address space 432 may present a larger address space than the physical storage capacity of the non-volatile storage device 402, may present different storage unit partitions and/or block sizes than provided by the non-volatile storage device 402, and so on.”].
It would have been obvious to a person of ordinary skill in the art to modify the patent to have the size of the namespace is not a multiple of the predetermined block size at least before the namespace map is adjusted or after the namespace map is adjusted in the manner that Atkisson teaches namespaces or logical address spaces may be of any size and their size may not necessarily align with unit partitions/block sizes since doing so would at least provide the benefits of flexibility of design, thus providing flexible logical addressing regardless of physical storage device limitations.
Claims 1, 15 and 20 are rejected on the ground of nonstatutory obviousness-type double patenting as being unpatentable over claims 1-3 and 7 of U.S. Patent No. 11249922 (corresponding to Application No. 16878383) in view of Atkisson et al. (US 2012/0239860). Although the conflicting claims are not identical, they are not patentably distinct from each other because the claims in the patent in view of Atkisson disclose/obviate the subject matter of the claims in the instant application.
Claims of the instant application are compared to claims of the patent in the following table:
Instant Application
U.S. Patent No. 11249922 (corresponding to Application No. 16878383)
1. A computer storage device, comprising: a host interface; a controller; non-volatile storage media; and firmware containing instructions which, when executed by the controller, instruct the controller to at least:
store a namespace map mapping blocks of logical block addresses in a namespace to blocks, based on a predetermined block size, from a logical address capacity of the non-volatile storage media;
adjust the namespace map to change a size of the namespace, wherein the size of the namespace is not a multiple of the predetermined block size at least before the namespace map is adjusted or after the namespace map is adjusted; and
translate logical addresses in the namespace to physical addresses for the non-volatile storage media using the namespace map.
1. A computer storage device, comprising: a host interface; a controller; non-volatile storage media; and firmware containing instructions which, when executed by the controller, instruct the controller to at least:
generate a first namespace map mapping blocks of first logical addresses defined in a namespace to first blocks of second logical addresses defined for an entire capacity of the non-volatile storage media, the first blocks of second logical addresses comprising non-contiguous blocks; translate the first logical addresses defined in the namespace to physical addresses for the non-volatile storage media using the first namespace map; generate a second namespace map mapping blocks of the first logical addresses defined in the namespace to second blocks of the second logical addresses defined for the entire capacity of the non-volatile storage media, the second blocks of the second logical addresses comprising contiguous blocks; translate, via a flash translation layer, the first logical addresses defined in the namespace to the physical addresses for the non-volatile storage media using the second namespace map.
2. The computer storage device of claim 1, further comprising generating a first data mapping, according to a first block size, wherein the first blocks have no more than one block of a size different from the first block size.
3. The computer storage device of claim 2, further comprising determining a second block size and generating a second data mapping according to the second block size, wherein the second blocks have no more than one block of a size different from the second block size.
7. The computer storage device of claim 3, wherein the instructions are configured to further instruct the controller to: before generating the second namespace map, adjust the first namespace map such that the second namespace map is generated with no more than one block having a size different from the second block size.
See text in claim 1 above
The mapping above applies to claims 15 and 20.
With respect to claims 1, 15 and 20, the patent does not expressly refer to wherein the size of the namespace is not a multiple of the predetermined block size at least before the namespace map is adjusted or after the namespace map is adjusted; however, regarding these limitations, Atkisson teaches [“[0125] The logical address space 432 may be "sparse" meaning the logical address space 432 is large enough that allocated/assigned logical identifiers are non-contiguous and separated by sections of one or more unallocated/unassigned addresses, and, as such, may comprise a logical capacity that exceeds the physical storage capacity of the non-volatile storage device 402. Accordingly, the logical address space 432 may be defined independent of the non-volatile storage device 402; the logical address space 432 may present a larger address space than the physical storage capacity of the non-volatile storage device 402, may present different storage unit partitions and/or block sizes than provided by the non-volatile storage device 402, and so on.”].
It would have been obvious to a person of ordinary skill in the art to modify the patent to have the size of the namespace is not a multiple of the predetermined block size at least before the namespace map is adjusted or after the namespace map is adjusted in the manner that Atkisson teaches namespaces or logical address spaces may be of any size and their size may not necessarily align with unit partitions/block sizes since doing so would at least provide the benefits of flexibility of design, thus providing flexible logical addressing regardless of physical storage device limitations.
Claims 1, 15 and 20 are rejected on the ground of nonstatutory obviousness-type double patenting as being unpatentable over claims 1-3 and 7 of U.S. Patent No. 10678703 (corresponding to Application No. 15814934) in view of Atkisson et al. (US 2012/0239860). Although the conflicting claims are not identical, they are not patentably distinct from each other because the claims in the patent in view of Atkisson disclose/obviate the subject matter of the claims in the instant application.
Claims of the instant application are compared to claims of the patent in the following table:
Instant Application
U.S. Patent No. 10678703 (corresponding to Application No. 15814934)
1. A computer storage device, comprising: a host interface; a controller; non-volatile storage media; and firmware containing instructions which, when executed by the controller, instruct the controller to at least:
store a namespace map mapping blocks of logical block addresses in a namespace to blocks, based on a predetermined block size, from a logical address capacity of the non-volatile storage media;
adjust the namespace map to change a size of the namespace, wherein the size of the namespace is not a multiple of the predetermined block size at least before the namespace map is adjusted or after the namespace map is adjusted; and
translate logical addresses in the namespace to physical addresses for the non-volatile storage media using the namespace map.
1. A computer storage device, comprising: a host interface; a controller; non-volatile storage media; and firmware containing instructions which, when executed by the controller, instruct the controller to at least: generate a first namespace map mapping, according to a first block size, blocks of first logical addresses defined in a namespace to first blocks of second logical addresses defined for an entire capacity of the non-volatile storage media, the first blocks of the second logical addresses comprising non-contiguous blocks; translate the first logical addresses defined in the namespace to physical addresses for the non-volatile storage media using the first namespace map; determine a second block size, the second block size different than the first block size; generate a second namespace map mapping, according to the second block size, blocks of the first logical addresses defined in the namespace to second blocks of the second logical addresses defined for the entire capacity of the non-volatile storage media, the second blocks of the second logical addresses comprising contiguous blocks; and translate the first logical addresses defined in the namespace to the physical addresses for the non-volatile storage media using the second namespace map.
2. The computer storage device of claim 1, wherein the first blocks have no more than one block of a size different from the first block size.
3. The computer storage device of claim 2, wherein the second blocks have no more than one block of a size different from the second block size.
7. The computer storage device of claim 3, wherein the instructions are configured to further instruct the controller to: before generating the second namespace map, adjust the first namespace map such that the second namespace map is generated with no more than one block having a size different from the second block size.
See claim 1
The mapping above applies to claims 15 and 20.
With respect to claims 1, 15 and 20, the patent does not expressly refer to wherein the size of the namespace is not a multiple of the predetermined block size at least before the namespace map is adjusted or after the namespace map is adjusted; however, regarding these limitations, Atkisson teaches [“[0125] The logical address space 432 may be "sparse" meaning the logical address space 432 is large enough that allocated/assigned logical identifiers are non-contiguous and separated by sections of one or more unallocated/unassigned addresses, and, as such, may comprise a logical capacity that exceeds the physical storage capacity of the non-volatile storage device 402. Accordingly, the logical address space 432 may be defined independent of the non-volatile storage device 402; the logical address space 432 may present a larger address space than the physical storage capacity of the non-volatile storage device 402, may present different storage unit partitions and/or block sizes than provided by the non-volatile storage device 402, and so on.”].
It would have been obvious to a person of ordinary skill in the art to modify the patent to have the size of the namespace is not a multiple of the predetermined block size at least before the namespace map is adjusted or after the namespace map is adjusted in the manner that Atkisson teaches namespaces or logical address spaces may be of any size and their size may not necessarily align with unit partitions/block sizes since doing so would at least provide the benefits of flexibility of design, thus providing flexible logical addressing regardless of physical storage device limitations.
Claim 1-20 are rejected on the ground of nonstatutory double patenting as being unpatentable over claims 1-15 of U.S. Patent No. 10,642,488 (Corresponding to Application No. 15/790,969) in view of Atkisson et al. (US 2012/0239860). Although the claims at issue are not identical, they are not patentably distinct from each other because the claims of the patent in view of Atkisson disclose/obviate the claims in the instant application.
Claims of the instant application are compared to claims of the patent in the following table:
Instant Application
U.S. Patent No. 10,642,488 (corresponding to U.S. Application No. 15/790,969)
1. A computer storage device, comprising: a host interface; a controller; non-volatile storage media; and firmware containing instructions which, when executed by the controller, instruct the controller to at least: store a namespace map mapping blocks of logical block addresses in a namespace to blocks, based on a predetermined block size, from a logical address capacity of the non-volatile storage media; adjust the namespace map to change a size of the namespace, wherein the size of the namespace is not a multiple of the predetermined block size at least before the namespace map is adjusted or after the namespace map is adjusted; and translate logical addresses in the namespace to physical addresses for the non-volatile storage media using the namespace map.
2. The computer storage device of claim 1, wherein the namespace map is adjusted in response to a request for a host to increase the size of the namespace.
3. The computer storage device of claim 2, wherein the namespace map is adjusted by adding an identifier of a block from the logical address capacity for association with the namespace.
4. The computer storage device of claim 1, wherein the namespace map is adjusted in response to a request for a host to reduce the size of the namespace.
5. The computer storage device of claim 4, wherein the namespace map is adjusted by removing an identifier of a block from the logical address capacity from association with the namespace.
6. The computer storage device of claim 1, wherein the namespace map is adjusted in response to an increase in demand of allocated capacity of the namespace.
7. The computer storage device of claim 1, wherein the logical address capacity of the non-volatile storage media is divided into predetermined blocks having a same, predetermined block size.
8. The computer storage device of claim 7, wherein the predetermined block size is a power of two.
9. The computer storage device of claim 7, wherein before the size of the namespace is changed, the namespace has a first block having a size smaller than the predetermined block size, and the first block is mapped by the namespace map to a portion of a first particular block among the predetermined blocks; and wherein after the size of the namespace is changed, the size of the first block is increased, and the first block is mapped by the namespace map to at least a portion of a second particular block among the predetermined blocks.
10. The computer storage device of claim 9, wherein the second particular block is different from the first particular block.
11. The computer storage device of claim 10, wherein the namespace map is adjusted via: copying data from the portion of the first particular block to a corresponding portion of the second particular block; and replacing in the namespace map an identifier of the portion of the first particular block with an identifier of the corresponding portion of the second particular block.
12. The computer storage device of claim 10, wherein the namespace map is adjusted via: adding to the namespace map an identifier of a first portion of the second particular block, wherein the at least a portion of the second particular block includes the first portion of the second particular block and a second portion of the second particular block; and after the size of the namespace has changed: copying, in a background process, data from the portion of the first particular block to a second portion of the second particular block; and replacing in the namespace map an identifier of the portion of the first particular block and the identifier of the first portion of the second particular block with an identifier of the corresponding portion of the second particular block.
13. The computer storage device of claim 9, wherein after the size of the namespace is changed, the size of the first block is increased to the predetermined block size.
14. The computer storage device of claim 13, wherein the namespace map is adjusted via: replacing in the namespace map an identifier of the portion of the first particular block with an identifier of the second particular block.
15. (Previously Presented) A method implemented in a computer storage device, the method comprising: storing a namespace map mapping blocks of logical block addresses in a namespace to blocks, based on a predetermined block size, from a logical address capacity of non-volatile storage media of the computer storage device; adjusting the namespace map to change a size of the namespace, wherein the size of the namespace is not a multiple of the predetermined block size at least before or after the adjusting; and translating logical addresses in the namespace to physical addresses for the non-volatile storage media using the namespace map.
16. The method of claim 15, wherein the adjusting of the namespace map is in response to one of: a request for a host to increase the size of the namespace; a request for a host to decrease the size of the namespace; and a determination to increase an allocated portion of the namespace, wherein the size of the namespace is a size of the allocated portion.
17. The method of claim 16, wherein the adjusting the namespace map includes at least one of: adding an identifier of a block from the logical address capacity of the non-volatile storage media to the namespace map; and removing an identifier of a block in the logical address capacity of the non-volatile storage media to the namespace map.
18. The method of claim 17, wherein the logical address capacity of the non-volatile storage media is divided into predetermined blocks having a same, predetermined block size that is a power of two; and each of the blocks from the logical address capacity of the non-volatile storage media mapped for the namespace is either one of the predetermined blocks or a portion of one of the predetermined block.
19. The method of claim 18, further comprising: adjusting the namespace map to remap logical block addresses in a namespace to contiguous ones of the predetermined blocks.
20. A non-transitory computer storage medium storing instructions which, when executed by a controller of a computer storage device, cause the controller to perform a method, the method comprising: storing a namespace map mapping blocks of logical block addresses in a namespace to blocks, based on a predetermined block size, from a logical address capacity of non-volatile storage media of the computer storage device; adjusting the namespace map to change a size of the namespace, wherein the size of the namespace is not a multiple of the predetermined block size at least before or after the adjusting; and translating logical addresses in the namespace to physical addresses for the non-volatile storage media using the namespace map.
1. A computer storage device, comprising: a host interface; a controller; non-volatile storage media; and firmware containing instructions which, when executed by the controller, instruct the controller to at least: store a namespace map mapping blocks of logical block addresses defined in a namespace to blocks from a logical address capacity of the non-volatile storage media, wherein the logical address capacity of the non-volatile storage media is divided into predetermined blocks having a same, predetermined block size; adjust the namespace map to change a size of the namespace; and translate logical addresses defined in the namespace to physical addresses for the non-volatile storage media using the namespace map; wherein the namespace map is adjusted in response to a request for a host to increase the size of the namespace; wherein the namespace map is adjusted in response to a request for a host to reduce the size of the namespace; wherein before the size of the namespace is changed, the namespace has a first block having a size smaller than the predetermined block size, and the first block is mapped by the namespace map to a portion of a first particular block of the predetermined blocks; and wherein after the size of the namespace is changed, the size of the first block is increased, and the first block is mapped by the namespace map to at least a portion of a second particular block of the predetermined blocks.
2. The computer storage device of claim 1, wherein the namespace map is adjusted by adding an identifier of a block from the logical address capacity for association with the namespace.
3. The computer storage device of claim 1, wherein the namespace map is adjusted by removing an identifier of a block from the logical address capacity from association with the namespace.
4. The computer storage device of claim 1, wherein the namespace map is adjusted in response to an increase in demand of allocated capacity of the namespace.
5. The computer storage device of claim 1, wherein the predetermined block size is a power of two.
6. The computer storage device of claim 1, wherein the second particular block is different from the first particular block.
7. The computer storage device of claim 6, wherein the namespace map is adjusted via: copying data from the portion of the first particular block to a corresponding portion of the second particular block; and replacing in the namespace map an identifier of the portion of the first particular block with an identifier of the corresponding portion of the second particular block.
8. The computer storage device of claim 6, wherein the namespace map is adjusted via: adding to the namespace map an identifier of a first portion of the second particular block, wherein the at least a portion of the second particular block includes the first portion of the second particular block and a second portion of the second particular block; and after the size of the namespace has changed: copying, in a background process, data from the portion of the first particular block to a second portion of the second particular block; and replacing in the namespace map an identifier of the portion of the first particular block and the identifier of the first portion of the second particular block with an identifier of the corresponding portion of the second particular block.
9. The computer storage device of claim 1, wherein after the size of the namespace is changed, the size of the first block is increased to the predetermined block size.
10. The computer storage device of claim 9, wherein the namespace map is adjusted via: replacing in the namespace map an identifier of the portion of the first particular block with an identifier of the second particular block.
11. A method implemented in a computer storage device, the method comprising: storing a namespace map mapping blocks of logical block addresses defined in a namespace to blocks from a logical address capacity of the non-volatile storage media, wherein the logical address capacity of the non-volatile storage media is divided into predetermined blocks having a same, predetermined block size; adjusting the namespace map to change a size of the namespace; and translating logical addresses defined in the namespace to physical addresses for the non-volatile storage media using the namespace map; wherein the adjusting of the namespace map is in response to one of: a request for a host to increase the size of the namespace; a request for a host to decrease the size of the namespace; and a determination to increase an allocated portion of the namespace, wherein the size of the namespace is a size of the allocated portion; wherein before the size of the namespace is changed, the namespace has a
first block having a size smaller than the predetermined block size, and the first block is mapped by the namespace map to a portion of a first particular block of the predetermined blocks; and wherein after the size of the namespace is changed, the size of the first block is increased, and the first block is mapped by the namespace map to at least a portion of a second particular block of the predetermined blocks.
12. The method of claim 11, wherein the adjusting the namespace map includes at least one of: adding an identifier of a block from the logical address capacity of the non-volatile storage media to the namespace map; and removing an identifier of a block in the logical address capacity of the non-volatile storage media to the namespace map.
13. The method of claim 12, wherein the logical address capacity of the non-volatile storage media is divided into predetermined blocks having a same, predetermined block size that is a power of two; and each of the blocks from the logical address capacity of the non-volatile storage media mapped for the namespace is either one of the predetermined blocks or a portion of one of the predetermined block.
14. The method of claim 13, further comprising: adjusting the namespace map to remap logical block addresses in a namespace to contiguous ones of the predetermined blocks.
15. A non-transitory computer storage medium storing instructions which, when executed by a controller of a computer storage device, cause the controller to perform a method, the method comprising: storing a namespace map mapping blocks of logical block addresses defined in a namespace to blocks from a logical address capacity of the non-volatile storage media, wherein the logical address capacity of the non-volatile storage media is divided into predetermined blocks having a same, predetermined block size; adjusting the namespace map to change a size of the namespace; and translating logical addresses defined in the namespace to physical addresses for the non-volatile storage media using the namespace map; wherein the adjusting of the namespace map is in response to one of: a request for a host to increase the size of the namespace; a request for a host to decrease the size of the namespace; and a determination to increase an allocated portion of the namespace, wherein the size of the namespace is a size of the allocated portion; wherein before the size of the namespace is changed, the namespace has a first block having a size smaller than the predetermined block size, and the first block is mapped by the namespace map to a portion of a first particular block of the predetermined blocks; and wherein after the size of the namespace is changed, the size of the first block is increased, and the first block is mapped by the namespace map to at least a portion of a second particular block of the predetermined blocks.
With respect to claims 1, 15 and 20, the patent does not expressly refer to wherein the size of the namespace is not a multiple of the predetermined block size at least before the namespace map is adjusted or after the namespace map is adjusted; however, regarding these limitations, Atkisson teaches [“[0125] The logical address space 432 may be "sparse" meaning the logical address space 432 is large enough that allocated/assigned logical identifiers are non-contiguous and separated by sections of one or more unallocated/unassigned addresses, and, as such, may comprise a logical capacity that exceeds the physical storage capacity of the non-volatile storage device 402. Accordingly, the logical address space 432 may be defined independent of the non-volatile storage device 402; the logical address space 432 may present a larger address space than the physical storage capacity of the non-volatile storage device 402, may present different storage unit partitions and/or block sizes than provided by the non-volatile storage device 402, and so on.”].
It would have been obvious to a person of ordinary skill in the art to modify the patent to have the size of the namespace is not a multiple of the predetermined block size at least before the namespace map is adjusted or after the namespace map is adjusted in the manner that Atkisson teaches namespaces or logical address spaces may be of any size and their size may not necessarily align with unit partitions/block sizes since doing so would at least provide the benefits of flexibility of design, thus providing flexible logical addressing regardless of physical storage device limitations.
Claims 1, 6-15 and 20 are rejected on the ground of nonstatutory double patenting as being unpatentable over claims 1-20 of U.S. Patent No. 11,435,900 (corresponding to U.S. Application No. 16/859,800) in view of Atkisson et al. (US 2012/0239860). Although the claims at issue are not identical, they are not patentably distinct from each other because the claims of the patent in view of Atkisson disclose/obviate the claims in the instant application.
Claims of the instant application are compared to claims of the patent in the following table:
Instant Application
U.S. Patent No. 11,435,900 (corresponding to U.S. Application No. 16/859,800)
1. A computer storage device, comprising: a host interface; a controller; non-volatile storage media; and firmware containing instructions which, when executed by the controller, instruct the controller to at least: store a namespace map mapping blocks of logical block addresses in a namespace to blocks, based on a predetermined block size, from a logical address capacity of the non-volatile storage media; adjust the namespace map to change a size of the namespace, wherein the size of the namespace is not a multiple of the predetermined block size at least before the namespace map is adjusted or after the namespace map is adjusted; and translate logical addresses in the namespace to physical addresses for the non-volatile storage media using the namespace map.
2. The computer storage device of claim 1, wherein the namespace map is adjusted in response to a request for a host to increase the size of the namespace.
3. The computer storage device of claim 2, wherein the namespace map is adjusted by adding an identifier of a block from the logical address capacity for association with the namespace.
4. The computer storage device of claim 1, wherein the namespace map is adjusted in response to a request for a host to reduce the size of the namespace.
5. The computer storage device of claim 4, wherein the namespace map is adjusted by removing an identifier of a block from the logical address capacity from association with the namespace.
6. The computer storage device of claim 1, wherein the namespace map is adjusted in response to an increase in demand of allocated capacity of the namespace.
7. The computer storage device of claim 1, wherein the logical address capacity of the non-volatile storage media is divided into predetermined blocks having a same, predetermined block size.
8. The computer storage device of claim 7, wherein the predetermined block size is a power of two.
9. The computer storage device of claim 7, wherein before the size of the namespace is changed, the namespace has a first block having a size smaller than the predetermined block size, and the first block is mapped by the namespace map to a portion of a first particular block among the predetermined blocks; and wherein after the size of the namespace is changed, the size of the first block is increased, and the first block is mapped by the namespace map to at least a portion of a second particular block among the predetermined blocks.
10. The computer storage device of claim 9, wherein the second particular block is different from the first particular block.
11. The computer storage device of claim 10, wherein the namespace map is adjusted via: copying data from the portion of the first particular block to a corresponding portion of the second particular block; and replacing in the namespace map an identifier of the portion of the first particular block with an identifier of the corresponding portion of the second particular block.
12. The computer storage device of claim 10, wherein the namespace map is adjusted via: adding to the namespace map an identifier of a first portion of the second particular block, wherein the at least a portion of the second particular block includes the first portion of the second particular block and a second portion of the second particular block; and after the size of the namespace has changed: copying, in a background process, data from the portion of the first particular block to a second portion of the second particular block; and replacing in the namespace map an identifier of the portion of the first particular block and the identifier of the first portion of the second particular block with an identifier of the corresponding portion of the second particular block.
13. The computer storage device of claim 9, wherein after the size of the namespace is changed, the size of the first block is increased to the predetermined block size.
14. The computer storage device of claim 13, wherein the namespace map is adjusted via: replacing in the namespace map an identifier of the portion of the first particular block with an identifier of the second particular block.
15. A method implemented in a computer storage device, the method comprising: storing a namespace map mapping blocks of logical block addresses in a namespace to blocks, based on a predetermined block size, from a logical address capacity of non-volatile storage media of the computer storage device; adjusting the namespace map to change a size of the namespace, wherein the size of the namespace is not a multiple of the predetermined block size at least before or after the adjusting; and translating logical addresses in the namespace to physical addresses for the non-volatile storage media using the namespace map.
16. The method of claim 15, wherein the adjusting of the namespace map is in response to one of: a request for a host to increase the size of the namespace; a request for a host to decrease the size of the namespace; and a determination to increase an allocated portion of the namespace, wherein the size of the namespace is a size of the allocated portion.
17. The method of claim 16, wherein the adjusting the namespace map includes at least one of: adding an identifier of a block from the logical address capacity of the non-volatile storage media to the namespace map; and removing an identifier of a block in the logical address capacity of the non-volatile storage media to the namespace map.
18. The method of claim 17, wherein the logical address capacity of the non-volatile storage media is divided into predetermined blocks having a same, predetermined block size that is a power of two; and each of the blocks from the logical address capacity of the non-volatile storage media mapped for the namespace is either one of the predetermined blocks or a portion of one of the predetermined block.
19. The method of claim 18, further comprising: adjusting the namespace map to remap logical block addresses in a namespace to contiguous ones of the predetermined blocks.
20. A non-transitory computer storage medium storing instructions which, when executed by a controller of a computer storage device, cause the controller to perform a method, the method comprising: storing a namespace map mapping blocks of logical block addresses in a namespace to blocks, based on a predetermined block size, from a logical address capacity of non-volatile storage media of the computer storage device; adjusting the namespace map to change a size of the namespace, wherein the size of the namespace is not a multiple of the predetermined block size at least before or after the adjusting; and translating logical addresses in the namespace to physical addresses for the non-volatile storage media using the namespace map.
1. A computer storage device, comprising: a host interface; a controller; non-volatile storage media; and firmware containing instructions which, when executed by the controller, instruct the controller to at least: store a namespace map mapping blocks of logical block addresses in a namespace to blocks from a logical address capacity of the non-volatile storage media; adjust the namespace map to change a size of the namespace; and translate logical addresses in the namespace to physical addresses for the non-volatile storage media using the namespace map; wherein before the size of the namespace is changed, the namespace has a first block having a size smaller than a predetermined block size, and the first block is mapped by the namespace map to a portion of a first particular block of a predetermined blocks; and wherein after the size of the namespace is changed, the size of the first block is increased, and the first block is mapped by the namespace map to at least a portion of a second particular block of the predetermined blocks.
2. The computer storage device of claim 1, wherein the namespace map is adjusted by adding an identifier of a block from the logical address capacity for association with the namespace.
3. The computer storage device of claim 1, wherein the namespace map is adjusted by removing an identifier of a block from the logical address capacity from association with the namespace.
4. The computer storage device of claim 1, wherein the namespace map is adjusted in response to an increase in demand of allocated capacity of the namespace.
5. The computer storage device of claim 1, wherein the predetermined block size is a power of two.
6. The computer storage device of claim 1, wherein the second particular block is different from the first particular block.
7. The computer storage device of claim 6, wherein the namespace map is adjusted via: copying data from the portion of the first particular block to a corresponding portion of the second particular block; and replacing in the namespace map an identifier of the portion of the first particular block with an identifier of the corresponding portion of the second particular block.
8. The computer storage device of claim 6, wherein the namespace map is adjusted via: adding to the namespace map an identifier of a first portion of the second particular block, wherein the at least a portion of the second particular block includes the first portion of the second particular block and a second portion of the second particular block; and after the size of the namespace has changed: copying, in a background process, data from the portion of the first particular block to the second portion of the second particular block; and replacing in the namespace map an identifier of the portion of the first particular block and the identifier of the first portion of the second particular block with an identifier of the corresponding portion of the second particular block.
9. The computer storage device of claim 1, wherein after the size of the namespace is changed, the size of the first block is increased to the predetermined block size.
10. The computer storage device of claim 9, wherein the namespace map is adjusted via: replacing in the namespace map an identifier of the portion of the first particular block with an identifier of the second particular block.
11. A method implemented in a computer storage device, the method comprising: storing a namespace map mapping blocks of logical block addresses in a namespace to blocks from a logical address capacity of the non-volatile storage media; adjusting the namespace map to change a size of the namespace; and translating logical addresses in the namespace to physical addresses for the non-volatile storage media using the namespace map; wherein before the size of the namespace is changed, the namespace has a first block having a size smaller than a predetermined block size, and the first block is mapped by the namespace map to a portion of a first particular block of a predetermined blocks; and wherein after the size of the namespace is changed, the size of the first block is increased, and the first block is mapped by the namespace map to at least a portion of a second particular block of the predetermined blocks.
12. The method of claim 11, wherein the adjusting of the namespace map is in response to a determination to increase an allocated portion of the namespace, wherein the size of the namespace is a size of the allocated portion.
13. The method of claim 12, wherein the adjusting the namespace map includes at least one of: adding an identifier of a block from the logical address capacity of the non-volatile storage media to the namespace map; and removing an identifier of a block in the logical address capacity of the non-volatile storage media to the namespace map.
14. The method of claim 13, wherein the logical address capacity of the non-volatile storage media is divided into predetermined blocks having a same, predetermined block size that is a power of two; and each of the blocks from the logical address capacity of the non-volatile storage media mapped for the namespace is either one of the predetermined blocks or a portion of one of the predetermined block.
15. The method of claim 14, further comprising: adjusting the namespace map to remap logical block addresses in a namespace to contiguous ones of the predetermined blocks.
16. A non-transitory computer storage medium storing instructions which, when executed by a controller of a computer storage device, cause the controller to perform a method, the method comprising: storing a namespace map mapping blocks of logical block addresses in a namespace to blocks from a logical address capacity of the non-volatile storage media; adjusting the namespace map to change a size of the namespace; and translating logical addresses in the namespace to physical addresses for the non-volatile storage media using the namespace map; wherein before the size of the namespace is changed, the namespace has a first block having a size smaller than a predetermined block size, and the first block is mapped by the namespace map to a portion of a first particular block of a predetermined blocks; and wherein after the size of the namespace is changed, the size of the first block is increased, and the first block is mapped by the namespace map to at least a portion of a second particular block of the predetermined.
17. The computer storage device of claim 1, wherein the namespace map is adjusted in response to a request for a host to increase or reduce the size of the namespace.
18. The computer storage device of claim 1, wherein the logical address capacity of the non-volatile storage media is divided into predetermined blocks having a same, predetermined block size.
19. The method of claim 11, wherein the namespace map is adjusted in response to a request for a host to increase or reduce the size of the namespace.
20. The method of claim 11, wherein the logical address capacity of the non-volatile storage media is divided into predetermined blocks having a same, predetermined block size.
With respect to claims 1, 15 and 20, the patent does not expressly refer to wherein the size of the namespace is not a multiple of the predetermined block size at least before the namespace map is adjusted or after the namespace map is adjusted; however, regarding these limitations, Atkisson teaches [“[0125] The logical address space 432 may be "sparse" meaning the logical address space 432 is large enough that allocated/assigned logical identifiers are non-contiguous and separated by sections of one or more unallocated/unassigned addresses, and, as such, may comprise a logical capacity that exceeds the physical storage capacity of the non-volatile storage device 402. Accordingly, the logical address space 432 may be defined independent of the non-volatile storage device 402; the logical address space 432 may present a larger address space than the physical storage capacity of the non-volatile storage device 402, may present different storage unit partitions and/or block sizes than provided by the non-volatile storage device 402, and so on.”].
It would have been obvious to a person of ordinary skill in the art to modify the patent to have the size of the namespace is not a multiple of the predetermined block size at least before the namespace map is adjusted or after the namespace map is adjusted in the manner that Atkisson teaches namespaces or logical address spaces may be of any size and their size may not necessarily align with unit partitions/block sizes since doing so would at least provide the benefits of flexibility of design, thus providing flexible logical addressing regardless of physical storage device limitations.
Claims 1, 7-8, 15 and 20 are provisionally rejected on the ground of nonstatutory double patenting as being unpatentable over claims 9 and 11-12 of copending Application No. 17/703,840 (reference application) in view of Atkisson et al. (US 2012/0239860). Although the claims at issue are not identical, they are not patentably distinct from each other because claim 9 of the copending application in view of the patent discloses/obviates claim 1 in the instant application.
This is a provisional nonstatutory double patenting rejection because the patentably indistinct claims have not in fact been patented.
Claims of the instant application are compared to claims of the copending application in the following table:
Instant Application
Copending US Application No. 17/703,840
1. A computer storage device, comprising: a host interface; a controller; non-volatile storage media; and firmware containing instructions which, when executed by the controller, instruct the controller to at least: store a namespace map mapping blocks of logical block addresses in a namespace to blocks, based on a predetermined block size, from a logical address capacity of the non-volatile storage media; adjust the namespace map to change a size of the namespace, wherein the size of the namespace is not a multiple of the predetermined block size at least before the namespace map is adjusted or after the namespace map is adjusted; and translate logical addresses in the namespace to physical addresses for the non-volatile storage media using the namespace map.
2. The computer storage device of claim 1, wherein the namespace map is adjusted in response to a request for a host to increase the size of the namespace.
3. The computer storage device of claim 2, wherein the namespace map is adjusted by adding an identifier of a block from the logical address capacity for association with the namespace.
4. The computer storage device of claim 1, wherein the namespace map is adjusted in response to a request for a host to reduce the size of the namespace.
5. The computer storage device of claim 4, wherein the namespace map is adjusted by removing an identifier of a block from the logical address capacity from association with the namespace.
7. The computer storage device of claim 1, wherein the logical address capacity of the non-volatile storage media is divided into predetermined blocks having a same, predetermined block size.
8. The computer storage device of claim 7, wherein the predetermined block size is a power of two.
1. (Currently Amended) A computer system, comprising: a storage device having: a host interface; a controller; non-volatile storage media; and firmware; and a host configured to operate a plurality of accounts assigned to users; and wherein each respective account in the plurality of accounts has a namespace identifier that identifies a namespace; and wherein the computer system is configured to limit access to the storage device: by the respective account to logical addresses that are in the namespace and that are within a range from zero to a maximum logical address; and wherein the controller is configured to receive a request to adjust a size of the namespace and remove or add a portion of the logical addresses from the namespace based on the request.
2. (Original) The computer system of claim 1, wherein entire storage resources allocated for user data in the respective account are identified by the namespace identifier.
8. (Previously Presented) The computer system of claim 7, wherein the controller of the storage device is configured by the firmware to adjust the size of the namespace in response to a change in the quota for the respective account.
9. (Original) The computer system of claim 8, wherein the controller of the storage device is configured by the firmware to adjust the size of the namespace by adjusting the namespace map.
10. (Previously Presented) The computer system of claim 9, wherein adjusting of the namespace map is performed by adding or removing an identifier of a block of logical addresses in the capacity of the storage device.
11. (Original) The computer system of claim 10, wherein the block has a predetermined size.
12. (Original) The computer system of claim 11, wherein the predetermined size is a power of two.
The rationale above applies to claims 15-18 and 20.
With respect to claims 1, 15 and 20, the co-pending application does not expressly refer to wherein the size of the namespace is not a multiple of the predetermined block size at least before the namespace map is adjusted or after the namespace map is adjusted; however, regarding these limitations, Atkisson teaches [“[0125] The logical address space 432 may be "sparse" meaning the logical address space 432 is large enough that allocated/assigned logical identifiers are non-contiguous and separated by sections of one or more unallocated/unassigned addresses, and, as such, may comprise a logical capacity that exceeds the physical storage capacity of the non-volatile storage device 402. Accordingly, the logical address space 432 may be defined independent of the non-volatile storage device 402; the logical address space 432 may present a larger address space than the physical storage capacity of the non-volatile storage device 402, may present different storage unit partitions and/or block sizes than provided by the non-volatile storage device 402, and so on.”].
It would have been obvious to a person of ordinary skill in the art to modify the co-pending to have the size of the namespace is not a multiple of the predetermined block size at least before the namespace map is adjusted or after the namespace map is adjusted in the manner that Atkisson teaches namespaces or logical address spaces may be of any size and their size may not necessarily align with unit partitions/block sizes since doing so would at least provide the benefits of flexibility of design, thus providing flexible logical addressing regardless of physical storage device limitations.
Claim 1-20 are provisionally rejected on the ground of nonstatutory double patenting as being unpatentable over claims 1-20 of U.S. Patent 11928332, corresponding to Application No. 17/870,642 in view of Atkisson et al. (US 2012/0239860). Although the claims at issue are not identical, they are not patentably distinct from each other because the claims of the patent in view of Atkisson disclose/obviate the claims of the instant application.
Instant Application
U.S. Patent 11928332 (corresponding to Application No. 17/870,642)
1. A computer storage device, comprising: a host interface; a controller; non-volatile storage media; and firmware containing instructions which, when executed by the controller, instruct the controller to at least: store a namespace map mapping blocks of logical block addresses in a namespace to blocks, based on a predetermined block size, from a logical address capacity of the non-volatile storage media; adjust the namespace map to change a size of the namespace, wherein the size of the namespace is not a multiple of the predetermined block size at least before the namespace map is adjusted or after the namespace map is adjusted; and translate logical addresses in the namespace to physical addresses for the non-volatile storage media using the namespace map.
2. The computer storage device of claim 1, wherein the namespace map is adjusted in response to a request for a host to increase the size of the namespace.
3. The computer storage device of claim 2, wherein the namespace map is adjusted by adding an identifier of a block from the logical address capacity for association with the namespace.
4. The computer storage device of claim 1, wherein the namespace map is adjusted in response to a request for a host to reduce the size of the namespace.
5. The computer storage device of claim 4, wherein the namespace map is adjusted by removing an identifier of a block from the logical address capacity from association with the namespace.
6. The computer storage device of claim 1, wherein the namespace map is adjusted in response to an increase in demand of allocated capacity of the namespace.
7. The computer storage device of claim 1, wherein the logical address capacity of the non-volatile storage media is divided into predetermined blocks having a same, predetermined block size.
8. The computer storage device of claim 7, wherein the predetermined block size is a power of two.
9. The computer storage device of claim 7, wherein before the size of the namespace is changed, the namespace has a first block having a size smaller than the predetermined block size, and the first block is mapped by the namespace map to a portion of a first particular block among the predetermined blocks; and wherein after the size of the namespace is changed, the size of the first block is increased, and the first block is mapped by the namespace map to at least a portion of a second particular block among the predetermined blocks.
10. The computer storage device of claim 7, wherein the second particular block is different from the first particular block.
11. The computer storage device of claim 10, wherein the namespace map is adjusted via: copying data from the portion of the first particular block to a corresponding portion of the second particular block; and replacing in the namespace map an identifier of the portion of the first particular block with an identifier of the corresponding portion of the second particular block.
12. The computer storage device of claim 10, wherein the namespace map is adjusted via: adding to the namespace map an identifier of a first portion of the second particular block, wherein the at least a portion of the second particular block includes the first portion of the second particular block and a second portion of the second particular block; and after the size of the namespace has changed: copying, in a background process, data from the portion of the first particular block to a second portion of the second particular block; and replacing in the namespace map an identifier of the portion of the first particular block and the identifier of the first portion of the second particular block with an identifier of the corresponding portion of the second particular block.
13. The computer storage device of claim 7, wherein after the size of the namespace is changed, the size of the first block is increased to the predetermined block size.
14. The computer storage device of claim 13, wherein the namespace map is adjusted via: replacing in the namespace map an identifier of the portion of the first particular block with an identifier of the second particular block.
15. A method implemented in a computer storage device, the method comprising: storing a namespace map mapping blocks of logical block addresses in a namespace to blocks, based on a predetermined block size, from a logical address capacity of non-volatile storage media of the computer storage device; adjusting the namespace map to change a size of the namespace, wherein the size of the namespace is not a multiple of the predetermined block size at least before or after the adjusting; and translating logical addresses in the namespace to physical addresses for the non-volatile storage media using the namespace map.
16. The method of claim 15, wherein the adjusting of the namespace map is in response to one of: a request for a host to increase the size of the namespace; a request for a host to decrease the size of the namespace; and a determination to increase an allocated portion of the namespace, wherein the size of the namespace is a size of the allocated portion.
17. The method of claim 16, wherein the adjusting the namespace map includes at least one of: adding an identifier of a block from the logical address capacity of the non-volatile storage media to the namespace map; and removing an identifier of a block in the logical address capacity of the non-volatile storage media to the namespace map.
18. The method of claim 17, wherein the logical address capacity of the non-volatile storage media is divided into predetermined blocks having a same, predetermined block size that is a power of two; and each of the blocks from the logical address capacity of the non-volatile storage media mapped for the namespace is either one of the predetermined blocks or a portion of one of the predetermined block.
19. The method of claim 18, further comprising: adjusting the namespace map to remap logical block addresses in a namespace to contiguous ones of the predetermined blocks.
20. A non-transitory computer storage medium storing instructions which, when executed by a controller of a computer storage device, cause the controller to perform a method, the method comprising: storing a namespace map mapping blocks of logical block addresses in a namespace to blocks, based on a predetermined block size, from a logical address capacity of non-volatile storage media of the computer storage device; adjusting the namespace map to change a size of the namespace, wherein the size of the namespace is not a multiple of the predetermined block size at least before or after the adjusting; and translating logical addresses in the namespace to physical addresses for the non-volatile storage media using the namespace map.
1. A computer storage device, comprising: a host interface; non-volatile storage media; and a controller configured to at least: maintain a namespace map mapping, blocks of logical block addresses in a namespace to blocks from a logical address capacity of the non-volatile storage media; and translate logical addresses in the namespace to physical addresses for the non-volatile storage media using the namespace map; wherein prior to adjusting a size of the namespace, the namespace has a first block having a size smaller than a predetermined block size, and the first block is mapped by the namespace map to a portion of a first particular block of predetermined blocks.
See claims 7 and 9 below
2. The computer storage device of claim 1, wherein the namespace map is adjusted in response to a request for a host to increase the size of the namespace.
3. The computer storage device of claim 2, wherein the namespace map is adjusted by adding an identifier of a block from the logical address capacity for association with the namespace.
4. The computer storage device of claim 1, wherein the namespace map is adjusted in response to a request for a host to reduce the size of the namespace.
5. The computer storage device of claim 4, wherein the namespace map is adjusted by removing an identifier of a block from the logical address capacity from association with the namespace.
6. The computer storage device of claim 1, wherein the namespace map is adjusted in response to an increase in demand of allocated capacity of the namespace.
7. The computer storage device of claim 1, wherein the logical address capacity of the non-volatile storage media is divided into predetermined blocks having, predetermined block size.
8. The computer storage device of claim 7, wherein the predetermined block size is a power of two.
9. The computer storage device of claim 7, wherein after the size of the namespace is changed, the size of the first block is increased, and the first block is mapped by the namespace map to at least a portion of a second particular block of the predetermined blocks.
10. The computer storage device of claim 9, wherein the second particular block is different from the first particular block.
11. The computer storage device of claim 10, wherein the namespace map is adjusted via: copying data from the portion of the first particular block to a corresponding portion of the second particular block; and replacing in the namespace map an identifier of the portion of the first particular block with an identifier of the corresponding portion of the second particular block.
12. The computer storage device of claim 10, wherein the namespace map is adjusted via: adding to the namespace map an identifier of a first portion of the second particular block, wherein the at least a portion of the second particular block includes the first portion of the second particular block and a second portion of the second particular block; and after the size of the namespace has changed: copying, in a background process, data from the portion of the first particular block to a second portion of the second particular block; and replacing in the namespace map an identifier of the portion of the first particular block and the identifier of the first portion of the second particular block with an identifier of the corresponding portion of the second particular block.
13. The computer storage device of claim 9, wherein after the size of the namespace is changed, the size of the first block is increased to the predetermined block size.
14. The computer storage device of claim 13, wherein the namespace map is adjusted via: replacing in the namespace map an identifier of the portion of the first particular block with an identifier of the second particular block.
15. A method implemented in a computer storage device, the method comprising: maintaining a namespace map mapping, blocks of logical block addresses in a namespace to blocks from a logical address capacity of the non-volatile storage media; and translating logical addresses in the namespace to physical addresses for the non-volatile storage media using the namespace map; wherein prior to adjusting a size of the namespace, the namespace has a first block having a size smaller than a predetermined block size, and the first block is mapped by the namespace map to a portion of a first particular block of predetermined blocks.
16. The method of claim 15, wherein the adjusting of the namespace map is in response to one of: a request for a host to increase the size of the namespace; a request for a host to decrease the size of the namespace; and a determination to increase an allocated portion of the namespace, wherein the size of the namespace is a size of the allocated portion.
17. The method of claim 16, wherein the adjusting of the namespace map includes at least one of: adding an identifier of a block from the logical address capacity of the non-volatile storage media to the namespace map; and removing an identifier of a block in the logical address capacity of the non-volatile storage media to the namespace map.
18. The method of claim 17, wherein the logical address capacity of the non-volatile storage media is divided into predetermined blocks having a same, predetermined block size that is a power of two; and each of the blocks from the logical address capacity of the non-volatile storage media mapped for the namespace is either one of the predetermined blocks or a portion of one of the predetermined block.
19. The method of claim 18, further comprising: adjusting the namespace map to remap logical block addresses in a namespace to contiguous ones of the predetermined blocks.
20. A non-transitory computer storage medium storing instructions which, when executed by a controller of a computer storage device, cause the controller to perform a method, the method comprising: maintaining a namespace map mapping, blocks of logical block addresses in a namespace to blocks from a logical address capacity of the non-volatile storage media; and translating logical addresses in the namespace to physical addresses for the non-volatile storage media using the namespace map; wherein prior to adjusting a size of the namespace, the namespace has a first block having a size smaller than a predetermined block size, and the first block is mapped by the namespace map to a portion of a first particular block of predetermined blocks.
With respect to claims 1, 15 and 20, the patent does not expressly refer to wherein the size of the namespace is not a multiple of the predetermined block size at least before the namespace map is adjusted or after the namespace map is adjusted; however, regarding these limitations, Atkisson teaches [“[0125] The logical address space 432 may be "sparse" meaning the logical address space 432 is large enough that allocated/assigned logical identifiers are non-contiguous and separated by sections of one or more unallocated/unassigned addresses, and, as such, may comprise a logical capacity that exceeds the physical storage capacity of the non-volatile storage device 402. Accordingly, the logical address space 432 may be defined independent of the non-volatile storage device 402; the logical address space 432 may present a larger address space than the physical storage capacity of the non-volatile storage device 402, may present different storage unit partitions and/or block sizes than provided by the non-volatile storage device 402, and so on.”].
It would have been obvious to a person of ordinary skill in the art to modify the patent to have the size of the namespace is not a multiple of the predetermined block size at least before the namespace map is adjusted or after the namespace map is adjusted in the manner that Atkisson teaches namespaces or logical address spaces may be of any size and their size may not necessarily align with unit partitions/block sizes since doing so would at least provide the benefits of flexibility of design, thus providing flexible logical addressing regardless of physical storage device limitations.
Claim 1, 7, 15 and 20 are provisionally rejected on the ground of nonstatutory double patenting as being unpatentable over claims 1-20 of U.S. Patent 12299280, corresponding to Application No. 18/598100. Although the claims at issue are not identical, they are not patentably distinct from each other because the claims of the patent in view of disclose/obviate the claims of the instant application.
Instant Application
U.S. Patent 12299280, corresponding to Application No. 18/598100
A computer storage device, comprising: a host interface; a controller; non-volatile storage media; and firmware containing instructions which, when executed by the controller, instruct the controller to at least:
store a namespace map mapping blocks of logical block addresses in a namespace to blocks, based on a predetermined block size, from a logical address capacity of the non-volatile storage media;
adjust the namespace map to change a size of the namespace,
wherein the size of the namespace is not a multiple of the predetermined block size at least before the namespace map is adjusted or after the namespace map is adjusted; and
translate logical addresses in the namespace to physical addresses for the non-volatile storage media using the namespace map.
7. The computer storage device of claim 1, wherein the logical address capacity of the non-volatile storage media is divided into predetermined blocks having the same, predetermined block size.
1. A device, comprising: non-volatile storage media having a logical address capacity divided into a plurality of first blocks according to a predetermined block size; and a circuit configured to, responsive to a first command to create a namespace: allocate a first subset of the first blocks for the namespace; update an ordered list to include at least block identifications of blocks in the first subset; and
store, in association with the namespace, a first indication of an address of the block identifications in the ordered list, and a second indication of whether the blocks in the first subset are contiguous in the logical address capacity;
wherein the device is further configured to perform translations of logical addresses from the namespace to the logical address capacity based on the ordered list, the first indication, and the second indication.
2. The device of claim 1, wherein the second indication is configured to indicate that the blocks in the first subset are contiguous in the logical address capacity.
3. The device of claim 1, wherein the circuit is further configured to, responsive to a second command to change a size of the namespace: update the ordered list to facilitate the translations.
4. The device of claim 3, wherein the circuit is further configured to maintain a list of free blocks, among the plurality of first blocks, that are not yet allocated to namespaces created in the device.
5. The device of claim 4, wherein the second command is configured to reduce the size of the namespace; and the circuit is further configured to de-allocate at least one block in a first subset from the namespace.
6. The device of claim 4, wherein the second command is configured to expand the size of the namespace; and the circuit is further configured to further allocate at least one block, among the plurality of first blocks, to the namespace.
7. The device of claim 6, wherein the size of the namespace is not a multiple of the predetermined block size after being expanded according to the second command.
8. The device of claim 7, wherein the size of the namespace is not a multiple of the predetermined block size before being expanded according to the second command.
See claim 1 above
See claim 1 above
The mappings above with respect to claim 1 apply to claims 15 and 20.
Claim Rejections - 35 USC § 103
In the event the determination of the status of the application as subject to AIA 35 U.S.C. 102 and 103 (or as subject to pre-AIA 35 U.S.C. 102 and 103) is incorrect, any correction of the statutory basis for the rejection will not be considered a new ground of rejection if the prior art relied upon, and the rationale supporting the rejection, would be the same under either status.
The following is a quotation of 35 U.S.C. 103 which forms the basis for all obviousness rejections set forth in this Office action:
A patent for a claimed invention may not be obtained, notwithstanding that the claimed invention is not identically disclosed as set forth in section 102 of this title, if the differences between the claimed invention and the prior art are such that the claimed invention as a whole would have been obvious before the effective filing date of the claimed invention to a person having ordinary skill in the art to which the claimed invention pertains. Patentability shall not be negated by the manner in which the invention was made.
Claim(s) 1-6, 15-17 and 20 is/are rejected under 35 U.S.C. 103 as being unpatentable over Asano et al. (US 2018/0260334) in view of Atkisson et al. (US 2012/0239860).
1. A computer storage device, comprising: a host interface; [Asano teaches NVMe Hosts 110 connected to NVMe Storage Device (SSD) 120 via interface (fig. 1 and related text)]
a controller; [Asano teaches NV Memory Controller 130 (fig. 1 and related text)]
non-volatile storage media; and [Asano teaches NV Memory Array 140 (fig. 1 and related text)]
firmware containing instructions which, when executed by the controller, instruct the controller to at least: store a namespace map mapping blocks of logical block addresses in a namespace to blocks, based on a predetermined block size, from a logical address capacity of the non-volatile storage media; [Asano teaches namespace-to-logical mapping unit 132 which uses LUTs for mapping (fig. 1 and related text; pars. 0044-0046) where “ FIG. 2 graphically illustrates an address space 200 associated with namespace-based addressing. An address in the address space includes the namespace identifier NSID 210 and a logical address 220 within the namespace (also referred to as an offset or an offset within the namespace). The logical address 220 is the LBA. The term “offset” may also be used to specify a particular subdivision of a namespace that has a different size than a block. For example, an offset may specify the location of a “segment,” which has a size less than or equal to the size of a block or the location of a “cluster” which has a size less than or equal to the size of a segment. Within each namespace identified by the NSID 210, the LBAs 220 begin at zero and increase linearly. The namespace-based address space therefore includes multiple sets of numbers that each begin at zero and then linearly increase, as the offsets in each namespace begin at zero. In order for an SSD controller to navigate these multiple sets of numbers, namespace allocation unit look-up tables (NSAU LUTs) are used to translate a LBA specified in a namespace to a physical address.” (par. 0040; fig. 2 and related text)]
adjust the namespace map to change a size of the namespace,… ; and [Asano teaches “enabling re-sizing of logical address namespaces.” (par. 0001) “an SSD may be logically divided into resizable chunks referred to as namespaces.” (par. 0004) where “the controller is further configured to increase the size of the namespace associated with the namespace identifier by allocating additional units of storage from the plurality of units of storage (i) adding, for each of the additional units of storage, a new entry to the end of the second look up table, the new entry containing the namespace identifier and the first portion of the logical cluster address of the additional unit of storage,” (par. 0019) “ the method comprises decreasing the size of the namespace associated with a namespace identifier by deleting the last entry in the second look up table containing the namespace identifier and the pointer associated with the namespace identifier.” (par. 0020)]
translate logical addresses in the namespace to physical addresses for the non-volatile storage media using the namespace map [Asano teaches “In order for an SSD controller to navigate these multiple sets of numbers, namespace allocation unit look-up tables (NSAU LUTs) are used to translated a LBA specified in a namespace to a physical address” (par. 0040; see par. 0039)].
Asano does not expressly disclose wherein the size of the namespace is not a multiple of the predetermined block size at least before the namespace map is adjusted or after the namespace map is adjusted; however, regarding these limitations, Atkisson teaches [“[0125] The logical address space 432 may be "sparse" meaning the logical address space 432 is large enough that allocated/assigned logical identifiers are non-contiguous and separated by sections of one or more unallocated/unassigned addresses, and, as such, may comprise a logical capacity that exceeds the physical storage capacity of the non-volatile storage device 402. Accordingly, the logical address space 432 may be defined independent of the non-volatile storage device 402; the logical address space 432 may present a larger address space than the physical storage capacity of the non-volatile storage device 402, may present different storage unit partitions and/or block sizes than provided by the non-volatile storage device 402, and so on.”].
Asano and Atkisson are analogous art because they are from the same field of endeavor of memory access and control.
Before the effective filing date of the claimed inventions, it would have been obvious to a person of ordinary skill in the art to modify Asano to have the size of the namespace is not a multiple of the predetermined block size at least before the namespace map is adjusted or after the namespace map is adjusted in the manner that Atkisson teaches namespaces or logical address spaces may be of any size and their size may not necessarily align with unit partitions/block sizes since doing so would at least provide the benefits of flexibility of design, thus providing flexible logical addressing regardless of physical storage device limitations.
Therefore, it would have been obvious to combine Asano with Atkisson for the benefit of creating a storage system/method to obtain the invention as specified in claim 1.
2. The computer storage device of claim 1, wherein the namespace map is adjusted in response to a request for a host to increase the size of the namespace [Asano teaches “a command from one of the hosts 110 requesting an increase in the size of the namespace with NSID ‘1’. The NSAU LUT entry 455 is added to the very end of the NSAU LUT 450, as shown in FIG. 6.” (par. 0053; fig. 6 and related text)].
3. The computer storage device of claim 2, wherein the namespace map is adjusted by adding an identifier of a block from the logical address capacity for association with the namespace [Asano teaches increasing a namespace size by adding an entry to the end of namespace mapping table (pars. 0019, 0040-0042) where “A new NSID entry 455 is added to the NSAU LUT table 450. This new entry 455 may be created by the SSD 120 in response to a command from one of the hosts 110 requesting an increase in the size of the namespace with NSID ‘1’. The NSAU LUT entry 455 is added to the very end of the NSAU LUT 450, as shown in FIG. 6.” (par. 0053; fig. 6 and related text) where each entry of NSAU LUT has a corresponding namespace identifier and each namespace allocation unit (NSAU) having a pointer in NSAU LUT table 450 (fig. 4 and related text)].
4. The computer storage device of claim 1, wherein the namespace map is adjusted in response to a request for a host to reduce the size of the namespace [Asano teaches “FIG. 8 illustrates a manner of decreasing the namespace according an implementation of the present disclosure. Here an NSAU entry 850 in NSAU LUT 450 is removed following a command received by the SSD 120 from a host 110 for namespace resizing.” (par. 0055; fig. 8 and related text)].
5. The computer storage device of claim 4, wherein the namespace map is adjusted by removing an identifier of a block from the logical address capacity from association with the namespace [The rationale in the rejection of claim 4 is herein incorporated. Asano teaches removing an entry in NSAU LUT to decrease the size of a namespace (See figs. 8 and 9 and related text)].
6. The computer storage device of claim 1, wherein the namespace map is adjusted in response to an increase in demand of allocated capacity of the namespace [Asano teaches “flexibility of namespaces for re-sizing as the hosts requirements change” (par. 0004) where “A manner of increasing a namespace will now be described with respect to FIG. 6 which shows the enlargement of an NSA with NSID ‘1’. A new NSID entry 455 is added to the NSAU LUT table 450. This new entry 455 may be created by the SSD 120 in response to a command from one of the hosts 110 requesting an increase in the size of the namespace with NSID ‘1’. The NSAU LUT entry 455 is added to the very end of the NSAU LUT 450, as shown in FIG. 6.” (par. 0053)].
15. A method implemented in a computer storage device, the method comprising: storing a namespace map mapping blocks of logical block addresses in a namespace to blocks, based on a predetermined block size, from a logical address capacity of non-volatile storage media of the computer storage device; adjusting the namespace map to change a size of the namespace, wherein the size of the namespace is not a multiple of the predetermined block size at least before or after the adjusting; and translating logical addresses in the namespace to physical addresses for the non-volatile storage media using the namespace map [The rationale in the rejection of claim 1 is herein incorporated].
16. The method of claim 15, wherein the adjusting of the namespace map is in response to one of: a request for a host to increase the size of the namespace; a request for a host to decrease the size of the namespace; and a determination to increase an allocated portion of the namespace, wherein the size of the namespace is a size of the allocated portion [The rationale in the rejection of claims 2 and 4 is here incorporated. Additionally, Asano teaches “LBAs for a given namespace are restricted to a range 0 to N−1, where N is the size of the namespace defined at the time it created.” (par. 0039) where “the controller is further configured to increase the size of the namespace associated with the namespace identifier by allocating additional units of storage from the plurality of units of storage (i) adding, for each of the additional units of storage, a new entry to the end of the second look up table, the new entry containing the namespace identifier and the first portion of the logical cluster address of the additional unit of storage,” (par. 0019) (see fig. 6 and related text) and “ the method comprises decreasing the size of the namespace associated with a namespace identifier by deleting the last entry in the second look up table containing the namespace identifier and the pointer associated with the namespace identifier.” (par. 0020; see fig. 8 and related text)].
17. The method of claim 16, wherein the adjusting the namespace map includes at least one of: adding an identifier of a block from the logical address capacity of the non-volatile storage media to the namespace map; and removing an identifier of a block in the logical address capacity of the non-volatile storage media to the namespace map [Asano teaches increasing a namespace size by adding an entry to the end of namespace mapping table (pars. 0019, 0040-0042) where “A new NSID entry 455 is added to the NSAU LUT table 450. This new entry 455 may be created by the SSD 120 in response to a command from one of the hosts 110 requesting an increase in the size of the namespace with NSID ‘1’. The NSAU LUT entry 455 is added to the very end of the NSAU LUT 450, as shown in FIG. 6.” (par. 0053; fig. 6 and related text). “FIG. 8 illustrates a manner of decreasing the namespace according an implementation of the present disclosure. Here an NSAU entry 850 in NSAU LUT 450 is removed following a command received by the SSD 120 from a host 110 for namespace resizing. Prior to receiving such a command, NSAU 850 corresponded to an LCA pointer 852 that mapped to an NSAU cluster 854 in the LCA space. Once NSAU entry 850 is removed, pointer 852 to NSAU 854 is also removed from the NSAU LUT 450, and the status of that cluster is updated to unallocated.” (par. 0055; figs. 8-9 and related text) where each entry of NSAU LUT has a corresponding namespace identifier and each namespace allocation unit (NSAU) having a pointer in NSAU LUT table 450 (fig. 4 and related text)].
20. A non-transitory computer storage medium storing instructions which, when executed by a controller of a computer storage device, cause the controller to perform a method, the method comprising: storing a namespace map mapping blocks of logical block addresses in a namespace to blocks, based on a predetermined block size, from a logical address capacity of non-volatile storage media of the computer storage device; adjusting the namespace map to change a size of the namespace, wherein the size of the namespace is not a multiple of the predetermined block size at least before or after the adjusting; and translating logical addresses in the namespace to physical addresses for the non-volatile storage media using the namespace map [The rationale in the rejection of claim 1 is herein incorporated].
Claim(s) 7-8 and 18-19 is/are rejected under 35 U.S.C. 103 as being unpatentable over Asano et al. (US 2018/0260334) in view of in view of Atkisson et al. (US 2012/0239860) as applied in the rejection of claim 1 above, and further in view of Dewitt et al. (US 2017/0153843).
7. The computer storage device of claim 1, wherein the logical address capacity of the non-volatile storage media is divided into predetermined blocks having the predetermined block size [Asano teaches “NVMe™ specifies that data stored in an SSD may be logically organized into subdivisions referred to as namespaces. The use of namespaces means that logical addresses provided by a host 110 to an SSD controller 130 include a namespace identifier (NSID), which identifies a namespace (and can be, for example, a short sequence of bits), in addition to a logical block address (LBA), which identifies a logical block within that namespace. LBAs for a given namespace are restricted to a range 0 to N−1, where N is the size of the namespace defined at the time it created.” (par. 0039). Atkisson teaches “[0162] FIG. 7 depicts one example of a sequential, log-based data format (packet format 710). A data packet 710 includes data (e.g., a data segment 712) that is associated with one or more logical identifiers. In some embodiments, the data segment 712 comprises compressed, encrypted, and/or whitened data. Furthermore, the data segment 712 may be encoded in one or more error-correcting code datastructures and/or symbols (e.g., ECC codewords, ECC symbols, or the like). The data segment 712 may be a predetermined size (e.g., a fixed "block" or "segment" size). Alternatively, the data segment 712 may be a variable size.”] but the combination of Asano and Atkisson does not expressly disclose the logical address capacity of non-volatile storage media is divided into predetermined blocks having the predetermined block size; however, regarding these limitations, [Dewitt teaches a storage device 6 may have 2,000,000 available LBAs with a logical block size of 512 bytes (par. 0030) where “On NVMe, a thinly provisioned namespace may be created by the host by specifying NSZE (namespace size) and NCAP (namespace capacity), along with the LBA block size.” (par. 0037; see par. 0049)].
Asano, Atkisson and Dewitt are analogous art because they are from the same field of endeavor of memory access and control.
Before the effective filing date of the claimed inventions, it would have been obvious to a person of ordinary skill in the art to modify the combination of Asano and Atkisson to have the logical address capacity of non-volatile storage media is divided into predetermined blocks having the predetermined block size as taught by Dewitt since doing so would provide the benefits of allowing namespaces to be allocated with a namespace block size of choice (par. 0049).
Therefore, it would have been obvious to combine Asano and Atkisson with Dewitt for the benefit of creating a storage system/method to obtain the invention as specified in claim 7.
8. The computer storage device of claim 7, wherein the predetermined block size is a power of two [Dewitt teaches a storage device 6 may have 2,000,000 available LBAs with a logical block size of 512 bytes (par. 0030) where 512 is a power or 2. Additionally, it has been held that discovering an optimum value of a result effective variable involves routine skill in the art. In re Boesch, 617 F.2d 272, 205 USPQ 215 (CCPA 1980) and A change in size is generally recognized as being within the level of ordinary skill in the art. In re Rose, 105 USPQ 237 (CCPA 1955). Therefore, modifying the block size of Dewitt to any given value would have been obvious to one of ordinary skill in the art since doing so would allow flexibility of design and doing so has been found to be routine skill in the art].
18. The method of claim 17, wherein the logical address capacity of the non-volatile storage media is divided into predetermined blocks having a same, predetermined block size that is a power of two; and each of the blocks from the logical address capacity of the non-volatile storage media mapped for the namespace is either one of the predetermined blocks or a portion of one of the predetermined block [The rationale in the rejection of claims 7-8 is herein incorporated. Dewitt teaches mapping blocks to namespaces (pars. 0030, 0037 and 0049)].
19. The method of claim 18, further comprising: adjusting the namespace map to remap logical block addresses in a namespace to contiguous ones of the predetermined blocks [Asano teaches “if a host requires an increase in the NSA corresponding to NSID ‘0’ by 40 clusters, for example, the additional number of NSAUs required for this operation is 1. Recall that NSID ‘0’ already has 140 clusters that spans 3 NSAUs 530-523, the last of which is partially filled. With 40 additional clusters, the total number of clusters for NSID ‘0’ is now 180, which gives a 180÷50=3 remainder 30. Thus the new NSID ‘0’ will occupy 4 NSAUs, which is an increase by one NSAU, the last of these 4 NSAUs will be partially used as the remainder 30 is less than k. The controller 130 then checks if there are unallocated NSAUs (from the maximum of z=100). If there are unallocated NSAUs, the NSAU pointer LUT 450 is re-ordered so as to create 1 free entry at the end of the entries corresponding to NSID ‘1’ so that all entries in the NSAU LUT 450 with the same NSID are contiguous. This re-ordering of the NSAU LUT 450 is critical when an increase in NSA is requested by a host. In the case for an increase in NSA corresponding to NSID ‘0’, the unallocated entry in the re-ordered NSAU LUT 450 would be reflected in the entries in the NSAU LUT 450 as {0, 1, 2, x, 3, 4, 5, 6, 7, . . . , z}, x denoting an unallocated NSAU. The entries in the NSID pointer table 430 are then updated from {0, 3, 7, x} to {0, 4, 8, x} to cater to the unallocated entry in the re-ordered NSAU LUT 450. The new entry is then inserted into the NSAU pointer table 450 for the new NSAU to increase the NSA for NSID ‘0’. The updated NSAU pointer table 450 is {0, 1, 2, 8, 3, 4, 5, 6, 7, . . . , z}, where 8 corresponds to clusters 351 to 400. It can be seen that while the pointers in NSAU LUT are ordered in a contiguous manner where like NSIDs are grouped together, the logical cluster address to which the pointers in the NSAU LUT point to do not need to be ordered. In this case the NSAU pointer table 450 is {0, 1, 2, 8, 3, 4, 5, 6, 7, . . . , z}, where the starting address for the increased LCA space for NSID ‘0’ is {0, 50, 100, 750}, the starting address for the LCA space for NSID ‘1’ is {150, 200, 250, 300}, and the starting address for the LCA space for NSID ‘2’ is {350}.” (par. 0052) thus re-ordering the map to map addresses contiguously].
ACKNOWLEDGEMENT OF ISSUES RAISED BY APPLICANT
Response to Amendment
Applicant's arguments filed on 4/15/2026 have been fully considered but they are moot in view of new grounds of rejection.
The double patenting rejections have been maintained as presented above.
CLOSING COMMENTS
a. STATUS OF CLAIMS IN THE APPLICATION
a(1) CLAIMS REJECTED IN THE APPLICATION
Per the instant office action, claims 1-8 and 15-20 have received a first action on the merits and are subject to a non-final rejection.
a(2) ALLOWABLE SUBJECT MATTER
Per the instant office action, claim 9 would be objected to as being dependent upon a rejected base claim, but would be allowable if rewritten in independent form including all of the limitations of the base claim and any intervening claims and if the double patenting rejections above are overcome.
9. The computer storage device of claim 7, wherein before the size of the namespace is changed, the namespace has a first block having a size smaller than the predetermined block size, and the first block is mapped by the namespace map to a portion of a first particular block among the predetermined blocks; and wherein after the size of the namespace is changed, the size of the first block is increased, and the first block is mapped by the namespace map to at least a portion of a second particular block among the predetermined blocks.
Claims 10-14 would be objected to by virtue of their dependence on objected claim 9.
10. The computer storage device of claim 9, wherein the second particular block is different from the first particular block.
11. The computer storage device of claim 10, wherein the namespace map is adjusted via: copying data from the portion of the first particular block to a corresponding portion of the second particular block; and replacing in the namespace map an identifier of the portion of the first particular block with an identifier of the corresponding portion of the second particular block.
12. The computer storage device of claim 10, wherein the namespace map is adjusted via: adding to the namespace map an identifier of a first portion of the second particular block, wherein the at least a portion of the second particular block includes the first portion of the second particular block and a second portion of the second particular block; and after the size of the namespace has changed: copying, in a background process, data from the portion of the first particular block to a second portion of the second particular block; and replacing in the namespace map an identifier of the portion of the first particular block and the identifier of the first portion of the second particular block with an identifier of the corresponding portion of the second particular block.
13. The computer storage device of claim 9, wherein after the size of the namespace is changed, the size of the first block is increased to the predetermined block size.
14. The computer storage device of claim 13, wherein the namespace map is adjusted via: replacing in the namespace map an identifier of the portion of the first particular block with an identifier of the second particular block.
b. DIRECTION OF FUTURE CORRESPONDENCES
Any inquiry concerning this communication or earlier communications from the examiner should be directed to YAIMA RIGOL whose telephone number is (571)272-1232. The examiner can normally be reached Monday-Friday 9:00AM-5:00PM.
Examiner interviews are available via telephone, in-person, and video conferencing using a USPTO supplied web-based collaboration tool. To schedule an interview, applicant is encouraged to use the USPTO Automated Interview Request (AIR) at http://www.uspto.gov/interviewpractice.
If attempts to reach the examiner by telephone are unsuccessful, the examiner’s supervisor, Jared I. Rutz can be reached on (571) 272-5535. The fax phone number for the organization where this application or proceeding is assigned is 571-273-8300.
Information regarding the status of published or unpublished applications may be obtained from Patent Center. Unpublished application information in Patent Center is available to registered users. To file and manage patent submissions in Patent Center, visit: https://patentcenter.uspto.gov. Visit https://www.uspto.gov/patents/apply/patent-center for more information about Patent Center and https://www.uspto.gov/patents/docx for information about filing in DOCX format. For additional questions, contact the Electronic Business Center (EBC) at 866-217-9197 (toll-free). If you would like assistance from a USPTO Customer Service Representative, call 800-786-9199 (IN USA OR CANADA) or 571-272-1000.
May 4, 2026
/YAIMA RIGOL/
Primary Examiner, Art Unit 2135