Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'f2fs-for-5.9-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs

Pull f2fs fixes from Jaegeuk Kim:
"Small bug fixes for:

- SMR drive fix

- infinite loop when building free node ids

- EOF at DIO read"

* tag 'f2fs-for-5.9-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs:
f2fs: Return EOF on unaligned end of file DIO read
f2fs: fix indefinite loop scanning for free nid
f2fs: Fix type of section block count variables

+10 -4
+3
fs/f2fs/data.c
··· 3550 3550 unsigned long align = offset | iov_iter_alignment(iter); 3551 3551 struct block_device *bdev = inode->i_sb->s_bdev; 3552 3552 3553 + if (iov_iter_rw(iter) == READ && offset >= i_size_read(inode)) 3554 + return 1; 3555 + 3553 3556 if (align & blocksize_mask) { 3554 3557 if (bdev) 3555 3558 blkbits = blksize_bits(bdev_logical_block_size(bdev));
+3
fs/f2fs/node.c
··· 2373 2373 if (unlikely(nid >= nm_i->max_nid)) 2374 2374 nid = 0; 2375 2375 2376 + if (unlikely(nid % NAT_ENTRY_PER_BLOCK)) 2377 + nid = NAT_BLOCK_OFFSET(nid) * NAT_ENTRY_PER_BLOCK; 2378 + 2376 2379 /* Enough entries */ 2377 2380 if (nm_i->nid_cnt[FREE_NID] >= NAT_ENTRY_PER_BLOCK) 2378 2381 return 0;
+4 -4
fs/f2fs/segment.c
··· 799 799 800 800 if (__is_large_section(sbi)) { 801 801 unsigned int secno = GET_SEC_FROM_SEG(sbi, segno); 802 - unsigned short valid_blocks = 802 + block_t valid_blocks = 803 803 get_valid_blocks(sbi, segno, true); 804 804 805 805 f2fs_bug_on(sbi, unlikely(!valid_blocks || ··· 815 815 enum dirty_type dirty_type) 816 816 { 817 817 struct dirty_seglist_info *dirty_i = DIRTY_I(sbi); 818 - unsigned short valid_blocks; 818 + block_t valid_blocks; 819 819 820 820 if (test_and_clear_bit(segno, dirty_i->dirty_segmap[dirty_type])) 821 821 dirty_i->nr_dirty[dirty_type]--; ··· 4316 4316 struct dirty_seglist_info *dirty_i = DIRTY_I(sbi); 4317 4317 struct free_segmap_info *free_i = FREE_I(sbi); 4318 4318 unsigned int segno = 0, offset = 0, secno; 4319 - unsigned short valid_blocks; 4320 - unsigned short blks_per_sec = BLKS_PER_SEC(sbi); 4319 + block_t valid_blocks; 4320 + block_t blks_per_sec = BLKS_PER_SEC(sbi); 4321 4321 4322 4322 while (1) { 4323 4323 /* find dirty segment based on free segmap */