Commit 66a362a2 authored by Jan Andres's avatar Jan Andres Committed by Al Viro

isofs: Fix lseek() to position beyond 4 GB

isofs supports files larger than 4 GB by using multi-extent files.
However an lseek() to a position beyond 4 GB in such a file will
fail with EINVAL, because s_maxbytes in the isofs superblock is
initialized to 2^32-1, and generic_file_llseek() checks against
that value.

I therefore suggest increasing the value of s_maxbytes to have
full support for large files in isofs. With multi-extent files, file
size is only limited by the maximum size of the file system (8 TB),
so this seems a reasonable value for s_maxbytes.
Signed-off-by: default avatarJan Andres <jandres@gmx.net>
Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent 532490f0
...@@ -722,7 +722,12 @@ static int isofs_fill_super(struct super_block *s, void *data, int silent) ...@@ -722,7 +722,12 @@ static int isofs_fill_super(struct super_block *s, void *data, int silent)
} }
s->s_magic = ISOFS_SUPER_MAGIC; s->s_magic = ISOFS_SUPER_MAGIC;
s->s_maxbytes = 0xffffffff; /* We can handle files up to 4 GB */
/*
* With multi-extent files, file size is only limited by the maximum
* size of a file system, which is 8 TB.
*/
s->s_maxbytes = 0x80000000000LL;
/* /*
* The CDROM is read-only, has no nodes (devices) on it, and since * The CDROM is read-only, has no nodes (devices) on it, and since
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment