fat: Remove commented out code, now in dosfs_get_file_map().
This commit is contained in:
@@ -364,12 +364,7 @@ dosfs_read(fs_volume *_vol, fs_vnode *_node, void *_cookie, off_t pos,
|
|||||||
nspace *vol = (nspace *)_vol->private_volume;
|
nspace *vol = (nspace *)_vol->private_volume;
|
||||||
vnode *node = (vnode *)_node->private_node;
|
vnode *node = (vnode *)_node->private_node;
|
||||||
filecookie *cookie = (filecookie *)_cookie;
|
filecookie *cookie = (filecookie *)_cookie;
|
||||||
//uint8 *buffer;
|
|
||||||
//struct csi iter;
|
|
||||||
int result = B_OK;
|
int result = B_OK;
|
||||||
//size_t bytes_read = 0;
|
|
||||||
//uint32 cluster1;
|
|
||||||
//off_t diff;
|
|
||||||
|
|
||||||
LOCK_VOL(vol);
|
LOCK_VOL(vol);
|
||||||
|
|
||||||
@@ -387,7 +382,6 @@ dosfs_read(fs_volume *_vol, fs_vnode *_node, void *_cookie, off_t pos,
|
|||||||
if (pos < 0) pos = 0;
|
if (pos < 0) pos = 0;
|
||||||
|
|
||||||
if ((node->st_size == 0) || (*len == 0) || (pos >= node->st_size)) {
|
if ((node->st_size == 0) || (*len == 0) || (pos >= node->st_size)) {
|
||||||
//bytes_read = 0;
|
|
||||||
*len = 0;
|
*len = 0;
|
||||||
goto bi;
|
goto bi;
|
||||||
}
|
}
|
||||||
@@ -398,102 +392,6 @@ dosfs_read(fs_volume *_vol, fs_vnode *_node, void *_cookie, off_t pos,
|
|||||||
|
|
||||||
result = file_cache_read(node->cache, cookie, pos, buf, len);
|
result = file_cache_read(node->cache, cookie, pos, buf, len);
|
||||||
|
|
||||||
#if 0
|
|
||||||
|
|
||||||
if ((cookie->ccache.iteration == node->iteration) &&
|
|
||||||
(pos >= cookie->ccache.index * vol->bytes_per_sector * vol->sectors_per_cluster)) {
|
|
||||||
/* the cached fat value is both valid and helpful */
|
|
||||||
ASSERT(IS_DATA_CLUSTER(cookie->ccache.cluster));
|
|
||||||
ASSERT(cookie->ccache.cluster == get_nth_fat_entry(vol, node->cluster, cookie->ccache.index));
|
|
||||||
cluster1 = cookie->ccache.cluster;
|
|
||||||
diff = pos - cookie->ccache.index * vol->bytes_per_sector * vol->sectors_per_cluster;
|
|
||||||
} else {
|
|
||||||
/* the fat chain changed, so we have to start from the beginning */
|
|
||||||
cluster1 = node->cluster;
|
|
||||||
diff = pos;
|
|
||||||
}
|
|
||||||
diff /= vol->bytes_per_sector; /* convert to sectors */
|
|
||||||
|
|
||||||
if ((result = init_csi(vol, cluster1, 0, &iter)) != B_OK) {
|
|
||||||
dprintf("dosfs_read: invalid starting cluster (%lx)\n", cluster1);
|
|
||||||
goto bi;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (diff && ((result = iter_csi(&iter, diff)) != B_OK)) {
|
|
||||||
dprintf("dosfs_read: end of file reached (init)\n");
|
|
||||||
result = EIO;
|
|
||||||
goto bi;
|
|
||||||
}
|
|
||||||
|
|
||||||
ASSERT(iter.cluster == get_nth_fat_entry(vol, node->cluster, pos / vol->bytes_per_sector / vol->sectors_per_cluster));
|
|
||||||
|
|
||||||
if ((pos % vol->bytes_per_sector) != 0) {
|
|
||||||
// read in partial first sector if necessary
|
|
||||||
size_t amt;
|
|
||||||
buffer = csi_get_block(&iter);
|
|
||||||
if (buffer == NULL) {
|
|
||||||
dprintf("dosfs_read: error reading cluster %lx, sector %lx\n", iter.cluster, iter.sector);
|
|
||||||
result = EIO;
|
|
||||||
goto bi;
|
|
||||||
}
|
|
||||||
amt = vol->bytes_per_sector - (pos % vol->bytes_per_sector);
|
|
||||||
if (amt > *len) amt = *len;
|
|
||||||
memcpy(buf, buffer + (pos % vol->bytes_per_sector), amt);
|
|
||||||
csi_release_block(&iter);
|
|
||||||
bytes_read += amt;
|
|
||||||
|
|
||||||
if (bytes_read < *len)
|
|
||||||
if ((result = iter_csi(&iter, 1)) != B_OK) {
|
|
||||||
dprintf("dosfs_read: end of file reached\n");
|
|
||||||
result = EIO;
|
|
||||||
goto bi;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// read middle sectors
|
|
||||||
while (bytes_read + vol->bytes_per_sector <= *len) {
|
|
||||||
result = csi_read_blocks(&iter, (uint8*)buf + bytes_read, *len - bytes_read);
|
|
||||||
if (result < B_OK) {
|
|
||||||
dprintf("dosfs_read: end of file reached\n");
|
|
||||||
goto bi;
|
|
||||||
}
|
|
||||||
bytes_read += result;
|
|
||||||
|
|
||||||
if (bytes_read < *len)
|
|
||||||
if ((result = iter_csi(&iter, 1)) != B_OK) {
|
|
||||||
dprintf("dosfs_read: end of file reached\n");
|
|
||||||
result = EIO;
|
|
||||||
goto bi;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// read part of remaining sector if needed
|
|
||||||
if (bytes_read < *len) {
|
|
||||||
size_t amt;
|
|
||||||
|
|
||||||
buffer = csi_get_block(&iter);
|
|
||||||
if (buffer == NULL) {
|
|
||||||
dprintf("dosfs_read: error reading cluster %lx, sector %lx\n", iter.cluster, iter.sector);
|
|
||||||
result = EIO;
|
|
||||||
goto bi;
|
|
||||||
}
|
|
||||||
amt = *len - bytes_read;
|
|
||||||
memcpy((uint8*)buf + bytes_read, buffer, amt);
|
|
||||||
csi_release_block(&iter);
|
|
||||||
bytes_read += amt;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (*len) {
|
|
||||||
cookie->ccache.iteration = node->iteration;
|
|
||||||
cookie->ccache.index = (pos + *len - 1) / vol->bytes_per_sector / vol->sectors_per_cluster;
|
|
||||||
cookie->ccache.cluster = iter.cluster;
|
|
||||||
|
|
||||||
ASSERT(cookie->ccache.cluster == get_nth_fat_entry(vol, node->cluster, cookie->ccache.index));
|
|
||||||
}
|
|
||||||
|
|
||||||
result = B_OK;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
bi:
|
bi:
|
||||||
if (result != B_OK) {
|
if (result != B_OK) {
|
||||||
DPRINTF(0, ("dosfs_read (%s)\n", strerror(result)));
|
DPRINTF(0, ("dosfs_read (%s)\n", strerror(result)));
|
||||||
@@ -513,13 +411,7 @@ dosfs_write(fs_volume *_vol, fs_vnode *_node, void *_cookie, off_t pos,
|
|||||||
nspace *vol = (nspace *)_vol->private_volume;
|
nspace *vol = (nspace *)_vol->private_volume;
|
||||||
vnode *node = (vnode *)_node->private_node;
|
vnode *node = (vnode *)_node->private_node;
|
||||||
filecookie *cookie = (filecookie *)_cookie;
|
filecookie *cookie = (filecookie *)_cookie;
|
||||||
//uint8 *buffer;
|
|
||||||
//struct csi iter;
|
|
||||||
int result = B_OK;
|
int result = B_OK;
|
||||||
//size_t bytes_written = 0;
|
|
||||||
//uint32 cluster1;
|
|
||||||
//off_t diff;
|
|
||||||
|
|
||||||
|
|
||||||
LOCK_VOL(vol);
|
LOCK_VOL(vol);
|
||||||
|
|
||||||
@@ -560,21 +452,6 @@ dosfs_write(fs_volume *_vol, fs_vnode *_node, void *_cookie, off_t pos,
|
|||||||
*len = (size_t)(MAX_FILE_SIZE - pos);
|
*len = (size_t)(MAX_FILE_SIZE - pos);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0
|
|
||||||
|
|
||||||
if (node->st_size &&
|
|
||||||
(cookie->ccache.iteration == node->iteration) &&
|
|
||||||
(pos >= cookie->ccache.index * vol->bytes_per_sector * vol->sectors_per_cluster)) {
|
|
||||||
ASSERT(IS_DATA_CLUSTER(cookie->ccache.cluster));
|
|
||||||
ASSERT(cookie->ccache.cluster == get_nth_fat_entry(vol, node->cluster, cookie->ccache.index));
|
|
||||||
cluster1 = cookie->ccache.cluster;
|
|
||||||
diff = pos - cookie->ccache.index * vol->bytes_per_sector * vol->sectors_per_cluster;
|
|
||||||
} else {
|
|
||||||
cluster1 = 0xffffffff;
|
|
||||||
diff = 0;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// extend file size if needed
|
// extend file size if needed
|
||||||
if (pos + *len > node->st_size) {
|
if (pos + *len > node->st_size) {
|
||||||
uint32 clusters = (pos + *len + vol->bytes_per_sector*vol->sectors_per_cluster - 1) / vol->bytes_per_sector / vol->sectors_per_cluster;
|
uint32 clusters = (pos + *len + vol->bytes_per_sector*vol->sectors_per_cluster - 1) / vol->bytes_per_sector / vol->sectors_per_cluster;
|
||||||
@@ -599,98 +476,6 @@ dosfs_write(fs_volume *_vol, fs_vnode *_node, void *_cookie, off_t pos,
|
|||||||
|
|
||||||
result = file_cache_write(node->cache, cookie, pos, buf, len);
|
result = file_cache_write(node->cache, cookie, pos, buf, len);
|
||||||
|
|
||||||
#if 0
|
|
||||||
if (cluster1 == 0xffffffff) {
|
|
||||||
cluster1 = node->cluster;
|
|
||||||
diff = pos;
|
|
||||||
}
|
|
||||||
diff /= vol->bytes_per_sector; /* convert to sectors */
|
|
||||||
|
|
||||||
if ((result = init_csi(vol, cluster1, 0, &iter)) != B_OK) {
|
|
||||||
dprintf("dosfs_write: invalid starting cluster (%lx)\n", cluster1);
|
|
||||||
goto bi;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (diff && ((result = iter_csi(&iter, diff)) != B_OK)) {
|
|
||||||
dprintf("dosfs_write: end of file reached (init)\n");
|
|
||||||
result = EIO;
|
|
||||||
goto bi;
|
|
||||||
}
|
|
||||||
|
|
||||||
ASSERT(iter.cluster == get_nth_fat_entry(vol, node->cluster, pos / vol->bytes_per_sector / vol->sectors_per_cluster));
|
|
||||||
|
|
||||||
if(*len > 0)
|
|
||||||
node->dirty = true;
|
|
||||||
|
|
||||||
// write partial first sector if necessary
|
|
||||||
if ((pos % vol->bytes_per_sector) != 0) {
|
|
||||||
size_t amt;
|
|
||||||
buffer = csi_get_block(&iter);
|
|
||||||
if (buffer == NULL) {
|
|
||||||
dprintf("dosfs_write: error writing cluster %lx, sector %lx\n", iter.cluster, iter.sector);
|
|
||||||
result = EIO;
|
|
||||||
goto bi;
|
|
||||||
}
|
|
||||||
amt = vol->bytes_per_sector - (pos % vol->bytes_per_sector);
|
|
||||||
if (amt > *len) amt = *len;
|
|
||||||
memcpy(buffer + (pos % vol->bytes_per_sector), buf, amt);
|
|
||||||
csi_mark_block_dirty(&iter);
|
|
||||||
csi_release_block(&iter);
|
|
||||||
bytes_written += amt;
|
|
||||||
|
|
||||||
if (bytes_written < *len)
|
|
||||||
if ((result = iter_csi(&iter, 1)) != B_OK) {
|
|
||||||
dprintf("dosfs_write: end of file reached\n");
|
|
||||||
result = EIO;
|
|
||||||
goto bi;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// write middle sectors
|
|
||||||
while (bytes_written + vol->bytes_per_sector <= *len) {
|
|
||||||
result = csi_write_blocks(&iter, (uint8*)buf + bytes_written, *len - bytes_written);
|
|
||||||
if (result < B_OK) {
|
|
||||||
dprintf("dosfs_write: end of file reached\n");
|
|
||||||
goto bi;
|
|
||||||
}
|
|
||||||
bytes_written += result;
|
|
||||||
|
|
||||||
if (bytes_written < *len)
|
|
||||||
if ((result = iter_csi(&iter, 1)) != B_OK) {
|
|
||||||
dprintf("dosfs_write: end of file reached\n");
|
|
||||||
result = EIO;
|
|
||||||
goto bi;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// write part of remaining sector if needed
|
|
||||||
if (bytes_written < *len) {
|
|
||||||
size_t amt;
|
|
||||||
|
|
||||||
buffer = csi_get_block(&iter);
|
|
||||||
if (buffer == NULL) {
|
|
||||||
dprintf("error writing cluster %lx, sector %lx\n", iter.cluster, iter.sector);
|
|
||||||
result = EIO;
|
|
||||||
goto bi;
|
|
||||||
}
|
|
||||||
amt = *len - bytes_written;
|
|
||||||
memcpy(buffer, (uint8*)buf + bytes_written, amt);
|
|
||||||
csi_mark_block_dirty(&iter);
|
|
||||||
csi_release_block(&iter);
|
|
||||||
bytes_written += amt;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (*len) {
|
|
||||||
cookie->ccache.iteration = node->iteration;
|
|
||||||
cookie->ccache.index = (pos + *len - 1) / vol->bytes_per_sector / vol->sectors_per_cluster;
|
|
||||||
cookie->ccache.cluster = iter.cluster;
|
|
||||||
|
|
||||||
ASSERT(cookie->ccache.cluster == get_nth_fat_entry(vol, node->cluster, cookie->ccache.index));
|
|
||||||
}
|
|
||||||
|
|
||||||
result = B_OK;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
bi:
|
bi:
|
||||||
if (result != B_OK) {
|
if (result != B_OK) {
|
||||||
DPRINTF(0, ("dosfs_write (%s)\n", strerror(result)));
|
DPRINTF(0, ("dosfs_write (%s)\n", strerror(result)));
|
||||||
|
|||||||
Reference in New Issue
Block a user