Skip to content

Commit fba27cf

Browse files
YuezhangMonamjaejeon
authored andcommitted
exfat: drop ->i_size_ondisk
->i_size_ondisk is no longer used by exfat_write_begin() after commit(11a347f exfat: change to get file size from DataLength), drop it. Signed-off-by: Yuezhang Mo <[email protected]> Signed-off-by: Namjae Jeon <[email protected]>
1 parent a430d95 commit fba27cf

File tree

5 files changed

+12
-25
lines changed

5 files changed

+12
-25
lines changed

fs/exfat/exfat_fs.h

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -309,11 +309,6 @@ struct exfat_inode_info {
309309
/* for avoiding the race between alloc and free */
310310
unsigned int cache_valid_id;
311311

312-
/*
313-
* NOTE: i_size_ondisk is 64bits, so must hold ->inode_lock to access.
314-
* physically allocated size.
315-
*/
316-
loff_t i_size_ondisk;
317312
/* block-aligned i_size (used in cont_write_begin) */
318313
loff_t i_size_aligned;
319314
/* on-disk position of directory entry or 0 */
@@ -417,6 +412,11 @@ static inline bool is_valid_cluster(struct exfat_sb_info *sbi,
417412
return clus >= EXFAT_FIRST_CLUSTER && clus < sbi->num_clusters;
418413
}
419414

415+
static inline loff_t exfat_ondisk_size(const struct inode *inode)
416+
{
417+
return ((loff_t)inode->i_blocks) << 9;
418+
}
419+
420420
/* super.c */
421421
int exfat_set_volume_dirty(struct super_block *sb);
422422
int exfat_clear_volume_dirty(struct super_block *sb);

fs/exfat/file.c

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ static int exfat_cont_expand(struct inode *inode, loff_t size)
2929
if (ret)
3030
return ret;
3131

32-
num_clusters = EXFAT_B_TO_CLU_ROUND_UP(ei->i_size_ondisk, sbi);
32+
num_clusters = EXFAT_B_TO_CLU(exfat_ondisk_size(inode), sbi);
3333
new_num_clusters = EXFAT_B_TO_CLU_ROUND_UP(size, sbi);
3434

3535
if (new_num_clusters == num_clusters)
@@ -75,7 +75,6 @@ static int exfat_cont_expand(struct inode *inode, loff_t size)
7575
i_size_write(inode, size);
7676

7777
ei->i_size_aligned = round_up(size, sb->s_blocksize);
78-
ei->i_size_ondisk = ei->i_size_aligned;
7978
inode->i_blocks = round_up(size, sbi->cluster_size) >> 9;
8079
mark_inode_dirty(inode);
8180

@@ -159,7 +158,7 @@ int __exfat_truncate(struct inode *inode)
159158
exfat_set_volume_dirty(sb);
160159

161160
num_clusters_new = EXFAT_B_TO_CLU_ROUND_UP(i_size_read(inode), sbi);
162-
num_clusters_phys = EXFAT_B_TO_CLU_ROUND_UP(ei->i_size_ondisk, sbi);
161+
num_clusters_phys = EXFAT_B_TO_CLU(exfat_ondisk_size(inode), sbi);
163162

164163
exfat_chain_set(&clu, ei->start_clu, num_clusters_phys, ei->flags);
165164

@@ -270,9 +269,6 @@ void exfat_truncate(struct inode *inode)
270269
aligned_size++;
271270
}
272271

273-
if (ei->i_size_ondisk > i_size_read(inode))
274-
ei->i_size_ondisk = aligned_size;
275-
276272
if (ei->i_size_aligned > i_size_read(inode))
277273
ei->i_size_aligned = aligned_size;
278274
mutex_unlock(&sbi->s_lock);

fs/exfat/inode.c

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -130,11 +130,9 @@ static int exfat_map_cluster(struct inode *inode, unsigned int clu_offset,
130130
struct exfat_sb_info *sbi = EXFAT_SB(sb);
131131
struct exfat_inode_info *ei = EXFAT_I(inode);
132132
unsigned int local_clu_offset = clu_offset;
133-
unsigned int num_to_be_allocated = 0, num_clusters = 0;
133+
unsigned int num_to_be_allocated = 0, num_clusters;
134134

135-
if (ei->i_size_ondisk > 0)
136-
num_clusters =
137-
EXFAT_B_TO_CLU_ROUND_UP(ei->i_size_ondisk, sbi);
135+
num_clusters = EXFAT_B_TO_CLU(exfat_ondisk_size(inode), sbi);
138136

139137
if (clu_offset >= num_clusters)
140138
num_to_be_allocated = clu_offset - num_clusters + 1;
@@ -268,10 +266,10 @@ static int exfat_map_new_buffer(struct exfat_inode_info *ei,
268266
set_buffer_new(bh);
269267

270268
/*
271-
* Adjust i_size_aligned if i_size_ondisk is bigger than it.
269+
* Adjust i_size_aligned if ondisk_size is bigger than it.
272270
*/
273-
if (ei->i_size_ondisk > ei->i_size_aligned)
274-
ei->i_size_aligned = ei->i_size_ondisk;
271+
if (exfat_ondisk_size(&ei->vfs_inode) > ei->i_size_aligned)
272+
ei->i_size_aligned = exfat_ondisk_size(&ei->vfs_inode);
275273
return 0;
276274
}
277275

@@ -317,10 +315,6 @@ static int exfat_get_block(struct inode *inode, sector_t iblock,
317315
max_blocks = min(mapped_blocks, max_blocks);
318316

319317
pos = EXFAT_BLK_TO_B((iblock + 1), sb);
320-
if ((create && iblock >= last_block) || buffer_delay(bh_result)) {
321-
if (ei->i_size_ondisk < pos)
322-
ei->i_size_ondisk = pos;
323-
}
324318

325319
map_bh(bh_result, sb, phys);
326320
if (buffer_delay(bh_result))
@@ -674,7 +668,6 @@ static int exfat_fill_inode(struct inode *inode, struct exfat_dir_entry *info)
674668
}
675669

676670
ei->i_size_aligned = size;
677-
ei->i_size_ondisk = size;
678671

679672
exfat_save_attr(inode, info->attr);
680673

fs/exfat/namei.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -372,7 +372,6 @@ static int exfat_find_empty_entry(struct inode *inode,
372372

373373
/* directory inode should be updated in here */
374374
i_size_write(inode, size);
375-
ei->i_size_ondisk += sbi->cluster_size;
376375
ei->i_size_aligned += sbi->cluster_size;
377376
ei->valid_size += sbi->cluster_size;
378377
ei->flags = p_dir->flags;

fs/exfat/super.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -371,7 +371,6 @@ static int exfat_read_root(struct inode *inode)
371371
inode->i_blocks = round_up(i_size_read(inode), sbi->cluster_size) >> 9;
372372
ei->i_pos = ((loff_t)sbi->root_dir << 32) | 0xffffffff;
373373
ei->i_size_aligned = i_size_read(inode);
374-
ei->i_size_ondisk = i_size_read(inode);
375374

376375
exfat_save_attr(inode, EXFAT_ATTR_SUBDIR);
377376
ei->i_crtime = simple_inode_init_ts(inode);

0 commit comments

Comments
 (0)