*/
        alloc_fifo              free[RESERVE_NR];
        alloc_fifo              free_inc;
-       spinlock_t              freelist_lock;
 
        u8                      open_buckets_partial[OPEN_BUCKETS_COUNT];
        unsigned                open_buckets_partial_nr;
 
 {
        bool ret;
 
-       spin_lock(&ca->freelist_lock);
+       spin_lock(&ca->fs->freelist_lock);
        ret = fifo_full(&ca->free[RESERVE_MOVINGGC]) ||
                ca->allocator_state != ALLOCATOR_RUNNING;
-       spin_unlock(&ca->freelist_lock);
+       spin_unlock(&ca->fs->freelist_lock);
 
        return ret;
 }
 
 
        writepoint_init(&ca->copygc_write_point, BCH_DATA_USER);
 
-       spin_lock_init(&ca->freelist_lock);
        bch2_dev_copygc_init(ca);
 
        INIT_WORK(&ca->io_error_work, bch2_io_error_work);
 
        struct printbuf out = _PBUF(buf, PAGE_SIZE);
        enum alloc_reserve i;
 
-       spin_lock(&ca->freelist_lock);
+       spin_lock(&ca->fs->freelist_lock);
 
        pr_buf(&out, "free_inc:\t%zu\t%zu\n",
               fifo_used(&ca->free_inc),
                       fifo_used(&ca->free[i]),
                       ca->free[i].size);
 
-       spin_unlock(&ca->freelist_lock);
+       spin_unlock(&ca->fs->freelist_lock);
 
        return out.pos - buf;
 }