mirror of
				git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
				synced 2025-10-31 16:54:21 +00:00 
			
		
		
		
	 c3ece6b7ff
			
		
	
	
		c3ece6b7ff
		
	
	
	
	
		
			
			Currently the BTRFS_MOUNT_* flags are already beyond 32 bits, this is
going to cause compilation errors for some 32 bit systems, as their
unsigned long is only 32 bits long, thus flag
BTRFS_MOUNT_IGNORESUPERFLAGS overflows and can lead to errors.
Fix the problem by:
- Migrate all existing BTRFS_MOUNT_* flags to unsigned long long
- Migrate all mount option related variables to unsigned long long
  * btrfs_fs_info::mount_opt
  * btrfs_fs_context::mount_opt
  * mount_opt parameter of btrfs_check_options()
  * old_opts parameter of btrfs_remount_begin()
  * old_opts parameter of btrfs_remount_cleanup()
  * mount_opt parameter of btrfs_check_mountopts_zoned()
  * mount_opt and opt parameters of check_ro_option()
Fixes: 32e6216512 ("btrfs: introduce new "rescue=ignoresuperflags" mount option")
Signed-off-by: Qu Wenruo <wqu@suse.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
		
	
			
		
			
				
	
	
		
			38 lines
		
	
	
	
		
			948 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			38 lines
		
	
	
	
		
			948 B
		
	
	
	
		
			C
		
	
	
	
	
	
| /* SPDX-License-Identifier: GPL-2.0 */
 | |
| 
 | |
| #ifndef BTRFS_SUPER_H
 | |
| #define BTRFS_SUPER_H
 | |
| 
 | |
| #include <linux/types.h>
 | |
| #include <linux/fs.h>
 | |
| #include "fs.h"
 | |
| 
 | |
| struct super_block;
 | |
| struct btrfs_fs_info;
 | |
| 
 | |
| bool btrfs_check_options(const struct btrfs_fs_info *info,
 | |
| 			 unsigned long long *mount_opt,
 | |
| 			 unsigned long flags);
 | |
| int btrfs_sync_fs(struct super_block *sb, int wait);
 | |
| char *btrfs_get_subvol_name_from_objectid(struct btrfs_fs_info *fs_info,
 | |
| 					  u64 subvol_objectid);
 | |
| void btrfs_set_free_space_cache_settings(struct btrfs_fs_info *fs_info);
 | |
| 
 | |
| static inline struct btrfs_fs_info *btrfs_sb(struct super_block *sb)
 | |
| {
 | |
| 	return sb->s_fs_info;
 | |
| }
 | |
| 
 | |
| static inline void btrfs_set_sb_rdonly(struct super_block *sb)
 | |
| {
 | |
| 	sb->s_flags |= SB_RDONLY;
 | |
| 	set_bit(BTRFS_FS_STATE_RO, &btrfs_sb(sb)->fs_state);
 | |
| }
 | |
| 
 | |
| static inline void btrfs_clear_sb_rdonly(struct super_block *sb)
 | |
| {
 | |
| 	sb->s_flags &= ~SB_RDONLY;
 | |
| 	clear_bit(BTRFS_FS_STATE_RO, &btrfs_sb(sb)->fs_state);
 | |
| }
 | |
| 
 | |
| #endif
 |