[PATCH] Must use ->real_file_size
[fio.git] / filesetup.c
index 2e8821c5c6d6a36ef0e840d3e9b6161f3ba5eb1f..a14cd9503a68dbab9a656b78a3fd92726d46b07c 100644 (file)
@@ -124,7 +124,12 @@ static int create_files(struct thread_data *td)
 
        err = 0;
        for_each_file(td, f, i) {
 
        err = 0;
        for_each_file(td, f, i) {
+               /*
+                * Only unlink files that we created.
+                */
+               f->unlink = 0;
                if (file_ok(td, f)) {
                if (file_ok(td, f)) {
+                       f->unlink = td->unlink;
                        err = create_file(td, f);
                        if (err)
                                break;
                        err = create_file(td, f);
                        if (err)
                                break;
@@ -151,7 +156,7 @@ static int file_size(struct thread_data *td, struct fio_file *f)
                        f->file_size = f->real_file_size;
        }
 
                        f->file_size = f->real_file_size;
        }
 
-       f->file_size -= f->file_offset;
+       f->file_size = f->real_file_size - f->file_offset;
        return 0;
 }
 
        return 0;
 }
 
@@ -434,7 +439,7 @@ void close_files(struct thread_data *td)
        int i;
 
        for_each_file(td, f, i) {
        int i;
 
        for_each_file(td, f, i) {
-               if (!td->filename && td->unlink &&
+               if (!td->filename && f->unlink &&
                    td->filetype == FIO_TYPE_FILE) {
                        unlink(f->file_name);
                        free(f->file_name);
                    td->filetype == FIO_TYPE_FILE) {
                        unlink(f->file_name);
                        free(f->file_name);