mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-21 20:15:17 +00:00
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 e4e73337e5a5aa708bb356751404ab8ae6583f42)
This commit is contained in:
parent
b2c87be92e
commit
9265a89ae8
@ -1085,6 +1085,12 @@ cleanup:
|
|||||||
# ifndef AFS_FS_MAGIC
|
# ifndef AFS_FS_MAGIC
|
||||||
# define AFS_FS_MAGIC 0x6B414653
|
# define AFS_FS_MAGIC 0x6B414653
|
||||||
# endif
|
# 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,
|
int virStorageFileIsSharedFSType(const char *path,
|
||||||
@ -1150,6 +1156,12 @@ int virStorageFileIsSharedFSType(const char *path,
|
|||||||
if ((fstypes & VIR_STORAGE_FILE_SHFS_AFS) &&
|
if ((fstypes & VIR_STORAGE_FILE_SHFS_AFS) &&
|
||||||
(sb.f_type == AFS_FS_MAGIC))
|
(sb.f_type == AFS_FS_MAGIC))
|
||||||
return 1;
|
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;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -1168,7 +1180,9 @@ int virStorageFileIsSharedFS(const char *path)
|
|||||||
VIR_STORAGE_FILE_SHFS_NFS |
|
VIR_STORAGE_FILE_SHFS_NFS |
|
||||||
VIR_STORAGE_FILE_SHFS_GFS2 |
|
VIR_STORAGE_FILE_SHFS_GFS2 |
|
||||||
VIR_STORAGE_FILE_SHFS_OCFS |
|
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)
|
int virStorageFileIsClusterFS(const char *path)
|
||||||
|
@ -96,6 +96,8 @@ enum {
|
|||||||
VIR_STORAGE_FILE_SHFS_GFS2 = (1 << 1),
|
VIR_STORAGE_FILE_SHFS_GFS2 = (1 << 1),
|
||||||
VIR_STORAGE_FILE_SHFS_OCFS = (1 << 2),
|
VIR_STORAGE_FILE_SHFS_OCFS = (1 << 2),
|
||||||
VIR_STORAGE_FILE_SHFS_AFS = (1 << 3),
|
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);
|
int virStorageFileIsSharedFS(const char *path);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user