diff options
author | Darrick J. Wong <darrick.wong@oracle.com> | 2019-03-23 12:10:29 -0400 |
---|---|---|
committer | Theodore Ts'o <tytso@mit.edu> | 2019-03-23 12:10:29 -0400 |
commit | 18915b5873f07e5030e6fb108a050fa7c71c59fb (patch) | |
tree | fab8aa9846d7b0b6d835191ecf9d59ea05c29f30 /fs/ext4 | |
parent | 5e86bdda41534e17621d5a071b294943cae4376e (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')
-rw-r--r-- | fs/ext4/ioctl.c | 7 |
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: 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; |