]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - fs/cifs/cifsfs.c
smb3: fix redundant opens on root
[linux.git] / fs / cifs / cifsfs.c
index f715609b13f34a412de9f0486750a05cf73340b6..62f166270459afad7fc4743995edcef570a6b963 100644 (file)
@@ -495,6 +495,8 @@ cifs_show_options(struct seq_file *s, struct dentry *root)
                seq_puts(s, ",sfu");
        if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_NO_BRL)
                seq_puts(s, ",nobrl");
+       if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_NO_HANDLE_CACHE)
+               seq_puts(s, ",nohandlecache");
        if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_CIFS_ACL)
                seq_puts(s, ",cifsacl");
        if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_DYNPERM)
@@ -1047,6 +1049,18 @@ ssize_t cifs_file_copychunk_range(unsigned int xid,
        return rc;
 }
 
+/*
+ * Directory operations under CIFS/SMB2/SMB3 are synchronous, so fsync()
+ * is a dummy operation.
+ */
+static int cifs_dir_fsync(struct file *file, loff_t start, loff_t end, int datasync)
+{
+       cifs_dbg(FYI, "Sync directory - name: %pD datasync: 0x%x\n",
+                file, datasync);
+
+       return 0;
+}
+
 static ssize_t cifs_copy_file_range(struct file *src_file, loff_t off,
                                struct file *dst_file, loff_t destoff,
                                size_t len, unsigned int flags)
@@ -1181,6 +1195,7 @@ const struct file_operations cifs_dir_ops = {
        .copy_file_range = cifs_copy_file_range,
        .clone_file_range = cifs_clone_file_range,
        .llseek = generic_file_llseek,
+       .fsync = cifs_dir_fsync,
 };
 
 static void