diff options
-rw-r--r-- | fs/f2fs/checkpoint.c | 7 | ||||
-rw-r--r-- | fs/f2fs/file.c | 3 | ||||
-rw-r--r-- | fs/f2fs/segment.c | 8 | ||||
-rw-r--r-- | include/linux/f2fs_fs.h | 4 |
4 files changed, 12 insertions, 10 deletions
diff --git a/fs/f2fs/checkpoint.c b/fs/f2fs/checkpoint.c index 31a715b5fd5c..58d88df0d632 100644 --- a/fs/f2fs/checkpoint.c +++ b/fs/f2fs/checkpoint.c | |||
@@ -981,15 +981,14 @@ static void do_checkpoint(struct f2fs_sb_info *sbi, struct cp_control *cpc) | |||
981 | /* write out checkpoint buffer at block 0 */ | 981 | /* write out checkpoint buffer at block 0 */ |
982 | cp_page = grab_meta_page(sbi, start_blk++); | 982 | cp_page = grab_meta_page(sbi, start_blk++); |
983 | kaddr = page_address(cp_page); | 983 | kaddr = page_address(cp_page); |
984 | memcpy(kaddr, ckpt, (1 << sbi->log_blocksize)); | 984 | memcpy(kaddr, ckpt, F2FS_BLKSIZE); |
985 | set_page_dirty(cp_page); | 985 | set_page_dirty(cp_page); |
986 | f2fs_put_page(cp_page, 1); | 986 | f2fs_put_page(cp_page, 1); |
987 | 987 | ||
988 | for (i = 1; i < 1 + cp_payload_blks; i++) { | 988 | for (i = 1; i < 1 + cp_payload_blks; i++) { |
989 | cp_page = grab_meta_page(sbi, start_blk++); | 989 | cp_page = grab_meta_page(sbi, start_blk++); |
990 | kaddr = page_address(cp_page); | 990 | kaddr = page_address(cp_page); |
991 | memcpy(kaddr, (char *)ckpt + i * F2FS_BLKSIZE, | 991 | memcpy(kaddr, (char *)ckpt + i * F2FS_BLKSIZE, F2FS_BLKSIZE); |
992 | (1 << sbi->log_blocksize)); | ||
993 | set_page_dirty(cp_page); | 992 | set_page_dirty(cp_page); |
994 | f2fs_put_page(cp_page, 1); | 993 | f2fs_put_page(cp_page, 1); |
995 | } | 994 | } |
@@ -1009,7 +1008,7 @@ static void do_checkpoint(struct f2fs_sb_info *sbi, struct cp_control *cpc) | |||
1009 | /* writeout checkpoint block */ | 1008 | /* writeout checkpoint block */ |
1010 | cp_page = grab_meta_page(sbi, start_blk); | 1009 | cp_page = grab_meta_page(sbi, start_blk); |
1011 | kaddr = page_address(cp_page); | 1010 | kaddr = page_address(cp_page); |
1012 | memcpy(kaddr, ckpt, (1 << sbi->log_blocksize)); | 1011 | memcpy(kaddr, ckpt, F2FS_BLKSIZE); |
1013 | set_page_dirty(cp_page); | 1012 | set_page_dirty(cp_page); |
1014 | f2fs_put_page(cp_page, 1); | 1013 | f2fs_put_page(cp_page, 1); |
1015 | 1014 | ||
diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c index 7188a2ac64b5..f3b007540a48 100644 --- a/fs/f2fs/file.c +++ b/fs/f2fs/file.c | |||
@@ -491,8 +491,7 @@ int truncate_blocks(struct inode *inode, u64 from, bool lock) | |||
491 | 491 | ||
492 | trace_f2fs_truncate_blocks_enter(inode, from); | 492 | trace_f2fs_truncate_blocks_enter(inode, from); |
493 | 493 | ||
494 | free_from = (pgoff_t) | 494 | free_from = (pgoff_t)F2FS_BYTES_TO_BLK(from + blocksize - 1); |
495 | ((from + blocksize - 1) >> (sbi->log_blocksize)); | ||
496 | 495 | ||
497 | if (lock) | 496 | if (lock) |
498 | f2fs_lock_op(sbi); | 497 | f2fs_lock_op(sbi); |
diff --git a/fs/f2fs/segment.c b/fs/f2fs/segment.c index 9f278d156d88..877a272a8146 100644 --- a/fs/f2fs/segment.c +++ b/fs/f2fs/segment.c | |||
@@ -1048,8 +1048,8 @@ static const struct segment_allocation default_salloc_ops = { | |||
1048 | 1048 | ||
1049 | int f2fs_trim_fs(struct f2fs_sb_info *sbi, struct fstrim_range *range) | 1049 | int f2fs_trim_fs(struct f2fs_sb_info *sbi, struct fstrim_range *range) |
1050 | { | 1050 | { |
1051 | __u64 start = range->start >> sbi->log_blocksize; | 1051 | __u64 start = F2FS_BYTES_TO_BLK(range->start); |
1052 | __u64 end = start + (range->len >> sbi->log_blocksize) - 1; | 1052 | __u64 end = start + F2FS_BYTES_TO_BLK(range->len) - 1; |
1053 | unsigned int start_segno, end_segno; | 1053 | unsigned int start_segno, end_segno; |
1054 | struct cp_control cpc; | 1054 | struct cp_control cpc; |
1055 | 1055 | ||
@@ -1066,7 +1066,7 @@ int f2fs_trim_fs(struct f2fs_sb_info *sbi, struct fstrim_range *range) | |||
1066 | end_segno = (end >= MAX_BLKADDR(sbi)) ? MAIN_SEGS(sbi) - 1 : | 1066 | end_segno = (end >= MAX_BLKADDR(sbi)) ? MAIN_SEGS(sbi) - 1 : |
1067 | GET_SEGNO(sbi, end); | 1067 | GET_SEGNO(sbi, end); |
1068 | cpc.reason = CP_DISCARD; | 1068 | cpc.reason = CP_DISCARD; |
1069 | cpc.trim_minlen = range->minlen >> sbi->log_blocksize; | 1069 | cpc.trim_minlen = F2FS_BYTES_TO_BLK(range->minlen); |
1070 | 1070 | ||
1071 | /* do checkpoint to issue discard commands safely */ | 1071 | /* do checkpoint to issue discard commands safely */ |
1072 | for (; start_segno <= end_segno; start_segno = cpc.trim_end + 1) { | 1072 | for (; start_segno <= end_segno; start_segno = cpc.trim_end + 1) { |
@@ -1080,7 +1080,7 @@ int f2fs_trim_fs(struct f2fs_sb_info *sbi, struct fstrim_range *range) | |||
1080 | mutex_unlock(&sbi->gc_mutex); | 1080 | mutex_unlock(&sbi->gc_mutex); |
1081 | } | 1081 | } |
1082 | out: | 1082 | out: |
1083 | range->len = cpc.trimmed << sbi->log_blocksize; | 1083 | range->len = F2FS_BLK_TO_BYTES(cpc.trimmed); |
1084 | return 0; | 1084 | return 0; |
1085 | } | 1085 | } |
1086 | 1086 | ||
diff --git a/include/linux/f2fs_fs.h b/include/linux/f2fs_fs.h index 09805720f4bf..a23556c32703 100644 --- a/include/linux/f2fs_fs.h +++ b/include/linux/f2fs_fs.h | |||
@@ -19,12 +19,16 @@ | |||
19 | #define F2FS_MAX_LOG_SECTOR_SIZE 12 /* 12 bits for 4096 bytes */ | 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_LOG_SECTORS_PER_BLOCK 3 /* log number for sector/blk */ |
21 | #define F2FS_BLKSIZE 4096 /* support only 4KB block */ | 21 | #define F2FS_BLKSIZE 4096 /* support only 4KB block */ |
22 | #define F2FS_BLKSIZE_BITS 12 /* bits for F2FS_BLKSIZE */ | ||
22 | #define F2FS_MAX_EXTENSION 64 /* # of extension entries */ | 23 | #define F2FS_MAX_EXTENSION 64 /* # of extension entries */ |
23 | #define F2FS_BLK_ALIGN(x) (((x) + F2FS_BLKSIZE - 1) / F2FS_BLKSIZE) | 24 | #define F2FS_BLK_ALIGN(x) (((x) + F2FS_BLKSIZE - 1) / F2FS_BLKSIZE) |
24 | 25 | ||
25 | #define NULL_ADDR ((block_t)0) /* used as block_t addresses */ | 26 | #define NULL_ADDR ((block_t)0) /* used as block_t addresses */ |
26 | #define NEW_ADDR ((block_t)-1) /* used as block_t addresses */ | 27 | #define NEW_ADDR ((block_t)-1) /* used as block_t addresses */ |
27 | 28 | ||
29 | #define F2FS_BYTES_TO_BLK(bytes) ((bytes) >> F2FS_BLKSIZE_BITS) | ||
30 | #define F2FS_BLK_TO_BYTES(blk) ((blk) << F2FS_BLKSIZE_BITS) | ||
31 | |||
28 | /* 0, 1(node nid), 2(meta nid) are reserved node id */ | 32 | /* 0, 1(node nid), 2(meta nid) are reserved node id */ |
29 | #define F2FS_RESERVED_NODE_NUM 3 | 33 | #define F2FS_RESERVED_NODE_NUM 3 |
30 | 34 | ||