diff -urN 2.4.19pre6/fs/intermezzo/super.c max-bytes/fs/intermezzo/super.c --- 2.4.19pre6/fs/intermezzo/super.c Mon Feb 25 22:05:08 2002 +++ max-bytes/fs/intermezzo/super.c Fri Apr 5 18:06:17 2002 @@ -318,6 +318,7 @@ EXIT; goto out_err; } + sb_limit_maxbytes(presto_sb); cache->cache_sb = mysb; diff -urN 2.4.19pre6/fs/super.c max-bytes/fs/super.c --- 2.4.19pre6/fs/super.c Fri Apr 5 10:11:08 2002 +++ max-bytes/fs/super.c Fri Apr 5 18:04:10 2002 @@ -641,6 +641,12 @@ return s; } +void sb_limit_maxbytes(struct super_block * s) +{ + if (s->s_maxbytes > MAX_LFS_FILESIZE) + s->s_maxbytes = MAX_LFS_FILESIZE; +} + static struct super_block *get_sb_bdev(struct file_system_type *fs_type, int flags, char *dev_name, void * data) { @@ -719,6 +725,7 @@ insert_super(s, fs_type); if (!fs_type->read_super(s, data, flags & MS_VERBOSE ? 1 : 0)) goto Einval; + sb_limit_maxbytes(s); s->s_flags |= MS_ACTIVE; path_release(&nd); return s; @@ -749,6 +756,7 @@ remove_super(s); return ERR_PTR(-EINVAL); } + sb_limit_maxbytes(s); s->s_flags |= MS_ACTIVE; return s; } @@ -772,6 +780,7 @@ remove_super(s); return ERR_PTR(-EINVAL); } + sb_limit_maxbytes(s); s->s_flags |= MS_ACTIVE; } do_remount_sb(s, flags, data); diff -urN 2.4.19pre6/include/linux/fs.h max-bytes/include/linux/fs.h --- 2.4.19pre6/include/linux/fs.h Fri Apr 5 10:11:17 2002 +++ max-bytes/include/linux/fs.h Fri Apr 5 18:02:55 2002 @@ -559,6 +559,8 @@ #define MAX_LFS_FILESIZE 0x7fffffffffffffff #endif +extern void sb_limit_maxbytes(struct super_block * s); + #define FL_POSIX 1 #define FL_FLOCK 2 #define FL_BROKEN 4 /* broken flock() emulation */