- DIR *dir = NULL;
-
- if ((fsp != NULL) && (fsp->fh->fd != -1)) {
- fd = fsp->fh->fd;
- } else if (smb_fname != NULL) {
- if (S_ISDIR(smb_fname->st.st_ex_mode)) {
- dir = opendir(smb_fname->base_name);
- if (dir == NULL) {
- return NT_STATUS_UNSUCCESSFUL;
- }
- opened = true;
- fd = dirfd(dir);
- if (fd < 0) {
- status = NT_STATUS_UNSUCCESSFUL;
- goto err_close;
- }
+
+ if (!fsp->fsp_flags.is_pathref) {
+ ret = ioctl(fsp_fd, FS_IOC_GETFLAGS, &flags);
+ if (ret < 0) {
+ DBG_WARNING("FS_IOC_GETFLAGS failed: %s, fd %lld\n",
+ strerror(errno), (long long)fd);
+ return map_nt_error_from_unix(errno);
+ }
+ if (flags & FS_COMPR_FL) {
+ *_compression_fmt = COMPRESSION_FORMAT_LZNT1;