aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--fs/f2fs/checkpoint.c7
-rw-r--r--fs/f2fs/file.c3
-rw-r--r--fs/f2fs/segment.c8
-rw-r--r--include/linux/f2fs_fs.h4
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
1049int f2fs_trim_fs(struct f2fs_sb_info *sbi, struct fstrim_range *range) 1049int 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 }
1082out: 1082out:
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