summaryrefslogtreecommitdiffstats
path: root/fs/ext4/ioctl.c
diff options
context:
space:
mode:
authorDarrick J. Wong <darrick.wong@oracle.com>2019-03-23 12:10:29 -0400
committerTheodore Ts'o <tytso@mit.edu>2019-03-23 12:10:29 -0400
commit18915b5873f07e5030e6fb108a050fa7c71c59fb (patch)
treefab8aa9846d7b0b6d835191ecf9d59ea05c29f30 /fs/ext4/ioctl.c
parent5e86bdda41534e17621d5a071b294943cae4376e (diff)
ext4: prohibit fstrim in norecovery mode
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> Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Diffstat (limited to 'fs/ext4/ioctl.c')
-rw-r--r--fs/ext4/ioctl.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/fs/ext4/ioctl.c b/fs/ext4/ioctl.c
index eb8ca8d80885..73435444b159 100644
--- a/fs/ext4/ioctl.c
+++ b/fs/ext4/ioctl.c
@@ -1000,6 +1000,13 @@ resizefs_out:
1000 if (!blk_queue_discard(q)) 1000 if (!blk_queue_discard(q))
1001 return -EOPNOTSUPP; 1001 return -EOPNOTSUPP;
1002 1002
1003 /*
1004 * We haven't replayed the journal, so we cannot use our
1005 * block-bitmap-guided storage zapping commands.
1006 */
1007 if (test_opt(sb, NOLOAD) && ext4_has_feature_journal(sb))
1008 return -EROFS;
1009
1003 if (copy_from_user(&range, (struct fstrim_range __user *)arg, 1010 if (copy_from_user(&range, (struct fstrim_range __user *)arg,
1004 sizeof(range))) 1011 sizeof(range)))
1005 return -EFAULT; 1012 return -EFAULT;