150 |
{ |
{ |
151 |
STORAGE_CONCAT, "concat", stripe_read, stripe_write, |
STORAGE_CONCAT, "concat", stripe_read, stripe_write, |
152 |
concat_allocate_encoding, concat_encode, concat_decode, |
concat_allocate_encoding, concat_encode, concat_decode, |
153 |
store_set_child_flags, store_clear_child_flags, 0, 0, stripe_remap |
store_set_child_flags, store_clear_child_flags, 0, 0, stripe_remap, |
154 |
|
store_concat_open |
155 |
}; |
}; |
156 |
|
|
157 |
/* Return a new store in STORE that interleaves all the stores in STRIPES |
/* Return a new store in STORE that interleaves all the stores in STRIPES |
242 |
|
|
243 |
err = _store_create (&store_concat_class, MACH_PORT_NULL, |
err = _store_create (&store_concat_class, MACH_PORT_NULL, |
244 |
flags | common_flags, block_size, |
flags | common_flags, block_size, |
245 |
runs, num_stores * 2, 0, store); |
runs, num_stores, 0, store); |
246 |
if (! err) |
if (! err) |
247 |
{ |
{ |
248 |
err = store_set_children (*store, stores, num_stores); |
err = store_set_children (*store, stores, num_stores); |