Revision 8b3b7206 block/qcow2-snapshot.c

b/block/qcow2-snapshot.c
158 158
        h.id_str_size = cpu_to_be16(id_str_size);
159 159
        h.name_size = cpu_to_be16(name_size);
160 160
        offset = align_offset(offset, 8);
161
        if (bdrv_pwrite(bs->file, offset, &h, sizeof(h)) != sizeof(h))
161
        if (bdrv_pwrite_sync(bs->file, offset, &h, sizeof(h)) < 0)
162 162
            goto fail;
163 163
        offset += sizeof(h);
164
        if (bdrv_pwrite(bs->file, offset, sn->id_str, id_str_size) != id_str_size)
164
        if (bdrv_pwrite_sync(bs->file, offset, sn->id_str, id_str_size) < 0)
165 165
            goto fail;
166 166
        offset += id_str_size;
167
        if (bdrv_pwrite(bs->file, offset, sn->name, name_size) != name_size)
167
        if (bdrv_pwrite_sync(bs->file, offset, sn->name, name_size) < 0)
168 168
            goto fail;
169 169
        offset += name_size;
170 170
    }
171 171

  
172 172
    /* update the various header fields */
173 173
    data64 = cpu_to_be64(snapshots_offset);
174
    if (bdrv_pwrite(bs->file, offsetof(QCowHeader, snapshots_offset),
175
                    &data64, sizeof(data64)) != sizeof(data64))
174
    if (bdrv_pwrite_sync(bs->file, offsetof(QCowHeader, snapshots_offset),
175
                    &data64, sizeof(data64)) < 0)
176 176
        goto fail;
177 177
    data32 = cpu_to_be32(s->nb_snapshots);
178
    if (bdrv_pwrite(bs->file, offsetof(QCowHeader, nb_snapshots),
179
                    &data32, sizeof(data32)) != sizeof(data32))
178
    if (bdrv_pwrite_sync(bs->file, offsetof(QCowHeader, nb_snapshots),
179
                    &data32, sizeof(data32)) < 0)
180 180
        goto fail;
181 181

  
182 182
    /* free the old snapshot table */
......
284 284
    for(i = 0; i < s->l1_size; i++) {
285 285
        l1_table[i] = cpu_to_be64(s->l1_table[i]);
286 286
    }
287
    if (bdrv_pwrite(bs->file, sn->l1_table_offset,
288
                    l1_table, s->l1_size * sizeof(uint64_t)) !=
289
        (s->l1_size * sizeof(uint64_t)))
287
    if (bdrv_pwrite_sync(bs->file, sn->l1_table_offset,
288
                    l1_table, s->l1_size * sizeof(uint64_t)) < 0)
290 289
        goto fail;
291 290
    qemu_free(l1_table);
292 291
    l1_table = NULL;
......
335 334
    if (bdrv_pread(bs->file, sn->l1_table_offset,
336 335
                   s->l1_table, l1_size2) != l1_size2)
337 336
        goto fail;
338
    if (bdrv_pwrite(bs->file, s->l1_table_offset,
339
                    s->l1_table, l1_size2) != l1_size2)
337
    if (bdrv_pwrite_sync(bs->file, s->l1_table_offset,
338
                    s->l1_table, l1_size2) < 0)
340 339
        goto fail;
341 340
    for(i = 0;i < s->l1_size; i++) {
342 341
        be64_to_cpus(&s->l1_table[i]);

Also available in: Unified diff