Merge tag 'fs_for_v5.18-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/jack...
authorLinus Torvalds <torvalds@linux-foundation.org>
Sat, 26 Mar 2022 00:38:15 +0000 (17:38 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Sat, 26 Mar 2022 00:38:15 +0000 (17:38 -0700)
Pull reiserfs updates from Jan Kara:
 "The biggest change in this pull is the addition of a deprecation
  message about reiserfs with the outlook that we'd eventually be able
  to remove it from the kernel. Because it is practically unmaintained
  and untested and odd enough that people don't want to bother with it
  anymore...

  Otherwise there are small udf and ext2 fixes"

* tag 'fs_for_v5.18-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs:
  udf: remove redundant assignment of variable etype
  reiserfs: Deprecate reiserfs
  ext2: correct max file size computing
  reiserfs: get rid of AOP_FLAG_CONT_EXPAND flag

fs/ext2/super.c
fs/reiserfs/Kconfig
fs/reiserfs/inode.c
fs/reiserfs/super.c
fs/udf/super.c

index e48aaf5..f6a19f6 100644 (file)
@@ -753,8 +753,12 @@ static loff_t ext2_max_size(int bits)
        res += 1LL << (bits-2);
        res += 1LL << (2*(bits-2));
        res += 1LL << (3*(bits-2));
+       /* Compute how many metadata blocks are needed */
+       meta_blocks = 1;
+       meta_blocks += 1 + ppb;
+       meta_blocks += 1 + ppb + ppb * ppb;
        /* Does block tree limit file size? */
-       if (res < upper_limit)
+       if (res + meta_blocks <= upper_limit)
                goto check_lfs;
 
        res = upper_limit;
index 8fd54ed..33c8b0d 100644 (file)
@@ -1,10 +1,14 @@
 # SPDX-License-Identifier: GPL-2.0-only
 config REISERFS_FS
-       tristate "Reiserfs support"
+       tristate "Reiserfs support (deprecated)"
        select CRC32
        help
-         Stores not just filenames but the files themselves in a balanced
-         tree.  Uses journalling.
+         Reiserfs is deprecated and scheduled to be removed from the kernel
+         in 2025. If you are still using it, please migrate to another
+         filesystem or tell us your usecase for reiserfs.
+
+         Reiserfs stores not just filenames but the files themselves in a
+         balanced tree.  Uses journalling.
 
          Balanced trees are more efficient than traditional file system
          architectural foundations.
index e4221fa..36c59b2 100644 (file)
@@ -2763,13 +2763,6 @@ static int reiserfs_write_begin(struct file *file,
        int old_ref = 0;
 
        inode = mapping->host;
-       *fsdata = NULL;
-       if (flags & AOP_FLAG_CONT_EXPAND &&
-           (pos & (inode->i_sb->s_blocksize - 1)) == 0) {
-               pos ++;
-               *fsdata = (void *)(unsigned long)flags;
-       }
-
        index = pos >> PAGE_SHIFT;
        page = grab_cache_page_write_begin(mapping, index, flags);
        if (!page)
@@ -2896,9 +2889,6 @@ static int reiserfs_write_end(struct file *file, struct address_space *mapping,
        unsigned start;
        bool locked = false;
 
-       if ((unsigned long)fsdata & AOP_FLAG_CONT_EXPAND)
-               pos ++;
-
        reiserfs_wait_on_write_block(inode->i_sb);
        if (reiserfs_transaction_running(inode->i_sb))
                th = current->journal_info;
@@ -3316,7 +3306,11 @@ int reiserfs_setattr(struct user_namespace *mnt_userns, struct dentry *dentry,
 
                /* fill in hole pointers in the expanding truncate case. */
                if (attr->ia_size > inode->i_size) {
-                       error = generic_cont_expand_simple(inode, attr->ia_size);
+                       loff_t pos = attr->ia_size;
+
+                       if ((pos & (inode->i_sb->s_blocksize - 1)) == 0)
+                               pos++;
+                       error = generic_cont_expand_simple(inode, pos);
                        if (REISERFS_I(inode)->i_prealloc_count > 0) {
                                int err;
                                struct reiserfs_transaction_handle th;
index 756c491..cfb7c44 100644 (file)
@@ -1652,6 +1652,8 @@ static int read_super_block(struct super_block *s, int offset)
                return 1;
        }
 
+       reiserfs_warning(NULL, "", "reiserfs filesystem is deprecated and "
+               "scheduled to be removed from the kernel in 2025");
        SB_BUFFER_WITH_SB(s) = bh;
        SB_DISK_SUPER_BLOCK(s) = rs;
 
index 4887161..4042d97 100644 (file)
@@ -2474,7 +2474,6 @@ static unsigned int udf_count_free_table(struct super_block *sb,
        unsigned int accum = 0;
        uint32_t elen;
        struct kernel_lb_addr eloc;
-       int8_t etype;
        struct extent_position epos;
 
        mutex_lock(&UDF_SB(sb)->s_alloc_mutex);
@@ -2482,7 +2481,7 @@ static unsigned int udf_count_free_table(struct super_block *sb,
        epos.offset = sizeof(struct unallocSpaceEntry);
        epos.bh = NULL;
 
-       while ((etype = udf_next_aext(table, &epos, &eloc, &elen, 1)) != -1)
+       while (udf_next_aext(table, &epos, &eloc, &elen, 1) != -1)
                accum += (elen >> table->i_sb->s_blocksize_bits);
 
        brelse(epos.bh);