Message ID | 20190323003813.GR1183@magnolia (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | ext4: prohibit fstrim in norecovery mode | expand |
On Fri, Mar 22, 2019 at 05:38:13PM -0700, Darrick J. Wong wrote: > From: Darrick J. Wong <darrick.wong@oracle.com> > > The ext4 fstrim implementation uses the block bitmaps to find free space > that can be discarded. If we haven't replayed the journal, the bitmaps > will be stale and we absolutely *cannot* use stale metadata to zap the > underlying storage. > > Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com> Thanks, applied. - Ted
diff --git a/fs/ext4/ioctl.c b/fs/ext4/ioctl.c index 3c4f8bb59f8a..bab3da4f1e0d 100644 --- a/fs/ext4/ioctl.c +++ b/fs/ext4/ioctl.c @@ -1000,6 +1000,13 @@ long ext4_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) if (!blk_queue_discard(q)) return -EOPNOTSUPP; + /* + * We haven't replayed the journal, so we cannot use our + * block-bitmap-guided storage zapping commands. + */ + if (test_opt(sb, NOLOAD) && ext4_has_feature_journal(sb)) + return -EROFS; + if (copy_from_user(&range, (struct fstrim_range __user *)arg, sizeof(range))) return -EFAULT;