|
@@ -415,7 +415,7 @@ fd_execute_sync_cache(struct se_cmd *cmd)
|
|
} else {
|
|
} else {
|
|
start = cmd->t_task_lba * dev->dev_attrib.block_size;
|
|
start = cmd->t_task_lba * dev->dev_attrib.block_size;
|
|
if (cmd->data_length)
|
|
if (cmd->data_length)
|
|
- end = start + cmd->data_length;
|
|
|
|
|
|
+ end = start + cmd->data_length - 1;
|
|
else
|
|
else
|
|
end = LLONG_MAX;
|
|
end = LLONG_MAX;
|
|
}
|
|
}
|
|
@@ -680,7 +680,12 @@ fd_execute_rw(struct se_cmd *cmd, struct scatterlist *sgl, u32 sgl_nents,
|
|
struct fd_dev *fd_dev = FD_DEV(dev);
|
|
struct fd_dev *fd_dev = FD_DEV(dev);
|
|
loff_t start = cmd->t_task_lba *
|
|
loff_t start = cmd->t_task_lba *
|
|
dev->dev_attrib.block_size;
|
|
dev->dev_attrib.block_size;
|
|
- loff_t end = start + cmd->data_length;
|
|
|
|
|
|
+ loff_t end;
|
|
|
|
+
|
|
|
|
+ if (cmd->data_length)
|
|
|
|
+ end = start + cmd->data_length - 1;
|
|
|
|
+ else
|
|
|
|
+ end = LLONG_MAX;
|
|
|
|
|
|
vfs_fsync_range(fd_dev->fd_file, start, end, 1);
|
|
vfs_fsync_range(fd_dev->fd_file, start, end, 1);
|
|
}
|
|
}
|