virStorageFileGetMetadata;
virStorageFileGetMetadataFromFD;
virStorageFileIsSharedFS;
+virStorageFileIsSharedFSType;
virStorageFileProbeFormat;
virStorageFileProbeFormatFromFD;
SELinuxSetFilecon(vm->def->os.initrd, default_content_context) < 0)
return -1;
- if (stdin_path &&
- SELinuxSetFilecon(stdin_path, default_content_context) < 0)
- return -1;
+ if (stdin_path) {
+ if (SELinuxSetFilecon(stdin_path, default_content_context) < 0 &&
+ virStorageFileIsSharedFSType(stdin_path,
+ VIR_STORAGE_FILE_SHFS_NFS) != 1)
+ return -1;
+ }
return 0;
}
# endif
-int virStorageFileIsSharedFS(const char *path)
+int virStorageFileIsSharedFSType(const char *path,
+ int fstypes)
{
char *dirpath, *p;
struct statfs sb;
VIR_DEBUG("Check if path %s with FS magic %lld is shared",
path, (long long int)sb.f_type);
- if (sb.f_type == NFS_SUPER_MAGIC ||
- sb.f_type == GFS2_MAGIC ||
- sb.f_type == OCFS2_SUPER_MAGIC ||
- sb.f_type == AFS_FS_MAGIC) {
+ if ((fstypes & VIR_STORAGE_FILE_SHFS_NFS) &&
+ (sb.f_type == NFS_SUPER_MAGIC))
+ return 1;
+
+ if ((fstypes & VIR_STORAGE_FILE_SHFS_GFS2) &&
+ (sb.f_type == GFS2_MAGIC))
+ return 1;
+ if ((fstypes & VIR_STORAGE_FILE_SHFS_OCFS) &&
+ (sb.f_type == OCFS2_SUPER_MAGIC))
+ return 1;
+ if ((fstypes & VIR_STORAGE_FILE_SHFS_AFS) &&
+ (sb.f_type == AFS_FS_MAGIC))
return 1;
- }
return 0;
}
#else
-int virStorageFileIsSharedFS(const char *path ATTRIBUTE_UNUSED)
+int virStorageFileIsSharedFSType(const char *path ATTRIBUTE_UNUSED,
+ int fstypes ATTRIBUTE_UNUSED)
{
/* XXX implement me :-) */
return 0;
}
#endif
+
+int virStorageFileIsSharedFS(const char *path)
+{
+ return virStorageFileIsSharedFSType(path,
+ VIR_STORAGE_FILE_SHFS_NFS |
+ VIR_STORAGE_FILE_SHFS_GFS2 |
+ VIR_STORAGE_FILE_SHFS_OCFS |
+ VIR_STORAGE_FILE_SHFS_AFS);
+}
int format,
virStorageFileMetadata *meta);
+enum {
+ VIR_STORAGE_FILE_SHFS_NFS = (1 << 0),
+ VIR_STORAGE_FILE_SHFS_GFS2 = (1 << 1),
+ VIR_STORAGE_FILE_SHFS_OCFS = (1 << 2),
+ VIR_STORAGE_FILE_SHFS_AFS = (1 << 3),
+};
+
int virStorageFileIsSharedFS(const char *path);
+int virStorageFileIsSharedFSType(const char *path,
+ int fstypes);
#endif /* __VIR_STORAGE_FILE_H__ */