Commit d39fc592 authored by Steve French's avatar Steve French

cifs: release leases for deferred close handles when freezing

We should not be caching closed files when freeze is invoked on an fs
(so we can release resources more gracefully).

Fixes xfstests generic/068 generic/390 generic/491
Reviewed-by: default avatarDavid Howells <dhowells@redhat.com>
Cc: <stable@vger.kernel.org>
Signed-off-by: default avatarSteve French <stfrench@microsoft.com>
parent 716a3cf3
...@@ -760,6 +760,20 @@ static void cifs_umount_begin(struct super_block *sb) ...@@ -760,6 +760,20 @@ static void cifs_umount_begin(struct super_block *sb)
return; return;
} }
static int cifs_freeze(struct super_block *sb)
{
struct cifs_sb_info *cifs_sb = CIFS_SB(sb);
struct cifs_tcon *tcon;
if (cifs_sb == NULL)
return 0;
tcon = cifs_sb_master_tcon(cifs_sb);
cifs_close_all_deferred_files(tcon);
return 0;
}
#ifdef CONFIG_CIFS_STATS2 #ifdef CONFIG_CIFS_STATS2
static int cifs_show_stats(struct seq_file *s, struct dentry *root) static int cifs_show_stats(struct seq_file *s, struct dentry *root)
{ {
...@@ -798,6 +812,7 @@ static const struct super_operations cifs_super_ops = { ...@@ -798,6 +812,7 @@ static const struct super_operations cifs_super_ops = {
as opens */ as opens */
.show_options = cifs_show_options, .show_options = cifs_show_options,
.umount_begin = cifs_umount_begin, .umount_begin = cifs_umount_begin,
.freeze_fs = cifs_freeze,
#ifdef CONFIG_CIFS_STATS2 #ifdef CONFIG_CIFS_STATS2
.show_stats = cifs_show_stats, .show_stats = cifs_show_stats,
#endif #endif
......
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