mirror of
https://github.com/torvalds/linux.git
synced 2026-05-30 18:13:41 +02:00
staging: exfat: fix fs_sync() calls.
The majority of them were totally backwards. Change the logic so that if DELAYED_SYNC *isn't* in the config, we actually flush to disk before flagging the file system as clean. That leaves two calls in the DELAYED_SYNC case. More detailed analysis is needed to make sure that's what's really needed, or if other call sites also need a fs_sync() call. This patch is at least "less wrong" than the code was, but further changes should be another patch. Signed-off-by: Valdis Kletnieks <valdis.kletnieks@vt.edu> Link: https://lore.kernel.org/r/11092.1570043784@turing-police Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
7e6af677d8
commit
8789f13ddc
|
|
@ -458,7 +458,7 @@ static int ffsUmountVol(struct super_block *sb)
|
|||
/* acquire the lock for file system critical section */
|
||||
down(&p_fs->v_sem);
|
||||
|
||||
fs_sync(sb, false);
|
||||
fs_sync(sb, true);
|
||||
fs_set_vol_flags(sb, VOL_CLEAN);
|
||||
|
||||
if (p_fs->vol_type == EXFAT) {
|
||||
|
|
@ -666,8 +666,8 @@ static int ffsCreateFile(struct inode *inode, char *path, u8 mode,
|
|||
/* create a new file */
|
||||
ret = create_file(inode, &dir, &uni_name, mode, fid);
|
||||
|
||||
#ifdef CONFIG_EXFAT_DELAYED_SYNC
|
||||
fs_sync(sb, false);
|
||||
#ifndef CONFIG_EXFAT_DELAYED_SYNC
|
||||
fs_sync(sb, true);
|
||||
fs_set_vol_flags(sb, VOL_CLEAN);
|
||||
#endif
|
||||
|
||||
|
|
@ -1039,8 +1039,8 @@ static int ffsWriteFile(struct inode *inode, struct file_id_t *fid,
|
|||
release_entry_set(es);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_EXFAT_DELAYED_SYNC
|
||||
fs_sync(sb, false);
|
||||
#ifndef CONFIG_EXFAT_DELAYED_SYNC
|
||||
fs_sync(sb, true);
|
||||
fs_set_vol_flags(sb, VOL_CLEAN);
|
||||
#endif
|
||||
|
||||
|
|
@ -1179,8 +1179,8 @@ static int ffsTruncateFile(struct inode *inode, u64 old_size, u64 new_size)
|
|||
if (fid->rwoffset > fid->size)
|
||||
fid->rwoffset = fid->size;
|
||||
|
||||
#ifdef CONFIG_EXFAT_DELAYED_SYNC
|
||||
fs_sync(sb, false);
|
||||
#ifndef CONFIG_EXFAT_DELAYED_SYNC
|
||||
fs_sync(sb, true);
|
||||
fs_set_vol_flags(sb, VOL_CLEAN);
|
||||
#endif
|
||||
|
||||
|
|
@ -1327,8 +1327,8 @@ static int ffsMoveFile(struct inode *old_parent_inode, struct file_id_t *fid,
|
|||
num_entries + 1);
|
||||
}
|
||||
out:
|
||||
#ifdef CONFIG_EXFAT_DELAYED_SYNC
|
||||
fs_sync(sb, false);
|
||||
#ifndef CONFIG_EXFAT_DELAYED_SYNC
|
||||
fs_sync(sb, true);
|
||||
fs_set_vol_flags(sb, VOL_CLEAN);
|
||||
#endif
|
||||
|
||||
|
|
@ -1389,8 +1389,8 @@ static int ffsRemoveFile(struct inode *inode, struct file_id_t *fid)
|
|||
fid->start_clu = CLUSTER_32(~0);
|
||||
fid->flags = (p_fs->vol_type == EXFAT) ? 0x03 : 0x01;
|
||||
|
||||
#ifdef CONFIG_EXFAT_DELAYED_SYNC
|
||||
fs_sync(sb, false);
|
||||
#ifndef CONFIG_EXFAT_DELAYED_SYNC
|
||||
fs_sync(sb, true);
|
||||
fs_set_vol_flags(sb, VOL_CLEAN);
|
||||
#endif
|
||||
|
||||
|
|
@ -1478,8 +1478,8 @@ static int ffsSetAttr(struct inode *inode, u32 attr)
|
|||
release_entry_set(es);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_EXFAT_DELAYED_SYNC
|
||||
fs_sync(sb, false);
|
||||
#ifndef CONFIG_EXFAT_DELAYED_SYNC
|
||||
fs_sync(sb, true);
|
||||
fs_set_vol_flags(sb, VOL_CLEAN);
|
||||
#endif
|
||||
|
||||
|
|
@ -1916,8 +1916,8 @@ static int ffsCreateDir(struct inode *inode, char *path, struct file_id_t *fid)
|
|||
|
||||
ret = create_dir(inode, &dir, &uni_name, fid);
|
||||
|
||||
#ifdef CONFIG_EXFAT_DELAYED_SYNC
|
||||
fs_sync(sb, false);
|
||||
#ifndef CONFIG_EXFAT_DELAYED_SYNC
|
||||
fs_sync(sb, true);
|
||||
fs_set_vol_flags(sb, VOL_CLEAN);
|
||||
#endif
|
||||
|
||||
|
|
@ -2177,8 +2177,8 @@ static int ffsRemoveDir(struct inode *inode, struct file_id_t *fid)
|
|||
fid->start_clu = CLUSTER_32(~0);
|
||||
fid->flags = (p_fs->vol_type == EXFAT) ? 0x03 : 0x01;
|
||||
|
||||
#ifdef CONFIG_EXFAT_DELAYED_SYNC
|
||||
fs_sync(sb, false);
|
||||
#ifndef CONFIG_EXFAT_DELAYED_SYNC
|
||||
fs_sync(sb, true);
|
||||
fs_set_vol_flags(sb, VOL_CLEAN);
|
||||
#endif
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user