Lines Matching refs:sn

89     QCowSnapshot *sn;  in qcow2_do_read_snapshots()  local
119 sn = s->snapshots + i; in qcow2_do_read_snapshots()
120 sn->l1_table_offset = be64_to_cpu(h.l1_table_offset); in qcow2_do_read_snapshots()
121 sn->l1_size = be32_to_cpu(h.l1_size); in qcow2_do_read_snapshots()
122 sn->vm_state_size = be32_to_cpu(h.vm_state_size); in qcow2_do_read_snapshots()
123 sn->date_sec = be32_to_cpu(h.date_sec); in qcow2_do_read_snapshots()
124 sn->date_nsec = be32_to_cpu(h.date_nsec); in qcow2_do_read_snapshots()
125 sn->vm_clock_nsec = be64_to_cpu(h.vm_clock_nsec); in qcow2_do_read_snapshots()
126 sn->extra_data_size = be32_to_cpu(h.extra_data_size); in qcow2_do_read_snapshots()
131 if (sn->extra_data_size > QCOW_MAX_SNAPSHOT_EXTRA_DATA) { in qcow2_do_read_snapshots()
143 i, sn->extra_data_size, QCOW_MAX_SNAPSHOT_EXTRA_DATA); in qcow2_do_read_snapshots()
151 MIN(sizeof(extra), sn->extra_data_size), &extra, 0); in qcow2_do_read_snapshots()
156 offset += MIN(sizeof(extra), sn->extra_data_size); in qcow2_do_read_snapshots()
158 if (sn->extra_data_size >= endof(QCowSnapshotExtraData, in qcow2_do_read_snapshots()
160 sn->vm_state_size = be64_to_cpu(extra.vm_state_size_large); in qcow2_do_read_snapshots()
163 if (sn->extra_data_size >= endof(QCowSnapshotExtraData, disk_size)) { in qcow2_do_read_snapshots()
164 sn->disk_size = be64_to_cpu(extra.disk_size); in qcow2_do_read_snapshots()
166 sn->disk_size = bs->total_sectors * BDRV_SECTOR_SIZE; in qcow2_do_read_snapshots()
169 if (sn->extra_data_size >= endof(QCowSnapshotExtraData, icount)) { in qcow2_do_read_snapshots()
170 sn->icount = be64_to_cpu(extra.icount); in qcow2_do_read_snapshots()
172 sn->icount = -1ULL; in qcow2_do_read_snapshots()
175 if (sn->extra_data_size > sizeof(extra)) { in qcow2_do_read_snapshots()
179 extra_data_end = offset + sn->extra_data_size - sizeof(extra); in qcow2_do_read_snapshots()
182 sn->extra_data_size = QCOW_MAX_SNAPSHOT_EXTRA_DATA; in qcow2_do_read_snapshots()
186 unknown_extra_data_size = sn->extra_data_size - sizeof(extra); in qcow2_do_read_snapshots()
187 sn->unknown_extra_data = g_malloc(unknown_extra_data_size); in qcow2_do_read_snapshots()
189 sn->unknown_extra_data, 0); in qcow2_do_read_snapshots()
199 sn->id_str = g_malloc(id_str_size + 1); in qcow2_do_read_snapshots()
200 ret = bdrv_co_pread(bs->file, offset, id_str_size, sn->id_str, 0); in qcow2_do_read_snapshots()
206 sn->id_str[id_str_size] = '\0'; in qcow2_do_read_snapshots()
209 sn->name = g_malloc(name_size + 1); in qcow2_do_read_snapshots()
210 ret = bdrv_co_pread(bs->file, offset, name_size, sn->name, 0); in qcow2_do_read_snapshots()
216 sn->name[name_size] = '\0'; in qcow2_do_read_snapshots()
219 table_length += sizeof(h) + sn->extra_data_size + id_str_size + in qcow2_do_read_snapshots()
274 QCowSnapshot *sn; in qcow2_write_snapshots() local
288 sn = s->snapshots + i; in qcow2_write_snapshots()
291 offset += MAX(sizeof(extra), sn->extra_data_size); in qcow2_write_snapshots()
292 offset += strlen(sn->id_str); in qcow2_write_snapshots()
293 offset += strlen(sn->name); in qcow2_write_snapshots()
326 sn = s->snapshots + i; in qcow2_write_snapshots()
328 h.l1_table_offset = cpu_to_be64(sn->l1_table_offset); in qcow2_write_snapshots()
329 h.l1_size = cpu_to_be32(sn->l1_size); in qcow2_write_snapshots()
332 if (sn->vm_state_size <= 0xffffffff) { in qcow2_write_snapshots()
333 h.vm_state_size = cpu_to_be32(sn->vm_state_size); in qcow2_write_snapshots()
335 h.date_sec = cpu_to_be32(sn->date_sec); in qcow2_write_snapshots()
336 h.date_nsec = cpu_to_be32(sn->date_nsec); in qcow2_write_snapshots()
337 h.vm_clock_nsec = cpu_to_be64(sn->vm_clock_nsec); in qcow2_write_snapshots()
339 sn->extra_data_size)); in qcow2_write_snapshots()
342 extra.vm_state_size_large = cpu_to_be64(sn->vm_state_size); in qcow2_write_snapshots()
343 extra.disk_size = cpu_to_be64(sn->disk_size); in qcow2_write_snapshots()
344 extra.icount = cpu_to_be64(sn->icount); in qcow2_write_snapshots()
346 id_str_size = strlen(sn->id_str); in qcow2_write_snapshots()
347 name_size = strlen(sn->name); in qcow2_write_snapshots()
365 if (sn->extra_data_size > sizeof(extra)) { in qcow2_write_snapshots()
367 sn->extra_data_size - sizeof(extra); in qcow2_write_snapshots()
371 assert(sn->unknown_extra_data); in qcow2_write_snapshots()
374 sn->unknown_extra_data, 0); in qcow2_write_snapshots()
381 ret = bdrv_pwrite(bs->file, offset, id_str_size, sn->id_str, 0); in qcow2_write_snapshots()
387 ret = bdrv_pwrite(bs->file, offset, name_size, sn->name, 0); in qcow2_write_snapshots()
580 QCowSnapshot *sn; in find_new_snapshot_id() local
585 sn = s->snapshots + i; in find_new_snapshot_id()
586 id = strtoul(sn->id_str, NULL, 10); in find_new_snapshot_id()
642 QCowSnapshot sn1, *sn = &sn1; in qcow2_snapshot_create() local
655 memset(sn, 0, sizeof(*sn)); in qcow2_snapshot_create()
661 sn->id_str = g_strdup(sn_info->id_str); in qcow2_snapshot_create()
662 sn->name = g_strdup(sn_info->name); in qcow2_snapshot_create()
664 sn->disk_size = bs->total_sectors * BDRV_SECTOR_SIZE; in qcow2_snapshot_create()
665 sn->vm_state_size = sn_info->vm_state_size; in qcow2_snapshot_create()
666 sn->date_sec = sn_info->date_sec; in qcow2_snapshot_create()
667 sn->date_nsec = sn_info->date_nsec; in qcow2_snapshot_create()
668 sn->vm_clock_nsec = sn_info->vm_clock_nsec; in qcow2_snapshot_create()
669 sn->icount = sn_info->icount; in qcow2_snapshot_create()
670 sn->extra_data_size = sizeof(QCowSnapshotExtraData); in qcow2_snapshot_create()
679 sn->l1_table_offset = l1_table_offset; in qcow2_snapshot_create()
680 sn->l1_size = s->l1_size; in qcow2_snapshot_create()
692 ret = qcow2_pre_write_overlap_check(bs, 0, sn->l1_table_offset, in qcow2_snapshot_create()
698 ret = bdrv_pwrite(bs->file, sn->l1_table_offset, s->l1_size * L1E_SIZE, in qcow2_snapshot_create()
725 s->snapshots[s->nb_snapshots++] = *sn; in qcow2_snapshot_create()
740 ROUND_UP(sn->vm_state_size, s->cluster_size), in qcow2_snapshot_create()
752 g_free(sn->id_str); in qcow2_snapshot_create()
753 g_free(sn->name); in qcow2_snapshot_create()
763 QCowSnapshot *sn; in qcow2_snapshot_goto() local
779 sn = &s->snapshots[snapshot_index]; in qcow2_snapshot_goto()
781 ret = qcow2_validate_table(bs, sn->l1_table_offset, sn->l1_size, in qcow2_snapshot_goto()
789 if (sn->disk_size != bs->total_sectors * BDRV_SECTOR_SIZE) { in qcow2_snapshot_goto()
798 ret = blk_truncate(blk, sn->disk_size, true, PREALLOC_MODE_OFF, 0, in qcow2_snapshot_goto()
812 ret = qcow2_grow_l1_table(bs, sn->l1_size, true); in qcow2_snapshot_goto()
818 sn_l1_bytes = sn->l1_size * L1E_SIZE; in qcow2_snapshot_goto()
834 ret = bdrv_pread(bs->file, sn->l1_table_offset, sn_l1_bytes, sn_l1_table, in qcow2_snapshot_goto()
840 ret = qcow2_update_snapshot_refcount(bs, sn->l1_table_offset, in qcow2_snapshot_goto()
841 sn->l1_size, 1); in qcow2_snapshot_goto()
915 QCowSnapshot sn; in qcow2_snapshot_delete() local
928 sn = s->snapshots[snapshot_index]; in qcow2_snapshot_delete()
930 ret = qcow2_validate_table(bs, sn.l1_table_offset, sn.l1_size, in qcow2_snapshot_delete()
940 (s->nb_snapshots - snapshot_index - 1) * sizeof(sn)); in qcow2_snapshot_delete()
953 g_free(sn.unknown_extra_data); in qcow2_snapshot_delete()
954 g_free(sn.id_str); in qcow2_snapshot_delete()
955 g_free(sn.name); in qcow2_snapshot_delete()
961 ret = qcow2_update_snapshot_refcount(bs, sn.l1_table_offset, in qcow2_snapshot_delete()
962 sn.l1_size, -1); in qcow2_snapshot_delete()
967 qcow2_free_clusters(bs, sn.l1_table_offset, sn.l1_size * L1E_SIZE, in qcow2_snapshot_delete()
991 QCowSnapshot *sn; in qcow2_snapshot_list() local
1005 sn = s->snapshots + i; in qcow2_snapshot_list()
1007 sn->id_str); in qcow2_snapshot_list()
1009 sn->name); in qcow2_snapshot_list()
1010 sn_info->vm_state_size = sn->vm_state_size; in qcow2_snapshot_list()
1011 sn_info->date_sec = sn->date_sec; in qcow2_snapshot_list()
1012 sn_info->date_nsec = sn->date_nsec; in qcow2_snapshot_list()
1013 sn_info->vm_clock_nsec = sn->vm_clock_nsec; in qcow2_snapshot_list()
1014 sn_info->icount = sn->icount; in qcow2_snapshot_list()
1027 QCowSnapshot *sn; in qcow2_snapshot_load_tmp() local
1041 sn = &s->snapshots[snapshot_index]; in qcow2_snapshot_load_tmp()
1044 ret = qcow2_validate_table(bs, sn->l1_table_offset, sn->l1_size, in qcow2_snapshot_load_tmp()
1050 new_l1_bytes = sn->l1_size * L1E_SIZE; in qcow2_snapshot_load_tmp()
1056 ret = bdrv_pread(bs->file, sn->l1_table_offset, new_l1_bytes, in qcow2_snapshot_load_tmp()
1067 s->l1_size = sn->l1_size; in qcow2_snapshot_load_tmp()
1068 s->l1_table_offset = sn->l1_table_offset; in qcow2_snapshot_load_tmp()