]> git.sesse.net Git - bcachefs-tools-debian/blobdiff - cmd_dump.c
fix invalid write in pop_cmd()
[bcachefs-tools-debian] / cmd_dump.c
index 78d3d4a0fc5fe141872fec4d768fffcabfe0e0bd..3123ba2526281e8a449731cd9caf4675b84538fd 100644 (file)
@@ -59,7 +59,6 @@ static void dump_one_device(struct bch_fs *c, struct bch_dev *ca, int fd,
 
        /* Btree: */
        for (i = 0; i < BTREE_ID_NR; i++) {
-               const struct bch_extent_ptr *ptr;
                struct bkey_ptrs_c ptrs;
                struct btree_trans *trans = bch2_trans_get(c);
                struct btree_iter iter;
@@ -99,7 +98,7 @@ static void dump_one_device(struct bch_fs *c, struct bch_dev *ca, int fd,
                bch2_trans_put(trans);
        }
 
-       qcow2_write_image(ca->disk_sb.bdev->bd_buffered_fd, fd, &data,
+       qcow2_write_image(ca->disk_sb.bdev->bd_fd, fd, &data,
                          max_t(unsigned, btree_bytes(c) / 8, block_bytes(c)));
        darray_exit(&data);
 }
@@ -114,9 +113,8 @@ int cmd_dump(int argc, char *argv[])
                { NULL }
        };
        struct bch_opts opts = bch2_opts_empty();
-       struct bch_dev *ca;
        char *out = NULL;
-       unsigned i, nr_devices = 0;
+       unsigned nr_devices = 0;
        bool force = false, entire_journal = true;
        int fd, opt;
 
@@ -160,22 +158,19 @@ int cmd_dump(int argc, char *argv[])
 
        down_read(&c->gc_lock);
 
-       for_each_online_member(ca, c, i)
+       for_each_online_member(c, ca)
                nr_devices++;
 
        BUG_ON(!nr_devices);
 
-       for_each_online_member(ca, c, i) {
+       for_each_online_member(c, ca) {
                int flags = O_WRONLY|O_CREAT|O_TRUNC;
 
                if (!force)
                        flags |= O_EXCL;
 
-               if (!c->devs[i])
-                       continue;
-
                char *path = nr_devices > 1
-                       ? mprintf("%s.%u.qcow2", out, i)
+                       ? mprintf("%s.%u.qcow2", out, ca->dev_idx)
                        : mprintf("%s.qcow2", out);
                fd = xopen(path, flags, 0600);
                free(path);