mirror of
https://github.com/versity/scoutfs.git
synced 2026-06-04 10:42:36 +00:00
Check for all offline in scoutfs_file_write_iter
When we write to file contents we change the data_version. To stage old contents into an offline region the data_version of the file must match the archived copy. When writing we have to make sure that there is no offline data so that we don't increase the data_version which will prevent staging of any other file regions because the data_versions no longer match. scoutfs_file_write_iter was only checking for offline data in its write region, not the entire file. Fix it to match the _aio_write method and check the whole file. Signed-off-by: Zach Brown <zab@versity.com>
This commit is contained in:
@@ -223,10 +223,8 @@ retry:
|
||||
|
||||
if (scoutfs_per_task_add_excl(&si->pt_data_lock, &pt_ent, scoutfs_inode_lock)) {
|
||||
/* data_version is per inode, whole file must be online */
|
||||
ret = scoutfs_data_wait_check_iter(inode, iocb->ki_pos, from,
|
||||
SEF_OFFLINE,
|
||||
SCOUTFS_IOC_DWO_WRITE,
|
||||
&dw, scoutfs_inode_lock);
|
||||
ret = scoutfs_data_wait_check(inode, 0, i_size_read(inode), SEF_OFFLINE,
|
||||
SCOUTFS_IOC_DWO_WRITE, &dw, scoutfs_inode_lock);
|
||||
if (ret != 0)
|
||||
goto out;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user