提交 894b3a9e 编写于 作者: L Laine Stump 提交者: Cole Robinson

util: recognize SMB/CIFS filesystems as shared

This should resolve:

  https://bugzilla.redhat.com/show_bug.cgi?id=1012085

libvirt previously recognized NFS, GFS2, OCFS2, and AFS filesystems as
"shared", and thus eligible for exceptions to certain rules/actions
about chowning image files before handing them off to a guest. This
patch widens the definition of "shared filesystem" to include SMB and
CIFS filesystems (aka "Windows file sharing"); both of these use the
same protocol, but different drivers so there are different magic
numbers for each.

(cherry picked from commit e4e73337)
上级 22a1dd95
......@@ -1241,6 +1241,12 @@ cleanup:
# ifndef AFS_FS_MAGIC
# define AFS_FS_MAGIC 0x6B414653
# endif
# ifndef SMB_SUPER_MAGIC
# define SMB_SUPER_MAGIC 0x517B
# endif
# ifndef CIFS_SUPER_MAGIC
# define CIFS_SUPER_MAGIC 0xFF534D42
# endif
int virStorageFileIsSharedFSType(const char *path,
......@@ -1304,6 +1310,12 @@ int virStorageFileIsSharedFSType(const char *path,
if ((fstypes & VIR_STORAGE_FILE_SHFS_AFS) &&
(sb.f_type == AFS_FS_MAGIC))
return 1;
if ((fstypes & VIR_STORAGE_FILE_SHFS_SMB) &&
(sb.f_type == SMB_SUPER_MAGIC))
return 1;
if ((fstypes & VIR_STORAGE_FILE_SHFS_CIFS) &&
(sb.f_type == CIFS_SUPER_MAGIC))
return 1;
return 0;
}
......@@ -1322,7 +1334,9 @@ int virStorageFileIsSharedFS(const char *path)
VIR_STORAGE_FILE_SHFS_NFS |
VIR_STORAGE_FILE_SHFS_GFS2 |
VIR_STORAGE_FILE_SHFS_OCFS |
VIR_STORAGE_FILE_SHFS_AFS);
VIR_STORAGE_FILE_SHFS_AFS |
VIR_STORAGE_FILE_SHFS_SMB |
VIR_STORAGE_FILE_SHFS_CIFS);
}
int virStorageFileIsClusterFS(const char *path)
......
......@@ -112,6 +112,8 @@ enum {
VIR_STORAGE_FILE_SHFS_GFS2 = (1 << 1),
VIR_STORAGE_FILE_SHFS_OCFS = (1 << 2),
VIR_STORAGE_FILE_SHFS_AFS = (1 << 3),
VIR_STORAGE_FILE_SHFS_SMB = (1 << 4),
VIR_STORAGE_FILE_SHFS_CIFS = (1 << 5),
};
int virStorageFileIsSharedFS(const char *path);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册