Here is a different twist on your interesting scheme. First start with writting 3 blocks and parity in a full stripe.
Disk0 Disk1 Disk2 Disk3 D0 D1 D2 P0,1,2 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 So file update combine with new data into new full stripes. This is the trivial part. Now the hard part : We have to deal with D0. D0 is free of data content (subsided by D0'). However it holds parity information protecting live data D1, D2. If workload updates data in D1 and D2 the full stripe becomes free (this is the easy part). 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. -r _______________________________________________ zfs-discuss mailing list zfs-discuss@opensolaris.org http://mail.opensolaris.org/mailman/listinfo/zfs-discuss