]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/blobdiff - fs/cifs/inode.c
UBUNTU: Ubuntu-4.13.0-45.50
[mirror_ubuntu-artful-kernel.git] / fs / cifs / inode.c
index a8693632235f02b349db28e8d77aa45e30d4c783..9e5f0383962c9aa8ae510da3d48542a912952e20 100644 (file)
@@ -234,6 +234,8 @@ cifs_unix_basic_to_fattr(struct cifs_fattr *fattr, FILE_UNIX_BASIC_INFO *info,
        fattr->cf_atime = cifs_NTtimeToUnix(info->LastAccessTime);
        fattr->cf_mtime = cifs_NTtimeToUnix(info->LastModificationTime);
        fattr->cf_ctime = cifs_NTtimeToUnix(info->LastStatusChange);
+       /* old POSIX extensions don't get create time */
+
        fattr->cf_mode = le64_to_cpu(info->Permissions);
 
        /*
@@ -1047,7 +1049,7 @@ iget_no_retry:
        tcon->resource_id = CIFS_I(inode)->uniqueid;
 #endif
 
-       if (rc && tcon->ipc) {
+       if (rc && tcon->pipe) {
                cifs_dbg(FYI, "ipc connection - fake read inode\n");
                spin_lock(&inode->i_lock);
                inode->i_mode |= S_IFDIR;
@@ -2024,6 +2026,19 @@ int cifs_getattr(const struct path *path, struct kstat *stat,
        stat->blksize = CIFS_MAX_MSGSIZE;
        stat->ino = CIFS_I(inode)->uniqueid;
 
+       /* old CIFS Unix Extensions doesn't return create time */
+       if (CIFS_I(inode)->createtime) {
+               stat->result_mask |= STATX_BTIME;
+               stat->btime =
+                     cifs_NTtimeToUnix(cpu_to_le64(CIFS_I(inode)->createtime));
+       }
+
+       stat->attributes_mask |= (STATX_ATTR_COMPRESSED | STATX_ATTR_ENCRYPTED);
+       if (CIFS_I(inode)->cifsAttrs & FILE_ATTRIBUTE_COMPRESSED)
+               stat->attributes |= STATX_ATTR_COMPRESSED;
+       if (CIFS_I(inode)->cifsAttrs & FILE_ATTRIBUTE_ENCRYPTED)
+               stat->attributes |= STATX_ATTR_ENCRYPTED;
+
        /*
         * If on a multiuser mount without unix extensions or cifsacl being
         * enabled, and the admin hasn't overridden them, set the ownership