diff --git a/kmod/src/ioctl.c b/kmod/src/ioctl.c index 148e7356..24317e73 100644 --- a/kmod/src/ioctl.c +++ b/kmod/src/ioctl.c @@ -590,13 +590,6 @@ static long scoutfs_ioc_setattr_more(struct file *file, unsigned long arg) if (ret) goto unlock; - /* create offline extents in potentially many transactions */ - if (sm.flags & SCOUTFS_IOC_SETATTR_MORE_OFFLINE) { - ret = scoutfs_data_init_offline_extent(inode, sm.i_size, lock); - if (ret) - goto unlock; - } - /* can only change size/dv on untouched regular files */ if ((sm.i_size != 0 || sm.data_version != 0) && ((!S_ISREG(inode->i_mode) || @@ -605,6 +598,13 @@ static long scoutfs_ioc_setattr_more(struct file *file, unsigned long arg) goto unlock; } + /* create offline extents in potentially many transactions */ + if (sm.flags & SCOUTFS_IOC_SETATTR_MORE_OFFLINE) { + ret = scoutfs_data_init_offline_extent(inode, sm.i_size, lock); + if (ret) + goto unlock; + } + /* setting only so we don't see 0 data seq with nonzero data_version */ set_data_seq = sm.data_version != 0 ? true : false; ret = scoutfs_inode_index_lock_hold(inode, &ind_locks, set_data_seq,