const char *npath)
{
int serrno = errno;
- renameat(odirfd, opath, ndirfd, npath);
+ qemu_renameat(odirfd, opath, ndirfd, npath);
errno = serrno;
}
static void unlinkat_preserve_errno(int dirfd, const char *path, int flags)
{
int serrno = errno;
- unlinkat(dirfd, path, flags);
+ qemu_unlinkat(dirfd, path, flags);
errno = serrno;
}
goto out;
}
- err = fstatat(dirfd, name, stbuf, AT_SYMLINK_NOFOLLOW);
+ err = qemu_fstatat(dirfd, name, stbuf, AT_SYMLINK_NOFOLLOW);
if (err) {
goto err_out;
}
}
}
} else {
- ret = mkdirat(dirfd, VIRTFS_META_DIR, 0700);
+ ret = qemu_mkdirat(dirfd, VIRTFS_META_DIR, 0700);
if (ret < 0 && errno != EEXIST) {
return -1;
}
*/
/* First, we clear non-racing symlinks out of the way. */
- if (fstatat(dirfd, name, &stbuf, AT_SYMLINK_NOFOLLOW)) {
+ if (qemu_fstatat(dirfd, name, &stbuf, AT_SYMLINK_NOFOLLOW)) {
return -1;
}
if (S_ISLNK(stbuf.st_mode)) {
if (fs_ctx->export_flags & V9FS_SM_MAPPED ||
fs_ctx->export_flags & V9FS_SM_MAPPED_FILE) {
- err = mkdirat(dirfd, name, fs_ctx->dmode);
+ err = qemu_mkdirat(dirfd, name, fs_ctx->dmode);
if (err == -1) {
goto out;
}
}
} else if (fs_ctx->export_flags & V9FS_SM_PASSTHROUGH ||
fs_ctx->export_flags & V9FS_SM_NONE) {
- err = mkdirat(dirfd, name, credp->fc_mode);
+ err = qemu_mkdirat(dirfd, name, credp->fc_mode);
if (err == -1) {
goto out;
}
if (ctx->export_flags & V9FS_SM_MAPPED_FILE) {
int omap_dirfd, nmap_dirfd;
- ret = mkdirat(ndirfd, VIRTFS_META_DIR, 0700);
+ ret = qemu_mkdirat(ndirfd, VIRTFS_META_DIR, 0700);
if (ret < 0 && errno != EEXIST) {
goto err_undo_link;
}
goto out;
}
- ret = utimensat(dirfd, name, buf, AT_SYMLINK_NOFOLLOW);
+ ret = qemu_utimensat(dirfd, name, buf, AT_SYMLINK_NOFOLLOW);
close_preserve_errno(dirfd);
out:
g_free(dirpath);
if (fd == -1) {
return -1;
}
- ret = unlinkat(fd, VIRTFS_META_DIR, AT_REMOVEDIR);
+ ret = qemu_unlinkat(fd, VIRTFS_META_DIR, AT_REMOVEDIR);
close_preserve_errno(fd);
if (ret < 0 && errno != ENOENT) {
return -1;
}
map_dirfd = openat_dir(dirfd, VIRTFS_META_DIR);
if (map_dirfd != -1) {
- ret = unlinkat(map_dirfd, name, 0);
+ ret = qemu_unlinkat(map_dirfd, name, 0);
close_preserve_errno(map_dirfd);
if (ret < 0 && errno != ENOENT) {
return -1;
}
}
- return unlinkat(dirfd, name, flags);
+ return qemu_unlinkat(dirfd, name, flags);
}
static int local_remove(FsContext *ctx, const char *path)
goto out;
}
- if (fstatat(dirfd, name, &stbuf, AT_SYMLINK_NOFOLLOW) < 0) {
+ if (qemu_fstatat(dirfd, name, &stbuf, AT_SYMLINK_NOFOLLOW) < 0) {
goto err_out;
}
return -1;
}
- ret = renameat(odirfd, old_name, ndirfd, new_name);
+ ret = qemu_renameat(odirfd, old_name, ndirfd, new_name);
if (ret < 0) {
goto out;
}
if (ctx->export_flags & V9FS_SM_MAPPED_FILE) {
int omap_dirfd, nmap_dirfd;
- ret = mkdirat(ndirfd, VIRTFS_META_DIR, 0700);
+ ret = qemu_mkdirat(ndirfd, VIRTFS_META_DIR, 0700);
if (ret < 0 && errno != EEXIST) {
goto err_undo_rename;
}
}
/* rename the .virtfs_metadata files */
- ret = renameat(omap_dirfd, old_name, nmap_dirfd, new_name);
+ ret = qemu_renameat(omap_dirfd, old_name, nmap_dirfd, new_name);
close_preserve_errno(nmap_dirfd);
close_preserve_errno(omap_dirfd);
if (ret < 0 && errno != ENOENT) {
#define qemu_fgetxattr fgetxattr
#endif
+#define qemu_openat openat
+#define qemu_fstatat fstatat
+#define qemu_mkdirat mkdirat
+#define qemu_renameat renameat
+#define qemu_utimensat utimensat
+#define qemu_unlinkat unlinkat
+
static inline void close_preserve_errno(int fd)
{
int serrno = errno;
static inline int openat_dir(int dirfd, const char *name)
{
- return openat(dirfd, name,
- O_DIRECTORY | O_RDONLY | O_NOFOLLOW | O_PATH_9P_UTIL);
+ return qemu_openat(dirfd, name,
+ O_DIRECTORY | O_RDONLY | O_NOFOLLOW | O_PATH_9P_UTIL);
}
static inline int openat_file(int dirfd, const char *name, int flags,
#ifndef CONFIG_DARWIN
again:
#endif
- fd = openat(dirfd, name, flags | O_NOFOLLOW | O_NOCTTY | O_NONBLOCK,
- mode);
+ fd = qemu_openat(dirfd, name, flags | O_NOFOLLOW | O_NOCTTY | O_NONBLOCK,
+ mode);
if (fd == -1) {
#ifndef CONFIG_DARWIN
if (errno == EPERM && (flags & O_NOATIME)) {