Fix vitastor-disk resize to smaller size clearing all data O_o, add a test for it
This commit is contained in:
@@ -97,9 +97,9 @@ struct snap_flattener_t
|
||||
{ "from", top_parent_name },
|
||||
{ "to", target_name },
|
||||
{ "target", target_name },
|
||||
{ "delete-source", false },
|
||||
{ "delete_source", false },
|
||||
{ "cas", use_cas },
|
||||
{ "fsync-interval", fsync_interval },
|
||||
{ "fsync_interval", fsync_interval },
|
||||
});
|
||||
// Wait for it
|
||||
resume_1:
|
||||
|
||||
@@ -110,9 +110,9 @@ struct image_changer_t
|
||||
cb = parent->start_rm_data(json11::Json::object {
|
||||
{ "inode", INODE_NO_POOL(inode_num) },
|
||||
{ "pool", (uint64_t)INODE_POOL(inode_num) },
|
||||
{ "fsync-interval", fsync_interval },
|
||||
{ "min-offset", ((new_size+4095)/4096)*4096 },
|
||||
{ "down-ok", down_ok },
|
||||
{ "fsync_interval", fsync_interval },
|
||||
{ "min_offset", ((new_size+4095)/4096)*4096 },
|
||||
{ "down_ok", down_ok },
|
||||
});
|
||||
resume_1:
|
||||
while (!cb(result))
|
||||
|
||||
+4
-4
@@ -636,9 +636,9 @@ resume_100:
|
||||
{ "from", from_name },
|
||||
{ "to", child_it->second.name },
|
||||
{ "target", target_it->second.name },
|
||||
{ "delete-source", false },
|
||||
{ "delete_source", false },
|
||||
{ "cas", use_cas },
|
||||
{ "fsync-interval", fsync_interval },
|
||||
{ "fsync_interval", fsync_interval },
|
||||
});
|
||||
}
|
||||
|
||||
@@ -677,8 +677,8 @@ resume_100:
|
||||
cb = parent->start_rm_data(json11::Json::object {
|
||||
{ "inode", inode },
|
||||
{ "pool", (uint64_t)INODE_POOL(inode) },
|
||||
{ "fsync-interval", fsync_interval },
|
||||
{ "down-ok", down_ok },
|
||||
{ "fsync_interval", fsync_interval },
|
||||
{ "down_ok", down_ok },
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
@@ -10,4 +10,18 @@ $ETCDCTL get --prefix '/vitastor/pg/state'
|
||||
|
||||
$VITASTOR_CLI rm-data --pool 1 --inode 1
|
||||
|
||||
# test resize with partial data removal
|
||||
|
||||
$VITASTOR_CLI create -s 128M testimg
|
||||
|
||||
$VITASTOR_FIO -bs=4M -direct=1 -iodepth=1 -end_fsync=1 -fsync=1 -rw=write -image=testimg
|
||||
|
||||
$VITASTOR_CLI modify --resize 64M testimg
|
||||
|
||||
$VITASTOR_CLI dd iimg=testimg of=./testdata/bin/testimg.bin
|
||||
|
||||
sz=$(stat -c %s ./testdata/bin/testimg.bin)
|
||||
|
||||
[[ "$sz" = 67108864 ]] || format_error "File size is $sz bytes after resize to 64 M"
|
||||
|
||||
format_green OK
|
||||
|
||||
Reference in New Issue
Block a user