mirror of
https://github.com/linux-msm/rmtfs.git
synced 2024-11-23 12:14:12 +08:00
rmtfs: Better support for EFS backed by files
Currently, in order to back the EFS storage with a regular file, those files have to be pre-allocated, and with their correct size. This is especially problematic when preparing a minimal FSG, since we do not know ahead of time what size to pre-allocate. Allow reads that go beyond the end of the backing storage to simply read zeroes. When a write comes in, the file will be automatically expanded to the correct size. (And should really only be written if a full sector was pulled out of the modem). For solutions that use partitions instead of files, this change should be a no-op.
This commit is contained in:
parent
0d3c49ec5a
commit
08d20f1646
9
rmtfs.c
9
rmtfs.c
@ -188,10 +188,15 @@ static void rmtfs_iovec(int sock, struct qrtr_packet *pkt)
|
|||||||
for (j = 0; j < entries[i].num_sector; j++) {
|
for (j = 0; j < entries[i].num_sector; j++) {
|
||||||
if (is_write) {
|
if (is_write) {
|
||||||
n = rmtfs_mem_read(rmem, phys_offset, buf, SECTOR_SIZE);
|
n = rmtfs_mem_read(rmem, phys_offset, buf, SECTOR_SIZE);
|
||||||
n = write(fd, buf, n);
|
if (n == SECTOR_SIZE)
|
||||||
|
n = write(fd, buf, n);
|
||||||
} else {
|
} else {
|
||||||
n = read(fd, buf, SECTOR_SIZE);
|
n = read(fd, buf, SECTOR_SIZE);
|
||||||
n = rmtfs_mem_write(rmem, phys_offset, buf, n);
|
if (n >= 0) {
|
||||||
|
if (n < SECTOR_SIZE)
|
||||||
|
memset(buf + n, 0, SECTOR_SIZE - n);
|
||||||
|
n = rmtfs_mem_write(rmem, phys_offset, buf, SECTOR_SIZE);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (n != SECTOR_SIZE) {
|
if (n != SECTOR_SIZE) {
|
||||||
|
Loading…
Reference in New Issue
Block a user