提交 e62d09b1 编写于 作者: P Peter Krempa

storage: add file functions for local and block files

Implement the "stat" and "unlink" function for "file" volumes and "stat"
for "block" volumes using the regular system calls.
上级 e3226818
......@@ -123,6 +123,10 @@ static virStorageBackendPtr backends[] = {
static virStorageFileBackendPtr fileBackends[] = {
#if WITH_STORAGE_FS
&virStorageFileBackendFile,
&virStorageFileBackendBlock,
#endif
NULL
};
......
......@@ -1327,4 +1327,52 @@ virStorageBackend virStorageBackendNetFileSystem = {
.deleteVol = virStorageBackendFileSystemVolDelete,
.resizeVol = virStorageBackendFileSystemVolResize,
};
static int
virStorageFileBackendFileUnlink(virStorageFilePtr file)
{
int ret;
ret = unlink(file->path);
/* preserve errno */
VIR_DEBUG("removing storage file %p(%s): ret=%d, errno=%d",
file, file->path, ret, errno);
return ret;
}
static int
virStorageFileBackendFileStat(virStorageFilePtr file,
struct stat *st)
{
int ret;
ret = stat(file->path, st);
/* preserve errno */
VIR_DEBUG("stat of storage file %p(%s): ret=%d, errno=%d",
file, file->path, ret, errno);
return ret;
}
virStorageFileBackend virStorageFileBackendFile = {
.type = VIR_DOMAIN_DISK_TYPE_FILE,
.storageFileUnlink = virStorageFileBackendFileUnlink,
.storageFileStat = virStorageFileBackendFileStat,
};
virStorageFileBackend virStorageFileBackendBlock = {
.type = VIR_DOMAIN_DISK_TYPE_BLOCK,
.storageFileStat = virStorageFileBackendFileStat,
};
#endif /* WITH_STORAGE_FS */
......@@ -38,4 +38,6 @@ typedef enum {
} virStoragePoolProbeResult;
extern virStorageBackend virStorageBackendDirectory;
extern virStorageFileBackend virStorageFileBackendFile;
extern virStorageFileBackend virStorageFileBackendBlock;
#endif /* __VIR_STORAGE_BACKEND_FS_H__ */
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册