Skip to content

Commit 7bc155f

Browse files
author
Jaegeuk Kim
committed
f2fs: kill volatile write support
There's no user, since all can use atomic writes simply. Let's kill it. Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
1 parent 3db1de0 commit 7bc155f

File tree

7 files changed

+10
-157
lines changed

7 files changed

+10
-157
lines changed

fs/f2fs/checkpoint.c

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1004,9 +1004,7 @@ static void __add_dirty_inode(struct inode *inode, enum inode_type type)
10041004
return;
10051005

10061006
set_inode_flag(inode, flag);
1007-
if (!f2fs_is_volatile_file(inode))
1008-
list_add_tail(&F2FS_I(inode)->dirty_list,
1009-
&sbi->inode_list[type]);
1007+
list_add_tail(&F2FS_I(inode)->dirty_list, &sbi->inode_list[type]);
10101008
stat_inc_dirty_inode(sbi, type);
10111009
}
10121010

fs/f2fs/data.c

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2741,11 +2741,6 @@ int f2fs_write_single_data_page(struct page *page, int *submitted,
27412741
write:
27422742
if (f2fs_is_drop_cache(inode))
27432743
goto out;
2744-
/* we should not write 0'th page having journal header */
2745-
if (f2fs_is_volatile_file(inode) && (!page->index ||
2746-
(!wbc->for_reclaim &&
2747-
f2fs_available_free_memory(sbi, BASE_CHECK))))
2748-
goto redirty_out;
27492744

27502745
/* Dentry/quota blocks are controlled by checkpoint */
27512746
if (S_ISDIR(inode->i_mode) || IS_NOQUOTA(inode)) {

fs/f2fs/debug.c

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -92,9 +92,7 @@ static void update_general_status(struct f2fs_sb_info *sbi)
9292
si->nquota_files = sbi->nquota_files;
9393
si->ndirty_all = sbi->ndirty_inode[DIRTY_META];
9494
si->aw_cnt = sbi->atomic_files;
95-
si->vw_cnt = atomic_read(&sbi->vw_cnt);
9695
si->max_aw_cnt = atomic_read(&sbi->max_aw_cnt);
97-
si->max_vw_cnt = atomic_read(&sbi->max_vw_cnt);
9896
si->nr_dio_read = get_pages(sbi, F2FS_DIO_READ);
9997
si->nr_dio_write = get_pages(sbi, F2FS_DIO_WRITE);
10098
si->nr_wb_cp_data = get_pages(sbi, F2FS_WB_CP_DATA);
@@ -511,10 +509,8 @@ static int stat_show(struct seq_file *s, void *v)
511509
si->flush_list_empty,
512510
si->nr_discarding, si->nr_discarded,
513511
si->nr_discard_cmd, si->undiscard_blks);
514-
seq_printf(s, " - atomic IO: %4d (Max. %4d), "
515-
"volatile IO: %4d (Max. %4d)\n",
516-
si->aw_cnt, si->max_aw_cnt,
517-
si->vw_cnt, si->max_vw_cnt);
512+
seq_printf(s, " - atomic IO: %4d (Max. %4d)\n",
513+
si->aw_cnt, si->max_aw_cnt);
518514
seq_printf(s, " - compress: %4d, hit:%8d\n", si->compress_pages, si->compress_page_hit);
519515
seq_printf(s, " - nodes: %4d in %4d\n",
520516
si->ndirty_node, si->node_pages);
@@ -615,9 +611,7 @@ int f2fs_build_stats(struct f2fs_sb_info *sbi)
615611
for (i = META_CP; i < META_MAX; i++)
616612
atomic_set(&sbi->meta_count[i], 0);
617613

618-
atomic_set(&sbi->vw_cnt, 0);
619614
atomic_set(&sbi->max_aw_cnt, 0);
620-
atomic_set(&sbi->max_vw_cnt, 0);
621615

622616
raw_spin_lock_irqsave(&f2fs_stat_lock, flags);
623617
list_add_tail(&si->stat_list, &f2fs_stat_list);

fs/f2fs/f2fs.h

Lines changed: 2 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -737,7 +737,6 @@ enum {
737737
FI_UPDATE_WRITE, /* inode has in-place-update data */
738738
FI_NEED_IPU, /* used for ipu per file */
739739
FI_ATOMIC_FILE, /* indicate atomic file */
740-
FI_VOLATILE_FILE, /* indicate volatile file */
741740
FI_FIRST_BLOCK_WRITTEN, /* indicate #0 data block was written */
742741
FI_DROP_CACHE, /* drop dirty page cache */
743742
FI_DATA_EXIST, /* indicate data exists */
@@ -1738,9 +1737,7 @@ struct f2fs_sb_info {
17381737
atomic_t inline_dir; /* # of inline_dentry inodes */
17391738
atomic_t compr_inode; /* # of compressed inodes */
17401739
atomic64_t compr_blocks; /* # of compressed blocks */
1741-
atomic_t vw_cnt; /* # of volatile writes */
17421740
atomic_t max_aw_cnt; /* max # of atomic writes */
1743-
atomic_t max_vw_cnt; /* max # of volatile writes */
17441741
unsigned int io_skip_bggc; /* skip background gc for in-flight IO */
17451742
unsigned int other_skip_bggc; /* skip background gc for other reasons */
17461743
unsigned int ndirty_inode[NR_INODE_TYPE]; /* # of dirty inodes */
@@ -3191,11 +3188,6 @@ static inline bool f2fs_is_atomic_file(struct inode *inode)
31913188
return is_inode_flag_set(inode, FI_ATOMIC_FILE);
31923189
}
31933190

3194-
static inline bool f2fs_is_volatile_file(struct inode *inode)
3195-
{
3196-
return is_inode_flag_set(inode, FI_VOLATILE_FILE);
3197-
}
3198-
31993191
static inline bool f2fs_is_first_block_written(struct inode *inode)
32003192
{
32013193
return is_inode_flag_set(inode, FI_FIRST_BLOCK_WRITTEN);
@@ -3815,7 +3807,7 @@ struct f2fs_stat_info {
38153807
int inline_xattr, inline_inode, inline_dir, append, update, orphans;
38163808
int compr_inode;
38173809
unsigned long long compr_blocks;
3818-
int aw_cnt, max_aw_cnt, vw_cnt, max_vw_cnt;
3810+
int aw_cnt, max_aw_cnt;
38193811
unsigned int valid_count, valid_node_count, valid_inode_count, discard_blks;
38203812
unsigned int bimodal, avg_vblocks;
38213813
int util_free, util_valid, util_invalid;
@@ -3926,17 +3918,6 @@ static inline struct f2fs_stat_info *F2FS_STAT(struct f2fs_sb_info *sbi)
39263918
if (cur > max) \
39273919
atomic_set(&F2FS_I_SB(inode)->max_aw_cnt, cur); \
39283920
} while (0)
3929-
#define stat_inc_volatile_write(inode) \
3930-
(atomic_inc(&F2FS_I_SB(inode)->vw_cnt))
3931-
#define stat_dec_volatile_write(inode) \
3932-
(atomic_dec(&F2FS_I_SB(inode)->vw_cnt))
3933-
#define stat_update_max_volatile_write(inode) \
3934-
do { \
3935-
int cur = atomic_read(&F2FS_I_SB(inode)->vw_cnt); \
3936-
int max = atomic_read(&F2FS_I_SB(inode)->max_vw_cnt); \
3937-
if (cur > max) \
3938-
atomic_set(&F2FS_I_SB(inode)->max_vw_cnt, cur); \
3939-
} while (0)
39403921
#define stat_inc_seg_count(sbi, type, gc_type) \
39413922
do { \
39423923
struct f2fs_stat_info *si = F2FS_STAT(sbi); \
@@ -3998,9 +3979,6 @@ void f2fs_update_sit_info(struct f2fs_sb_info *sbi);
39983979
#define stat_add_compr_blocks(inode, blocks) do { } while (0)
39993980
#define stat_sub_compr_blocks(inode, blocks) do { } while (0)
40003981
#define stat_update_max_atomic_write(inode) do { } while (0)
4001-
#define stat_inc_volatile_write(inode) do { } while (0)
4002-
#define stat_dec_volatile_write(inode) do { } while (0)
4003-
#define stat_update_max_volatile_write(inode) do { } while (0)
40043982
#define stat_inc_meta_count(sbi, blkaddr) do { } while (0)
40053983
#define stat_inc_seg_type(sbi, curseg) do { } while (0)
40063984
#define stat_inc_block_count(sbi, curseg) do { } while (0)
@@ -4403,8 +4381,7 @@ static inline bool f2fs_lfs_mode(struct f2fs_sb_info *sbi)
44034381
static inline bool f2fs_may_compress(struct inode *inode)
44044382
{
44054383
if (IS_SWAPFILE(inode) || f2fs_is_pinned_file(inode) ||
4406-
f2fs_is_atomic_file(inode) ||
4407-
f2fs_is_volatile_file(inode))
4384+
f2fs_is_atomic_file(inode))
44084385
return false;
44094386
return S_ISREG(inode->i_mode) || S_ISDIR(inode->i_mode);
44104387
}

fs/f2fs/file.c

Lines changed: 3 additions & 113 deletions
Original file line numberDiff line numberDiff line change
@@ -1815,13 +1815,6 @@ static int f2fs_release_file(struct inode *inode, struct file *filp)
18151815

18161816
if (f2fs_is_atomic_file(inode))
18171817
f2fs_abort_atomic_write(inode, true);
1818-
if (f2fs_is_volatile_file(inode)) {
1819-
set_inode_flag(inode, FI_DROP_CACHE);
1820-
filemap_fdatawrite(inode->i_mapping);
1821-
clear_inode_flag(inode, FI_DROP_CACHE);
1822-
clear_inode_flag(inode, FI_VOLATILE_FILE);
1823-
stat_dec_volatile_write(inode);
1824-
}
18251818
return 0;
18261819
}
18271820

@@ -2096,124 +2089,23 @@ static int f2fs_ioc_commit_atomic_write(struct file *filp)
20962089

20972090
inode_lock(inode);
20982091

2099-
if (f2fs_is_volatile_file(inode)) {
2100-
ret = -EINVAL;
2101-
goto err_out;
2102-
}
2103-
21042092
if (f2fs_is_atomic_file(inode)) {
21052093
ret = f2fs_commit_atomic_write(inode);
21062094
if (ret)
2107-
goto err_out;
2095+
goto unlock_out;
21082096

21092097
ret = f2fs_do_sync_file(filp, 0, LLONG_MAX, 0, true);
21102098
if (!ret)
21112099
f2fs_abort_atomic_write(inode, false);
21122100
} else {
21132101
ret = f2fs_do_sync_file(filp, 0, LLONG_MAX, 1, false);
21142102
}
2115-
err_out:
2103+
unlock_out:
21162104
inode_unlock(inode);
21172105
mnt_drop_write_file(filp);
21182106
return ret;
21192107
}
21202108

2121-
static int f2fs_ioc_start_volatile_write(struct file *filp)
2122-
{
2123-
struct inode *inode = file_inode(filp);
2124-
struct user_namespace *mnt_userns = file_mnt_user_ns(filp);
2125-
int ret;
2126-
2127-
if (!inode_owner_or_capable(mnt_userns, inode))
2128-
return -EACCES;
2129-
2130-
if (!S_ISREG(inode->i_mode))
2131-
return -EINVAL;
2132-
2133-
ret = mnt_want_write_file(filp);
2134-
if (ret)
2135-
return ret;
2136-
2137-
inode_lock(inode);
2138-
2139-
if (f2fs_is_volatile_file(inode))
2140-
goto out;
2141-
2142-
ret = f2fs_convert_inline_inode(inode);
2143-
if (ret)
2144-
goto out;
2145-
2146-
stat_inc_volatile_write(inode);
2147-
stat_update_max_volatile_write(inode);
2148-
2149-
set_inode_flag(inode, FI_VOLATILE_FILE);
2150-
f2fs_update_time(F2FS_I_SB(inode), REQ_TIME);
2151-
out:
2152-
inode_unlock(inode);
2153-
mnt_drop_write_file(filp);
2154-
return ret;
2155-
}
2156-
2157-
static int f2fs_ioc_release_volatile_write(struct file *filp)
2158-
{
2159-
struct inode *inode = file_inode(filp);
2160-
struct user_namespace *mnt_userns = file_mnt_user_ns(filp);
2161-
int ret;
2162-
2163-
if (!inode_owner_or_capable(mnt_userns, inode))
2164-
return -EACCES;
2165-
2166-
ret = mnt_want_write_file(filp);
2167-
if (ret)
2168-
return ret;
2169-
2170-
inode_lock(inode);
2171-
2172-
if (!f2fs_is_volatile_file(inode))
2173-
goto out;
2174-
2175-
if (!f2fs_is_first_block_written(inode)) {
2176-
ret = truncate_partial_data_page(inode, 0, true);
2177-
goto out;
2178-
}
2179-
2180-
ret = punch_hole(inode, 0, F2FS_BLKSIZE);
2181-
out:
2182-
inode_unlock(inode);
2183-
mnt_drop_write_file(filp);
2184-
return ret;
2185-
}
2186-
2187-
static int f2fs_ioc_abort_volatile_write(struct file *filp)
2188-
{
2189-
struct inode *inode = file_inode(filp);
2190-
struct user_namespace *mnt_userns = file_mnt_user_ns(filp);
2191-
int ret;
2192-
2193-
if (!inode_owner_or_capable(mnt_userns, inode))
2194-
return -EACCES;
2195-
2196-
ret = mnt_want_write_file(filp);
2197-
if (ret)
2198-
return ret;
2199-
2200-
inode_lock(inode);
2201-
2202-
if (f2fs_is_atomic_file(inode))
2203-
f2fs_abort_atomic_write(inode, true);
2204-
if (f2fs_is_volatile_file(inode)) {
2205-
clear_inode_flag(inode, FI_VOLATILE_FILE);
2206-
stat_dec_volatile_write(inode);
2207-
ret = f2fs_do_sync_file(filp, 0, LLONG_MAX, 0, true);
2208-
}
2209-
2210-
inode_unlock(inode);
2211-
2212-
mnt_drop_write_file(filp);
2213-
f2fs_update_time(F2FS_I_SB(inode), REQ_TIME);
2214-
return ret;
2215-
}
2216-
22172109
static int f2fs_ioc_shutdown(struct file *filp, unsigned long arg)
22182110
{
22192111
struct inode *inode = file_inode(filp);
@@ -4151,11 +4043,9 @@ static long __f2fs_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
41514043
case F2FS_IOC_COMMIT_ATOMIC_WRITE:
41524044
return f2fs_ioc_commit_atomic_write(filp);
41534045
case F2FS_IOC_START_VOLATILE_WRITE:
4154-
return f2fs_ioc_start_volatile_write(filp);
41554046
case F2FS_IOC_RELEASE_VOLATILE_WRITE:
4156-
return f2fs_ioc_release_volatile_write(filp);
41574047
case F2FS_IOC_ABORT_VOLATILE_WRITE:
4158-
return f2fs_ioc_abort_volatile_write(filp);
4048+
return -EOPNOTSUPP;
41594049
case F2FS_IOC_SHUTDOWN:
41604050
return f2fs_ioc_shutdown(filp, arg);
41614051
case FITRIM:

fs/f2fs/segment.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3166,8 +3166,7 @@ static int __get_segment_type_6(struct f2fs_io_info *fio)
31663166
return CURSEG_COLD_DATA;
31673167
if (file_is_hot(inode) ||
31683168
is_inode_flag_set(inode, FI_HOT_DATA) ||
3169-
f2fs_is_atomic_file(inode) ||
3170-
f2fs_is_volatile_file(inode))
3169+
f2fs_is_atomic_file(inode))
31713170
return CURSEG_HOT_DATA;
31723171
return f2fs_rw_hint_to_seg_type(inode->i_write_hint);
31733172
} else {

fs/f2fs/verity.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ static int f2fs_begin_enable_verity(struct file *filp)
128128
if (f2fs_verity_in_progress(inode))
129129
return -EBUSY;
130130

131-
if (f2fs_is_atomic_file(inode) || f2fs_is_volatile_file(inode))
131+
if (f2fs_is_atomic_file(inode))
132132
return -EOPNOTSUPP;
133133

134134
/*

0 commit comments

Comments
 (0)