typedef FIFO(long)     alloc_fifo;
 
-/* Enough for 16 cache devices, 2 tiers and some left over for pipelining */
-#define OPEN_BUCKETS_COUNT     256
+#define OPEN_BUCKETS_COUNT     1024
 
 #define WRITE_POINT_HASH_NR    32
 #define WRITE_POINT_MAX                32
 
+typedef u16                    open_bucket_idx_t;
+
 struct open_bucket {
        spinlock_t              lock;
        atomic_t                pin;
-       u8                      freelist;
+       open_bucket_idx_t       freelist;
+
+       /*
+        * When an open bucket has an ec_stripe attached, this is the index of
+        * the block in the stripe this open_bucket corresponds to:
+        */
        u8                      ec_idx;
        u8                      type;
        unsigned                valid:1;
 #define OPEN_BUCKET_LIST_MAX   15
 
 struct open_buckets {
-       u8                      nr;
-       u8                      v[OPEN_BUCKET_LIST_MAX];
+       open_bucket_idx_t       nr;
+       open_bucket_idx_t       v[OPEN_BUCKET_LIST_MAX];
 };
 
 struct dev_stripe_state {
 
        alloc_fifo              free[RESERVE_NR];
        alloc_fifo              free_inc;
 
-       u8                      open_buckets_partial[OPEN_BUCKETS_COUNT];
-       unsigned                open_buckets_partial_nr;
+       open_bucket_idx_t       open_buckets_partial[OPEN_BUCKETS_COUNT];
+       open_bucket_idx_t       open_buckets_partial_nr;
 
        size_t                  fifo_last_bucket;
 
        struct closure_waitlist freelist_wait;
        u64                     blocked_allocate;
        u64                     blocked_allocate_open_bucket;
-       u8                      open_buckets_freelist;
-       u8                      open_buckets_nr_free;
+       open_bucket_idx_t       open_buckets_freelist;
+       open_bucket_idx_t       open_buckets_nr_free;
        struct closure_waitlist open_buckets_wait;
        struct open_bucket      open_buckets[OPEN_BUCKETS_COUNT];
 
 
        struct btree                    *new_nodes[BTREE_UPDATE_NODES_MAX];
        unsigned                        nr_new_nodes;
 
-       u8                              open_buckets[BTREE_UPDATE_NODES_MAX *
+       open_bucket_idx_t               open_buckets[BTREE_UPDATE_NODES_MAX *
                                                     BCH_REPLICAS_MAX];
-       u8                              nr_open_buckets;
+       open_bucket_idx_t               nr_open_buckets;
 
        unsigned                        journal_u64s;
        u64                             journal_entries[BTREE_UPDATE_JOURNAL_RES];