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

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

3110 else
3111 fio->temp = COLD;
3112 return type;
3113}
3114
3115void f2fs_allocate_data_block(struct f2fs_sb_info *sbi, struct page *page,
3116 block_t old_blkaddr, block_t *new_blkaddr,
3117 struct f2fs_summary *sum, int type,
1// SPDX-License-Identifier: GPL-2.0
2/*
3 * fs/f2fs/segment.c
4 *
5 * Copyright (c) 2012 Samsung Electronics Co., Ltd.
6 * http://www.samsung.com/
7 */
8#include <linux/fs.h>

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

3110 else
3111 fio->temp = COLD;
3112 return type;
3113}
3114
3115void f2fs_allocate_data_block(struct f2fs_sb_info *sbi, struct page *page,
3116 block_t old_blkaddr, block_t *new_blkaddr,
3117 struct f2fs_summary *sum, int type,
3118 struct f2fs_io_info *fio, bool add_list)
3118 struct f2fs_io_info *fio)
3119{
3120 struct sit_info *sit_i = SIT_I(sbi);
3121 struct curseg_info *curseg = CURSEG_I(sbi, type);
3122 bool put_pin_sem = false;
3123
3124 if (type == CURSEG_COLD_DATA) {
3125 /* GC during CURSEG_COLD_DATA_PINNED allocation */
3126 if (down_read_trylock(&sbi->pin_sem)) {

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

3178 fill_node_footer_blkaddr(page, NEXT_FREE_BLKADDR(sbi, curseg));
3179
3180 f2fs_inode_chksum_set(sbi, page);
3181 }
3182
3183 if (F2FS_IO_ALIGNED(sbi))
3184 fio->retry = false;
3185
3119{
3120 struct sit_info *sit_i = SIT_I(sbi);
3121 struct curseg_info *curseg = CURSEG_I(sbi, type);
3122 bool put_pin_sem = false;
3123
3124 if (type == CURSEG_COLD_DATA) {
3125 /* GC during CURSEG_COLD_DATA_PINNED allocation */
3126 if (down_read_trylock(&sbi->pin_sem)) {

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

3178 fill_node_footer_blkaddr(page, NEXT_FREE_BLKADDR(sbi, curseg));
3179
3180 f2fs_inode_chksum_set(sbi, page);
3181 }
3182
3183 if (F2FS_IO_ALIGNED(sbi))
3184 fio->retry = false;
3185
3186 if (add_list) {
3186 if (fio) {
3187 struct f2fs_bio_info *io;
3188
3189 INIT_LIST_HEAD(&fio->list);
3190 fio->in_list = true;
3191 io = sbi->write_io[fio->type] + fio->temp;
3192 spin_lock(&io->io_lock);
3193 list_add_tail(&fio->list, &io->io_list);
3194 spin_unlock(&io->io_lock);

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

3227{
3228 int type = __get_segment_type(fio);
3229 bool keep_order = (f2fs_lfs_mode(fio->sbi) && type == CURSEG_COLD_DATA);
3230
3231 if (keep_order)
3232 down_read(&fio->sbi->io_order_lock);
3233reallocate:
3234 f2fs_allocate_data_block(fio->sbi, fio->page, fio->old_blkaddr,
3187 struct f2fs_bio_info *io;
3188
3189 INIT_LIST_HEAD(&fio->list);
3190 fio->in_list = true;
3191 io = sbi->write_io[fio->type] + fio->temp;
3192 spin_lock(&io->io_lock);
3193 list_add_tail(&fio->list, &io->io_list);
3194 spin_unlock(&io->io_lock);

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

3227{
3228 int type = __get_segment_type(fio);
3229 bool keep_order = (f2fs_lfs_mode(fio->sbi) && type == CURSEG_COLD_DATA);
3230
3231 if (keep_order)
3232 down_read(&fio->sbi->io_order_lock);
3233reallocate:
3234 f2fs_allocate_data_block(fio->sbi, fio->page, fio->old_blkaddr,
3235 &fio->new_blkaddr, sum, type, fio, true);
3235 &fio->new_blkaddr, sum, type, fio);
3236 if (GET_SEGNO(fio->sbi, fio->old_blkaddr) != NULL_SEGNO)
3237 invalidate_mapping_pages(META_MAPPING(fio->sbi),
3238 fio->old_blkaddr, fio->old_blkaddr);
3239
3240 /* writeout dirty page into bdev */
3241 f2fs_submit_page_write(fio);
3242 if (fio->retry) {
3243 fio->old_blkaddr = fio->new_blkaddr;

--- 1691 unchanged lines hidden ---
3236 if (GET_SEGNO(fio->sbi, fio->old_blkaddr) != NULL_SEGNO)
3237 invalidate_mapping_pages(META_MAPPING(fio->sbi),
3238 fio->old_blkaddr, fio->old_blkaddr);
3239
3240 /* writeout dirty page into bdev */
3241 f2fs_submit_page_write(fio);
3242 if (fio->retry) {
3243 fio->old_blkaddr = fio->new_blkaddr;

--- 1691 unchanged lines hidden ---