void cpu_dumpconf(void) { int nblks; /* * XXX include the final RAM page which is not included in physmem. */ if (dumpdev == NODEV) return; nblks = bdev_size(dumpdev); if (nblks > 0) { if (dumpsize > btoc(dbtob(nblks - dumplo))) dumpsize = btoc(dbtob(nblks - dumplo)); else if (dumplo == 0) dumplo = nblks - btodb(ctob(dumpsize)); } /* * Don't dump on the first PAGE_SIZE (why PAGE_SIZE?) in case the dump * device includes a disk label. */ if (dumplo < btodb(PAGE_SIZE)) dumplo = btodb(PAGE_SIZE); /* * If we have nothing to dump (XXX implement crash dumps), * make it clear for savecore that there is no dump. */ if (dumpsize <= 0) dumplo = 0; }
static int get_file_size(struct thread_data *td, struct fio_file *f) { int ret = 0; if (fio_file_size_known(f)) return 0; if (f->filetype == FIO_TYPE_FILE) ret = file_size(td, f); else if (f->filetype == FIO_TYPE_BD) ret = bdev_size(td, f); else if (f->filetype == FIO_TYPE_CHAR) ret = char_size(td, f); else f->real_file_size = -1; if (ret) return ret; if (f->file_offset > f->real_file_size) { log_err("%s: offset extends end (%llu > %llu)\n", td->o.name, (unsigned long long) f->file_offset, (unsigned long long) f->real_file_size); return 1; } fio_file_set_size_known(f); return 0; }
/* * lookup device size in blocks, * and return available space in bytes */ size_t cpr_get_devsize(dev_t dev) { size_t bytes = 0; int64_t Nblocks; int nblocks; if ((Nblocks = bdev_Size(dev)) != -1) bytes = dbtob(Nblocks); else if ((nblocks = bdev_size(dev)) != -1) bytes = dbtob(nblocks); if (bytes > CPR_SPEC_OFFSET) bytes -= CPR_SPEC_OFFSET; else bytes = 0; return (bytes); }