| From 239e250e4acbc0104d514307029c0839e834a51a Mon Sep 17 00:00:00 2001 |
| From: Richard Narron <comet.berkeley@gmail.com> |
| Date: Sun, 4 Jun 2017 16:23:18 -0700 |
| Subject: fs/ufs: Set UFS default maximum bytes per file |
| |
| From: Richard Narron <comet.berkeley@gmail.com> |
| |
| commit 239e250e4acbc0104d514307029c0839e834a51a upstream. |
| |
| This fixes a problem with reading files larger than 2GB from a UFS-2 |
| file system: |
| |
| https://bugzilla.kernel.org/show_bug.cgi?id=195721 |
| |
| The incorrect UFS s_maxsize limit became a problem as of commit |
| c2a9737f45e2 ("vfs,mm: fix a dead loop in truncate_inode_pages_range()") |
| which started using s_maxbytes to avoid a page index overflow in |
| do_generic_file_read(). |
| |
| That caused files to be truncated on UFS-2 file systems because the |
| default maximum file size is 2GB (MAX_NON_LFS) and UFS didn't update it. |
| |
| Here I simply increase the default to a common value used by other file |
| systems. |
| |
| Signed-off-by: Richard Narron <comet.berkeley@gmail.com> |
| Cc: Al Viro <viro@zeniv.linux.org.uk> |
| Cc: Will B <will.brokenbourgh2877@gmail.com> |
| Cc: Theodore Ts'o <tytso@mit.edu> |
| Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| fs/ufs/super.c | 5 ++--- |
| 1 file changed, 2 insertions(+), 3 deletions(-) |
| |
| --- a/fs/ufs/super.c |
| +++ b/fs/ufs/super.c |
| @@ -812,9 +812,8 @@ static int ufs_fill_super(struct super_b |
| uspi->s_dirblksize = UFS_SECTOR_SIZE; |
| super_block_offset=UFS_SBLOCK; |
| |
| - /* Keep 2Gig file limit. Some UFS variants need to override |
| - this but as I don't know which I'll let those in the know loosen |
| - the rules */ |
| + sb->s_maxbytes = MAX_LFS_FILESIZE; |
| + |
| switch (sbi->s_mount_opt & UFS_MOUNT_UFSTYPE) { |
| case UFS_MOUNT_UFSTYPE_44BSD: |
| UFSD("ufstype=44bsd\n"); |