f2fs: do not preallocate block unaligned to 4KB
authorJaegeuk Kim <jaegeuk@kernel.org>
Sat, 7 May 2016 15:52:57 +0000 (08:52 -0700)
committerJaegeuk Kim <jaegeuk@kernel.org>
Sat, 7 May 2016 17:44:57 +0000 (10:44 -0700)
Previously f2fs_preallocate_blocks() tries to allocate unaligned blocks.
In f2fs_write_begin(), however, prepare_write_begin() does not skip its
allocation due to (len != 4KB).
So, it needs locking node page twice unexpectedly.

Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
fs/f2fs/data.c

index 96b035319889f7932c906bf1665ce1b5e4e3932c..369d953bd770b4a8e992d578ac0c547b956b99c8 100644 (file)
@@ -582,8 +582,8 @@ ssize_t f2fs_preallocate_blocks(struct kiocb *iocb, struct iov_iter *from)
        struct f2fs_map_blocks map;
        ssize_t ret = 0;
 
-       map.m_lblk = F2FS_BYTES_TO_BLK(iocb->ki_pos);
-       map.m_len = F2FS_BLK_ALIGN(iov_iter_count(from));
+       map.m_lblk = F2FS_BLK_ALIGN(iocb->ki_pos);
+       map.m_len = F2FS_BYTES_TO_BLK(iov_iter_count(from));
        map.m_next_pgofs = NULL;
 
        if (f2fs_encrypted_inode(inode))