node.c (1188f7f111c61394ec56beb8e30322305a8220b6) node.c (fa36f5ff74f0daf536647d418cafc0f19d5b116c)
1// SPDX-License-Identifier: GPL-2.0
2/*
3 * fs/f2fs/node.c
4 *
5 * Copyright (c) 2012 Samsung Electronics Co., Ltd.
6 * http://www.samsung.com/
7 */
8#include <linux/fs.h>

--- 838 unchanged lines hidden (view full) ---

847 }
848 dn->nid = nids[level];
849 dn->ofs_in_node = offset[level];
850 dn->node_page = npage[level];
851 dn->data_blkaddr = f2fs_data_blkaddr(dn);
852
853 if (is_inode_flag_set(dn->inode, FI_COMPRESSED_FILE) &&
854 f2fs_sb_has_readonly(sbi)) {
1// SPDX-License-Identifier: GPL-2.0
2/*
3 * fs/f2fs/node.c
4 *
5 * Copyright (c) 2012 Samsung Electronics Co., Ltd.
6 * http://www.samsung.com/
7 */
8#include <linux/fs.h>

--- 838 unchanged lines hidden (view full) ---

847 }
848 dn->nid = nids[level];
849 dn->ofs_in_node = offset[level];
850 dn->node_page = npage[level];
851 dn->data_blkaddr = f2fs_data_blkaddr(dn);
852
853 if (is_inode_flag_set(dn->inode, FI_COMPRESSED_FILE) &&
854 f2fs_sb_has_readonly(sbi)) {
855 unsigned int c_len = f2fs_cluster_blocks_are_contiguous(dn);
855 unsigned int cluster_size = F2FS_I(dn->inode)->i_cluster_size;
856 unsigned int ofs_in_node = dn->ofs_in_node;
857 pgoff_t fofs = index;
858 unsigned int c_len;
856 block_t blkaddr;
857
859 block_t blkaddr;
860
861 /* should align fofs and ofs_in_node to cluster_size */
862 if (fofs % cluster_size) {
863 fofs = round_down(fofs, cluster_size);
864 ofs_in_node = round_down(ofs_in_node, cluster_size);
865 }
866
867 c_len = f2fs_cluster_blocks_are_contiguous(dn, ofs_in_node);
858 if (!c_len)
859 goto out;
860
868 if (!c_len)
869 goto out;
870
861 blkaddr = f2fs_data_blkaddr(dn);
871 blkaddr = data_blkaddr(dn->inode, dn->node_page, ofs_in_node);
862 if (blkaddr == COMPRESS_ADDR)
863 blkaddr = data_blkaddr(dn->inode, dn->node_page,
872 if (blkaddr == COMPRESS_ADDR)
873 blkaddr = data_blkaddr(dn->inode, dn->node_page,
864 dn->ofs_in_node + 1);
874 ofs_in_node + 1);
865
866 f2fs_update_read_extent_tree_range_compressed(dn->inode,
875
876 f2fs_update_read_extent_tree_range_compressed(dn->inode,
867 index, blkaddr,
868 F2FS_I(dn->inode)->i_cluster_size,
869 c_len);
877 fofs, blkaddr, cluster_size, c_len);
870 }
871out:
872 return 0;
873
874release_pages:
875 f2fs_put_page(parent, 1);
876 if (i > 1)
877 f2fs_put_page(npage[0], 0);

--- 2576 unchanged lines hidden ---
878 }
879out:
880 return 0;
881
882release_pages:
883 f2fs_put_page(parent, 1);
884 if (i > 1)
885 f2fs_put_page(npage[0], 0);

--- 2576 unchanged lines hidden ---