segment.c (19f106bc03e62739961249a29916ee3602ac3de9) segment.c (4375a33664de17af9032b5f491a49bd256670927)
1/*
2 * fs/f2fs/segment.c
3 *
4 * Copyright (c) 2012 Samsung Electronics Co., Ltd.
5 * http://www.samsung.com/
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License version 2 as

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

214 struct f2fs_sb_info *sbi = F2FS_I_SB(inode);
215 struct f2fs_inode_info *fi = F2FS_I(inode);
216 struct inmem_pages *cur, *tmp;
217 bool submit_bio = false;
218 struct f2fs_io_info fio = {
219 .sbi = sbi,
220 .type = DATA,
221 .rw = WRITE_SYNC | REQ_PRIO,
1/*
2 * fs/f2fs/segment.c
3 *
4 * Copyright (c) 2012 Samsung Electronics Co., Ltd.
5 * http://www.samsung.com/
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License version 2 as

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

214 struct f2fs_sb_info *sbi = F2FS_I_SB(inode);
215 struct f2fs_inode_info *fi = F2FS_I(inode);
216 struct inmem_pages *cur, *tmp;
217 bool submit_bio = false;
218 struct f2fs_io_info fio = {
219 .sbi = sbi,
220 .type = DATA,
221 .rw = WRITE_SYNC | REQ_PRIO,
222 .encrypted_page = NULL,
222 };
223
224 /*
225 * The abort is true only when f2fs_evict_inode is called.
226 * Basically, the f2fs_evict_inode doesn't produce any data writes, so
227 * that we don't need to call f2fs_balance_fs.
228 * Otherwise, f2fs_gc in f2fs_balance_fs can wait forever until this
229 * inode becomes free by iget_locked in f2fs_iget.

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

1226void write_meta_page(struct f2fs_sb_info *sbi, struct page *page)
1227{
1228 struct f2fs_io_info fio = {
1229 .sbi = sbi,
1230 .type = META,
1231 .rw = WRITE_SYNC | REQ_META | REQ_PRIO,
1232 .blk_addr = page->index,
1233 .page = page,
223 };
224
225 /*
226 * The abort is true only when f2fs_evict_inode is called.
227 * Basically, the f2fs_evict_inode doesn't produce any data writes, so
228 * that we don't need to call f2fs_balance_fs.
229 * Otherwise, f2fs_gc in f2fs_balance_fs can wait forever until this
230 * inode becomes free by iget_locked in f2fs_iget.

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

1227void write_meta_page(struct f2fs_sb_info *sbi, struct page *page)
1228{
1229 struct f2fs_io_info fio = {
1230 .sbi = sbi,
1231 .type = META,
1232 .rw = WRITE_SYNC | REQ_META | REQ_PRIO,
1233 .blk_addr = page->index,
1234 .page = page,
1235 .encrypted_page = NULL,
1234 };
1235
1236 set_page_writeback(page);
1237 f2fs_submit_page_mbio(&fio);
1238}
1239
1240void write_node_page(unsigned int nid, struct f2fs_io_info *fio)
1241{

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

1325}
1326
1327static inline bool is_merged_page(struct f2fs_sb_info *sbi,
1328 struct page *page, enum page_type type)
1329{
1330 enum page_type btype = PAGE_TYPE_OF_BIO(type);
1331 struct f2fs_bio_info *io = &sbi->write_io[btype];
1332 struct bio_vec *bvec;
1236 };
1237
1238 set_page_writeback(page);
1239 f2fs_submit_page_mbio(&fio);
1240}
1241
1242void write_node_page(unsigned int nid, struct f2fs_io_info *fio)
1243{

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

1327}
1328
1329static inline bool is_merged_page(struct f2fs_sb_info *sbi,
1330 struct page *page, enum page_type type)
1331{
1332 enum page_type btype = PAGE_TYPE_OF_BIO(type);
1333 struct f2fs_bio_info *io = &sbi->write_io[btype];
1334 struct bio_vec *bvec;
1335 struct page *target;
1333 int i;
1334
1335 down_read(&io->io_rwsem);
1336 int i;
1337
1338 down_read(&io->io_rwsem);
1336 if (!io->bio)
1337 goto out;
1339 if (!io->bio) {
1340 up_read(&io->io_rwsem);
1341 return false;
1342 }
1338
1339 bio_for_each_segment_all(bvec, io->bio, i) {
1343
1344 bio_for_each_segment_all(bvec, io->bio, i) {
1340 if (page == bvec->bv_page) {
1345
1346 if (bvec->bv_page->mapping) {
1347 target = bvec->bv_page;
1348 } else {
1349 struct f2fs_crypto_ctx *ctx;
1350
1351 /* encrypted page */
1352 ctx = (struct f2fs_crypto_ctx *)page_private(
1353 bvec->bv_page);
1354 target = ctx->control_page;
1355 }
1356
1357 if (page == target) {
1341 up_read(&io->io_rwsem);
1342 return true;
1343 }
1344 }
1345
1358 up_read(&io->io_rwsem);
1359 return true;
1360 }
1361 }
1362
1346out:
1347 up_read(&io->io_rwsem);
1348 return false;
1349}
1350
1351void f2fs_wait_on_page_writeback(struct page *page,
1352 enum page_type type)
1353{
1354 if (PageWriteback(page)) {

--- 985 unchanged lines hidden ---
1363 up_read(&io->io_rwsem);
1364 return false;
1365}
1366
1367void f2fs_wait_on_page_writeback(struct page *page,
1368 enum page_type type)
1369{
1370 if (PageWriteback(page)) {

--- 985 unchanged lines hidden ---