Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2b144ea9 authored by Howard Chen's avatar Howard Chen
Browse files

Revert "ANDROID: incremental-fs: fix mount_fs issue"



This reverts commit 013b7ed7.

Test: Can now install the same apk twice, and repeated installs are
stable
Bug: 217661925
Bug: 219731048
Signed-off-by: default avatarPaul Lawrence <paullawrence@google.com>
Change-Id: I86871c364c17a0d1107b3891a574b72edcf04ea2
(cherry picked from commit d107cd06f26b4d45b1079c7eb857815905198076)
Signed-off-by: default avatarHoward Chen <howardsoc@google.com>
parent 46778c88
Loading
Loading
Loading
Loading
+16 −42
Original line number Diff line number Diff line
@@ -319,6 +319,7 @@ static struct mount_info *get_mount_info(struct super_block *sb)
{
	struct mount_info *result = sb->s_fs_info;

	WARN_ON(!result);
	return result;
}

@@ -677,7 +678,7 @@ static int iterate_incfs_dir(struct file *file, struct dir_context *ctx)
	struct mount_info *mi = get_mount_info(file_superblock(file));
	bool root;

	if (!dir || !mi) {
	if (!dir) {
		error = -EBADF;
		goto out;
	}
@@ -1841,9 +1842,6 @@ static int dir_rename(struct inode *old_dir, struct dentry *old_dentry,
	struct dentry *trap;
	int error = 0;

	if (!mi)
		return -EBADF;

	error = mutex_lock_interruptible(&mi->mi_dir_struct_mutex);
	if (error)
		return error;
@@ -2091,9 +2089,6 @@ static ssize_t incfs_getxattr(struct dentry *d, const char *name,
	char *stored_value;
	size_t stored_size;

	if (!mi)
		return -EBADF;

	if (di && di->backing_path.dentry)
		return vfs_getxattr(di->backing_path.dentry, name, value, size);

@@ -2130,9 +2125,6 @@ static ssize_t incfs_setxattr(struct dentry *d, const char *name,
	void **stored_value;
	size_t *stored_size;

	if (!mi)
		return -EBADF;

	if (di && di->backing_path.dentry)
		return vfs_setxattr(di->backing_path.dentry, name, value, size,
				    flags);
@@ -2173,11 +2165,6 @@ static ssize_t incfs_listxattr(struct dentry *d, char *list, size_t size)
	return vfs_listxattr(di->backing_path.dentry, list, size);
}

static int incfs_test_super(struct super_block *s, void *p)
{
	return s->s_fs_info != NULL;
}

struct dentry *incfs_mount_fs(struct file_system_type *type, int flags,
			      const char *dev_name, void *data)
{
@@ -2187,8 +2174,7 @@ struct dentry *incfs_mount_fs(struct file_system_type *type, int flags,
	struct dentry *index_dir;
	struct super_block *src_fs_sb = NULL;
	struct inode *root_inode = NULL;
	struct super_block *sb = sget(type, incfs_test_super, set_anon_super,
				      flags, NULL);
	struct super_block *sb = sget(type, NULL, set_anon_super, flags, NULL);
	int error = 0;

	if (IS_ERR(sb))
@@ -2229,7 +2215,6 @@ struct dentry *incfs_mount_fs(struct file_system_type *type, int flags,
	src_fs_sb = backing_dir_path.dentry->d_sb;
	sb->s_maxbytes = src_fs_sb->s_maxbytes;

	if (!sb->s_fs_info) {
	mi = incfs_alloc_mount_info(sb, &options, &backing_dir_path);

	if (IS_ERR_OR_NULL(mi)) {
@@ -2238,10 +2223,6 @@ struct dentry *incfs_mount_fs(struct file_system_type *type, int flags,
		mi = NULL;
		goto err;
	}
		sb->s_fs_info = mi;
	} else {
		mi = sb->s_fs_info;
	}

	index_dir = open_or_create_index_dir(backing_dir_path.dentry);
	if (IS_ERR_OR_NULL(index_dir)) {
@@ -2252,13 +2233,13 @@ struct dentry *incfs_mount_fs(struct file_system_type *type, int flags,
	}
	mi->mi_index_dir = index_dir;

	sb->s_fs_info = mi;
	root_inode = fetch_regular_inode(sb, backing_dir_path.dentry);
	if (IS_ERR(root_inode)) {
		error = PTR_ERR(root_inode);
		goto err;
	}

	if (!sb->s_root) {
	sb->s_root = d_make_root(root_inode);
	if (!sb->s_root) {
		error = -ENOMEM;
@@ -2267,7 +2248,6 @@ struct dentry *incfs_mount_fs(struct file_system_type *type, int flags,
	error = incfs_init_dentry(sb->s_root, &backing_dir_path);
	if (error)
		goto err;
	}

	mi->mi_backing_dir_path = backing_dir_path;
	sb->s_flags |= SB_ACTIVE;
@@ -2288,9 +2268,6 @@ static int incfs_remount_fs(struct super_block *sb, int *flags, char *data)
	struct mount_info *mi = get_mount_info(sb);
	int err = 0;

	if (!mi)
		return err;

	sync_filesystem(sb);
	err = parse_options(&options, (char *)data);
	if (err)
@@ -2319,9 +2296,6 @@ static int show_options(struct seq_file *m, struct dentry *root)
{
	struct mount_info *mi = get_mount_info(root->d_sb);

	if (!mi)
		return -EBADF;

	seq_printf(m, ",read_timeout_ms=%u", mi->mi_options.read_timeout_ms);
	seq_printf(m, ",readahead=%u", mi->mi_options.readahead_pages);
	if (mi->mi_options.read_log_pages != 0) {