9pfs: local: drop unused code
Now that the all callbacks have been converted to use "at" syscalls, we can drop this code. Signed-off-by: Greg Kurz <groug@kaod.org> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
		
							parent
							
								
									a565fea565
								
							
						
					
					
						commit
						c23d5f1d5b
					
				@ -84,48 +84,6 @@ static void unlinkat_preserve_errno(int dirfd, const char *path, int flags)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#define VIRTFS_META_DIR ".virtfs_metadata"
 | 
					#define VIRTFS_META_DIR ".virtfs_metadata"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static char *local_mapped_attr_path(FsContext *ctx, const char *path)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    int dirlen;
 | 
					 | 
				
			||||||
    const char *name = strrchr(path, '/');
 | 
					 | 
				
			||||||
    if (name) {
 | 
					 | 
				
			||||||
        dirlen = name - path;
 | 
					 | 
				
			||||||
        ++name;
 | 
					 | 
				
			||||||
    } else {
 | 
					 | 
				
			||||||
        name = path;
 | 
					 | 
				
			||||||
        dirlen = 0;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    return g_strdup_printf("%s/%.*s/%s/%s", ctx->fs_root,
 | 
					 | 
				
			||||||
                           dirlen, path, VIRTFS_META_DIR, name);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static FILE *local_fopen(const char *path, const char *mode)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    int fd, o_mode = 0;
 | 
					 | 
				
			||||||
    FILE *fp;
 | 
					 | 
				
			||||||
    int flags = O_NOFOLLOW;
 | 
					 | 
				
			||||||
    /*
 | 
					 | 
				
			||||||
     * only supports two modes
 | 
					 | 
				
			||||||
     */
 | 
					 | 
				
			||||||
    if (mode[0] == 'r') {
 | 
					 | 
				
			||||||
        flags |= O_RDONLY;
 | 
					 | 
				
			||||||
    } else if (mode[0] == 'w') {
 | 
					 | 
				
			||||||
        flags |= O_WRONLY | O_TRUNC | O_CREAT;
 | 
					 | 
				
			||||||
        o_mode = S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH;
 | 
					 | 
				
			||||||
    } else {
 | 
					 | 
				
			||||||
        return NULL;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    fd = open(path, flags, o_mode);
 | 
					 | 
				
			||||||
    if (fd == -1) {
 | 
					 | 
				
			||||||
        return NULL;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    fp = fdopen(fd, mode);
 | 
					 | 
				
			||||||
    if (!fp) {
 | 
					 | 
				
			||||||
        close(fd);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    return fp;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static FILE *local_fopenat(int dirfd, const char *name, const char *mode)
 | 
					static FILE *local_fopenat(int dirfd, const char *name, const char *mode)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    int fd, o_mode = 0;
 | 
					    int fd, o_mode = 0;
 | 
				
			||||||
@ -238,135 +196,6 @@ out:
 | 
				
			|||||||
    return err;
 | 
					    return err;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static int local_create_mapped_attr_dir(FsContext *ctx, const char *path)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    int err;
 | 
					 | 
				
			||||||
    char *attr_dir;
 | 
					 | 
				
			||||||
    char *tmp_path = g_strdup(path);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    attr_dir = g_strdup_printf("%s/%s/%s",
 | 
					 | 
				
			||||||
             ctx->fs_root, dirname(tmp_path), VIRTFS_META_DIR);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    err = mkdir(attr_dir, 0700);
 | 
					 | 
				
			||||||
    if (err < 0 && errno == EEXIST) {
 | 
					 | 
				
			||||||
        err = 0;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    g_free(attr_dir);
 | 
					 | 
				
			||||||
    g_free(tmp_path);
 | 
					 | 
				
			||||||
    return err;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static int local_set_mapped_file_attr(FsContext *ctx,
 | 
					 | 
				
			||||||
                                      const char *path, FsCred *credp)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    FILE *fp;
 | 
					 | 
				
			||||||
    int ret = 0;
 | 
					 | 
				
			||||||
    char buf[ATTR_MAX];
 | 
					 | 
				
			||||||
    char *attr_path;
 | 
					 | 
				
			||||||
    int uid = -1, gid = -1, mode = -1, rdev = -1;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    attr_path = local_mapped_attr_path(ctx, path);
 | 
					 | 
				
			||||||
    fp = local_fopen(attr_path, "r");
 | 
					 | 
				
			||||||
    if (!fp) {
 | 
					 | 
				
			||||||
        goto create_map_file;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    memset(buf, 0, ATTR_MAX);
 | 
					 | 
				
			||||||
    while (fgets(buf, ATTR_MAX, fp)) {
 | 
					 | 
				
			||||||
        if (!strncmp(buf, "virtfs.uid", 10)) {
 | 
					 | 
				
			||||||
            uid = atoi(buf+11);
 | 
					 | 
				
			||||||
        } else if (!strncmp(buf, "virtfs.gid", 10)) {
 | 
					 | 
				
			||||||
            gid = atoi(buf+11);
 | 
					 | 
				
			||||||
        } else if (!strncmp(buf, "virtfs.mode", 11)) {
 | 
					 | 
				
			||||||
            mode = atoi(buf+12);
 | 
					 | 
				
			||||||
        } else if (!strncmp(buf, "virtfs.rdev", 11)) {
 | 
					 | 
				
			||||||
            rdev = atoi(buf+12);
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        memset(buf, 0, ATTR_MAX);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    fclose(fp);
 | 
					 | 
				
			||||||
    goto update_map_file;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
create_map_file:
 | 
					 | 
				
			||||||
    ret = local_create_mapped_attr_dir(ctx, path);
 | 
					 | 
				
			||||||
    if (ret < 0) {
 | 
					 | 
				
			||||||
        goto err_out;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
update_map_file:
 | 
					 | 
				
			||||||
    fp = local_fopen(attr_path, "w");
 | 
					 | 
				
			||||||
    if (!fp) {
 | 
					 | 
				
			||||||
        ret = -1;
 | 
					 | 
				
			||||||
        goto err_out;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if (credp->fc_uid != -1) {
 | 
					 | 
				
			||||||
        uid = credp->fc_uid;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    if (credp->fc_gid != -1) {
 | 
					 | 
				
			||||||
        gid = credp->fc_gid;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    if (credp->fc_mode != -1) {
 | 
					 | 
				
			||||||
        mode = credp->fc_mode;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    if (credp->fc_rdev != -1) {
 | 
					 | 
				
			||||||
        rdev = credp->fc_rdev;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if (uid != -1) {
 | 
					 | 
				
			||||||
        fprintf(fp, "virtfs.uid=%d\n", uid);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    if (gid != -1) {
 | 
					 | 
				
			||||||
        fprintf(fp, "virtfs.gid=%d\n", gid);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    if (mode != -1) {
 | 
					 | 
				
			||||||
        fprintf(fp, "virtfs.mode=%d\n", mode);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    if (rdev != -1) {
 | 
					 | 
				
			||||||
        fprintf(fp, "virtfs.rdev=%d\n", rdev);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    fclose(fp);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
err_out:
 | 
					 | 
				
			||||||
    g_free(attr_path);
 | 
					 | 
				
			||||||
    return ret;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static int local_set_xattr(const char *path, FsCred *credp)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    int err;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if (credp->fc_uid != -1) {
 | 
					 | 
				
			||||||
        uint32_t tmp_uid = cpu_to_le32(credp->fc_uid);
 | 
					 | 
				
			||||||
        err = setxattr(path, "user.virtfs.uid", &tmp_uid, sizeof(uid_t), 0);
 | 
					 | 
				
			||||||
        if (err) {
 | 
					 | 
				
			||||||
            return err;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    if (credp->fc_gid != -1) {
 | 
					 | 
				
			||||||
        uint32_t tmp_gid = cpu_to_le32(credp->fc_gid);
 | 
					 | 
				
			||||||
        err = setxattr(path, "user.virtfs.gid", &tmp_gid, sizeof(gid_t), 0);
 | 
					 | 
				
			||||||
        if (err) {
 | 
					 | 
				
			||||||
            return err;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    if (credp->fc_mode != -1) {
 | 
					 | 
				
			||||||
        uint32_t tmp_mode = cpu_to_le32(credp->fc_mode);
 | 
					 | 
				
			||||||
        err = setxattr(path, "user.virtfs.mode", &tmp_mode, sizeof(mode_t), 0);
 | 
					 | 
				
			||||||
        if (err) {
 | 
					 | 
				
			||||||
            return err;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    if (credp->fc_rdev != -1) {
 | 
					 | 
				
			||||||
        uint64_t tmp_rdev = cpu_to_le64(credp->fc_rdev);
 | 
					 | 
				
			||||||
        err = setxattr(path, "user.virtfs.rdev", &tmp_rdev, sizeof(dev_t), 0);
 | 
					 | 
				
			||||||
        if (err) {
 | 
					 | 
				
			||||||
            return err;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    return 0;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static int local_set_mapped_file_attrat(int dirfd, const char *name,
 | 
					static int local_set_mapped_file_attrat(int dirfd, const char *name,
 | 
				
			||||||
                                        FsCred *credp)
 | 
					                                        FsCred *credp)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -516,33 +345,6 @@ static int local_set_xattrat(int dirfd, const char *path, FsCred *credp)
 | 
				
			|||||||
    return 0;
 | 
					    return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static int local_post_create_passthrough(FsContext *fs_ctx, const char *path,
 | 
					 | 
				
			||||||
                                         FsCred *credp)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    char *buffer;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    buffer = rpath(fs_ctx, path);
 | 
					 | 
				
			||||||
    if (lchown(buffer, credp->fc_uid, credp->fc_gid) < 0) {
 | 
					 | 
				
			||||||
        /*
 | 
					 | 
				
			||||||
         * If we fail to change ownership and if we are
 | 
					 | 
				
			||||||
         * using security model none. Ignore the error
 | 
					 | 
				
			||||||
         */
 | 
					 | 
				
			||||||
        if ((fs_ctx->export_flags & V9FS_SEC_MASK) != V9FS_SM_NONE) {
 | 
					 | 
				
			||||||
            goto err;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if (chmod(buffer, credp->fc_mode & 07777) < 0) {
 | 
					 | 
				
			||||||
        goto err;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    g_free(buffer);
 | 
					 | 
				
			||||||
    return 0;
 | 
					 | 
				
			||||||
err:
 | 
					 | 
				
			||||||
    g_free(buffer);
 | 
					 | 
				
			||||||
    return -1;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static int local_set_cred_passthrough(FsContext *fs_ctx, int dirfd,
 | 
					static int local_set_cred_passthrough(FsContext *fs_ctx, int dirfd,
 | 
				
			||||||
                                      const char *name, FsCred *credp)
 | 
					                                      const char *name, FsCred *credp)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user