Commit 1b3e2513 authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'exfat-for-6.9-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/linkinjeon/exfat

Pull exfat updates from Namjae Jeon:

 - Improve dirsync performance by syncing on a dentry-set rather than on
   a per-directory entry

* tag 'exfat-for-6.9-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/linkinjeon/exfat:
  exfat: remove duplicate update parent dir
  exfat: do not sync parent dir if just update timestamp
  exfat: remove unused functions
  exfat: convert exfat_find_empty_entry() to use dentry cache
  exfat: convert exfat_init_ext_entry() to use dentry cache
  exfat: move free cluster out of exfat_init_ext_entry()
  exfat: convert exfat_remove_entries() to use dentry cache
  exfat: convert exfat_add_entry() to use dentry cache
  exfat: add exfat_get_empty_dentry_set() helper
  exfat: add __exfat_get_dentry_set() helper
parents 879e2886 dc38fdc5
This diff is collapsed.
...@@ -431,8 +431,6 @@ int exfat_ent_get(struct super_block *sb, unsigned int loc, ...@@ -431,8 +431,6 @@ int exfat_ent_get(struct super_block *sb, unsigned int loc,
unsigned int *content); unsigned int *content);
int exfat_ent_set(struct super_block *sb, unsigned int loc, int exfat_ent_set(struct super_block *sb, unsigned int loc,
unsigned int content); unsigned int content);
int exfat_count_ext_entries(struct super_block *sb, struct exfat_chain *p_dir,
int entry, struct exfat_dentry *p_entry);
int exfat_chain_cont_cluster(struct super_block *sb, unsigned int chain, int exfat_chain_cont_cluster(struct super_block *sb, unsigned int chain,
unsigned int len); unsigned int len);
int exfat_zeroed_cluster(struct inode *dir, unsigned int clu); int exfat_zeroed_cluster(struct inode *dir, unsigned int clu);
...@@ -480,16 +478,14 @@ int exfat_get_cluster(struct inode *inode, unsigned int cluster, ...@@ -480,16 +478,14 @@ int exfat_get_cluster(struct inode *inode, unsigned int cluster,
extern const struct inode_operations exfat_dir_inode_operations; extern const struct inode_operations exfat_dir_inode_operations;
extern const struct file_operations exfat_dir_operations; extern const struct file_operations exfat_dir_operations;
unsigned int exfat_get_entry_type(struct exfat_dentry *p_entry); unsigned int exfat_get_entry_type(struct exfat_dentry *p_entry);
int exfat_init_dir_entry(struct inode *inode, struct exfat_chain *p_dir, void exfat_init_dir_entry(struct exfat_entry_set_cache *es,
int entry, unsigned int type, unsigned int start_clu, unsigned int type, unsigned int start_clu,
unsigned long long size); unsigned long long size, struct timespec64 *ts);
int exfat_init_ext_entry(struct inode *inode, struct exfat_chain *p_dir, void exfat_init_ext_entry(struct exfat_entry_set_cache *es, int num_entries,
int entry, int num_entries, struct exfat_uni_name *p_uniname); struct exfat_uni_name *p_uniname);
int exfat_remove_entries(struct inode *inode, struct exfat_chain *p_dir, void exfat_remove_entries(struct inode *inode, struct exfat_entry_set_cache *es,
int entry, int order, int num_entries); int order);
int exfat_update_dir_chksum(struct inode *inode, struct exfat_chain *p_dir, void exfat_update_dir_chksum(struct exfat_entry_set_cache *es);
int entry);
void exfat_update_dir_chksum_with_entry_set(struct exfat_entry_set_cache *es);
int exfat_calc_num_entries(struct exfat_uni_name *p_uniname); int exfat_calc_num_entries(struct exfat_uni_name *p_uniname);
int exfat_find_dir_entry(struct super_block *sb, struct exfat_inode_info *ei, int exfat_find_dir_entry(struct super_block *sb, struct exfat_inode_info *ei,
struct exfat_chain *p_dir, struct exfat_uni_name *p_uniname, struct exfat_chain *p_dir, struct exfat_uni_name *p_uniname,
...@@ -501,7 +497,10 @@ struct exfat_dentry *exfat_get_dentry_cached(struct exfat_entry_set_cache *es, ...@@ -501,7 +497,10 @@ struct exfat_dentry *exfat_get_dentry_cached(struct exfat_entry_set_cache *es,
int num); int num);
int exfat_get_dentry_set(struct exfat_entry_set_cache *es, int exfat_get_dentry_set(struct exfat_entry_set_cache *es,
struct super_block *sb, struct exfat_chain *p_dir, int entry, struct super_block *sb, struct exfat_chain *p_dir, int entry,
unsigned int type); unsigned int num_entries);
int exfat_get_empty_dentry_set(struct exfat_entry_set_cache *es,
struct super_block *sb, struct exfat_chain *p_dir, int entry,
unsigned int num_entries);
int exfat_put_dentry_set(struct exfat_entry_set_cache *es, int sync); int exfat_put_dentry_set(struct exfat_entry_set_cache *es, int sync);
int exfat_count_dir_entries(struct super_block *sb, struct exfat_chain *p_dir); int exfat_count_dir_entries(struct super_block *sb, struct exfat_chain *p_dir);
......
...@@ -94,7 +94,7 @@ int __exfat_write_inode(struct inode *inode, int sync) ...@@ -94,7 +94,7 @@ int __exfat_write_inode(struct inode *inode, int sync)
ep2->dentry.stream.start_clu = EXFAT_FREE_CLUSTER; ep2->dentry.stream.start_clu = EXFAT_FREE_CLUSTER;
} }
exfat_update_dir_chksum_with_entry_set(&es); exfat_update_dir_chksum(&es);
return exfat_put_dentry_set(&es, sync); return exfat_put_dentry_set(&es, sync);
} }
......
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment