diff options
-rw-r--r-- | fs/f2fs/data.c | 2 | ||||
-rw-r--r-- | fs/f2fs/segment.c | 4 | ||||
-rw-r--r-- | fs/f2fs/segment.h | 10 | ||||
-rw-r--r-- | fs/f2fs/super.c | 20 | ||||
-rw-r--r-- | include/linux/f2fs_fs.h | 5 |
5 files changed, 25 insertions, 16 deletions
diff --git a/fs/f2fs/data.c b/fs/f2fs/data.c index aaf22a912044..13ab72084913 100644 --- a/fs/f2fs/data.c +++ b/fs/f2fs/data.c | |||
@@ -85,7 +85,7 @@ static struct bio *__bio_alloc(struct f2fs_sb_info *sbi, block_t blk_addr, | |||
85 | bio = bio_alloc(GFP_NOIO, npages); | 85 | bio = bio_alloc(GFP_NOIO, npages); |
86 | 86 | ||
87 | bio->bi_bdev = sbi->sb->s_bdev; | 87 | bio->bi_bdev = sbi->sb->s_bdev; |
88 | bio->bi_iter.bi_sector = SECTOR_FROM_BLOCK(sbi, blk_addr); | 88 | bio->bi_iter.bi_sector = SECTOR_FROM_BLOCK(blk_addr); |
89 | bio->bi_end_io = is_read ? f2fs_read_end_io : f2fs_write_end_io; | 89 | bio->bi_end_io = is_read ? f2fs_read_end_io : f2fs_write_end_io; |
90 | bio->bi_private = sbi; | 90 | bio->bi_private = sbi; |
91 | 91 | ||
diff --git a/fs/f2fs/segment.c b/fs/f2fs/segment.c index 4ea53aab786d..24b768ae39c4 100644 --- a/fs/f2fs/segment.c +++ b/fs/f2fs/segment.c | |||
@@ -370,8 +370,8 @@ static void locate_dirty_segment(struct f2fs_sb_info *sbi, unsigned int segno) | |||
370 | static int f2fs_issue_discard(struct f2fs_sb_info *sbi, | 370 | static int f2fs_issue_discard(struct f2fs_sb_info *sbi, |
371 | block_t blkstart, block_t blklen) | 371 | block_t blkstart, block_t blklen) |
372 | { | 372 | { |
373 | sector_t start = SECTOR_FROM_BLOCK(sbi, blkstart); | 373 | sector_t start = SECTOR_FROM_BLOCK(blkstart); |
374 | sector_t len = SECTOR_FROM_BLOCK(sbi, blklen); | 374 | sector_t len = SECTOR_FROM_BLOCK(blklen); |
375 | trace_f2fs_issue_discard(sbi->sb, blkstart, blklen); | 375 | trace_f2fs_issue_discard(sbi->sb, blkstart, blklen); |
376 | return blkdev_issue_discard(sbi->sb->s_bdev, start, len, GFP_NOFS, 0); | 376 | return blkdev_issue_discard(sbi->sb->s_bdev, start, len, GFP_NOFS, 0); |
377 | } | 377 | } |
diff --git a/fs/f2fs/segment.h b/fs/f2fs/segment.h index 848ac519958f..032c0905a12b 100644 --- a/fs/f2fs/segment.h +++ b/fs/f2fs/segment.h | |||
@@ -89,10 +89,10 @@ | |||
89 | #define TOTAL_SECS(sbi) (sbi->total_sections) | 89 | #define TOTAL_SECS(sbi) (sbi->total_sections) |
90 | #define TOTAL_BLKS(sbi) (SM_I(sbi)->segment_count << sbi->log_blocks_per_seg) | 90 | #define TOTAL_BLKS(sbi) (SM_I(sbi)->segment_count << sbi->log_blocks_per_seg) |
91 | 91 | ||
92 | #define SECTOR_FROM_BLOCK(sbi, blk_addr) \ | 92 | #define SECTOR_FROM_BLOCK(blk_addr) \ |
93 | (((sector_t)blk_addr) << (sbi)->log_sectors_per_block) | 93 | (((sector_t)blk_addr) << F2FS_LOG_SECTORS_PER_BLOCK) |
94 | #define SECTOR_TO_BLOCK(sbi, sectors) \ | 94 | #define SECTOR_TO_BLOCK(sectors) \ |
95 | (sectors >> (sbi)->log_sectors_per_block) | 95 | (sectors >> F2FS_LOG_SECTORS_PER_BLOCK) |
96 | #define MAX_BIO_BLOCKS(sbi) \ | 96 | #define MAX_BIO_BLOCKS(sbi) \ |
97 | ((int)min((int)max_hw_blocks(sbi), BIO_MAX_PAGES)) | 97 | ((int)min((int)max_hw_blocks(sbi), BIO_MAX_PAGES)) |
98 | 98 | ||
@@ -711,7 +711,7 @@ static inline unsigned int max_hw_blocks(struct f2fs_sb_info *sbi) | |||
711 | { | 711 | { |
712 | struct block_device *bdev = sbi->sb->s_bdev; | 712 | struct block_device *bdev = sbi->sb->s_bdev; |
713 | struct request_queue *q = bdev_get_queue(bdev); | 713 | struct request_queue *q = bdev_get_queue(bdev); |
714 | return SECTOR_TO_BLOCK(sbi, queue_max_sectors(q)); | 714 | return SECTOR_TO_BLOCK(queue_max_sectors(q)); |
715 | } | 715 | } |
716 | 716 | ||
717 | /* | 717 | /* |
diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c index ed4095e5e8a7..3dfa1b5eae2f 100644 --- a/fs/f2fs/super.c +++ b/fs/f2fs/super.c | |||
@@ -788,14 +788,22 @@ static int sanity_check_raw_super(struct super_block *sb, | |||
788 | return 1; | 788 | return 1; |
789 | } | 789 | } |
790 | 790 | ||
791 | if (le32_to_cpu(raw_super->log_sectorsize) != | 791 | /* Currently, support 512/1024/2048/4096 bytes sector size */ |
792 | F2FS_LOG_SECTOR_SIZE) { | 792 | if (le32_to_cpu(raw_super->log_sectorsize) > |
793 | f2fs_msg(sb, KERN_INFO, "Invalid log sectorsize"); | 793 | F2FS_MAX_LOG_SECTOR_SIZE || |
794 | le32_to_cpu(raw_super->log_sectorsize) < | ||
795 | F2FS_MIN_LOG_SECTOR_SIZE) { | ||
796 | f2fs_msg(sb, KERN_INFO, "Invalid log sectorsize (%u)", | ||
797 | le32_to_cpu(raw_super->log_sectorsize)); | ||
794 | return 1; | 798 | return 1; |
795 | } | 799 | } |
796 | if (le32_to_cpu(raw_super->log_sectors_per_block) != | 800 | if (le32_to_cpu(raw_super->log_sectors_per_block) + |
797 | F2FS_LOG_SECTORS_PER_BLOCK) { | 801 | le32_to_cpu(raw_super->log_sectorsize) != |
798 | f2fs_msg(sb, KERN_INFO, "Invalid log sectors per block"); | 802 | F2FS_MAX_LOG_SECTOR_SIZE) { |
803 | f2fs_msg(sb, KERN_INFO, | ||
804 | "Invalid log sectors per block(%u) log sectorsize(%u)", | ||
805 | le32_to_cpu(raw_super->log_sectors_per_block), | ||
806 | le32_to_cpu(raw_super->log_sectorsize)); | ||
799 | return 1; | 807 | return 1; |
800 | } | 808 | } |
801 | return 0; | 809 | return 0; |
diff --git a/include/linux/f2fs_fs.h b/include/linux/f2fs_fs.h index 9ca1ff3d4662..860313a33a43 100644 --- a/include/linux/f2fs_fs.h +++ b/include/linux/f2fs_fs.h | |||
@@ -15,8 +15,9 @@ | |||
15 | #include <linux/types.h> | 15 | #include <linux/types.h> |
16 | 16 | ||
17 | #define F2FS_SUPER_OFFSET 1024 /* byte-size offset */ | 17 | #define F2FS_SUPER_OFFSET 1024 /* byte-size offset */ |
18 | #define F2FS_LOG_SECTOR_SIZE 9 /* 9 bits for 512 byte */ | 18 | #define F2FS_MIN_LOG_SECTOR_SIZE 9 /* 9 bits for 512 bytes */ |
19 | #define F2FS_LOG_SECTORS_PER_BLOCK 3 /* 4KB: F2FS_BLKSIZE */ | 19 | #define F2FS_MAX_LOG_SECTOR_SIZE 12 /* 12 bits for 4096 bytes */ |
20 | #define F2FS_LOG_SECTORS_PER_BLOCK 3 /* log number for sector/blk */ | ||
20 | #define F2FS_BLKSIZE 4096 /* support only 4KB block */ | 21 | #define F2FS_BLKSIZE 4096 /* support only 4KB block */ |
21 | #define F2FS_MAX_EXTENSION 64 /* # of extension entries */ | 22 | #define F2FS_MAX_EXTENSION 64 /* # of extension entries */ |
22 | #define F2FS_BLK_ALIGN(x) (((x) + F2FS_BLKSIZE - 1) / F2FS_BLKSIZE) | 23 | #define F2FS_BLK_ALIGN(x) (((x) + F2FS_BLKSIZE - 1) / F2FS_BLKSIZE) |