Do not perform the actual write on a read-only volume!

(Logical change 1.66)
edge.strict_endians
cantab.net!aia21 2002-12-27 23:44:01 +00:00
parent b7270466fe
commit 9fd4cc17e3
3 changed files with 17 additions and 6 deletions

View File

@ -958,8 +958,12 @@ retry:
Dprintf("%s(): Writing 0x%Lx bytes to vcn 0x%Lx, lcn 0x%Lx, "
"ofs 0x%Lx.\n", __FUNCTION__, to_write,
rl->vcn, rl->lcn, ofs);
written = ntfs_pwrite(f, (rl->lcn << vol->cluster_size_bits) +
ofs, to_write, b);
if (!NVolReadOnly(vol))
written = ntfs_pwrite(f, (rl->lcn <<
vol->cluster_size_bits) + ofs,
to_write, b);
else
written = to_write;
/* If everything ok, update progress counters and continue. */
if (written > 0) {
total += written;

View File

@ -320,8 +320,11 @@ s64 ntfs_cluster_write(const ntfs_volume *vol, const s64 lcn,
errno = ESPIPE;
return -1;
}
bw = ntfs_pwrite(vol->fd, lcn << vol->cluster_size_bits,
count << vol->cluster_size_bits, b);
if (!NVolReadOnly(vol))
bw = ntfs_pwrite(vol->fd, lcn << vol->cluster_size_bits,
count << vol->cluster_size_bits, b);
else
bw = count << vol->cluster_size_bits;
if (bw < 0) {
Dperror("Error writing cluster(s)");
return bw;

View File

@ -1072,8 +1072,12 @@ s64 ntfs_rl_pwrite(const ntfs_volume *vol, const runlist_element *rl,
to_write = min(count, (rl->length << vol->cluster_size_bits) -
ofs);
retry:
written = ntfs_pwrite(f, (rl->lcn << vol->cluster_size_bits) +
ofs, to_write, b);
if (!NVolReadOnly(vol))
written = ntfs_pwrite(f, (rl->lcn <<
vol->cluster_size_bits) + ofs,
to_write, b);
else
written = to_write;
/* If everything ok, update progress counters and continue. */
if (written > 0) {
total += written;