On 9/20/07, Roch - PAE <[EMAIL PROTECTED]> wrote: > > Next application modifies D0 -> D0' and also writes other > data D3, D4. Now you have > > Disk0 Disk1 Disk2 Disk3 > > D0 D1 D2 P0,1,2 > D0' D3 D4 P0',3,4 > > But if D1 and D2 stays immutable for long time then we can > run out of pool blocks with D0 held down in an half-freed state. > So as we near full pool capacity, a scrubber would have to walk > the stripes and look for partially freed ones. Then it > would need to do a scrubbing "read/write" on D1, D2 so that > they become part of a new stripe with some other data > freeing the full initial stripe. >
Or, given a list of partial stripes (and sufficient cache), next write of D5 could be combined with D1,D2: Disk0 Disk1 Disk2 Disk3 D0 D1 D2 P0,1,2 D0' D3 D4 P0',3,4 D5 free free P5,1,2 therefore freeing D0 and P012: Disk0 Disk1 Disk2 Disk3 free D1 D2 free D0' D3 D4 P0',3,4 D5 free free P5,1,2 (I assumed no need for alignment). Performance-wise, i'm guessing it might be beneficial to "quickly" write mirrored blocks on the disk and later combine them, freeing the now unneeded mirrors. _______________________________________________ zfs-discuss mailing list zfs-discuss@opensolaris.org http://mail.opensolaris.org/mailman/listinfo/zfs-discuss