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

Commit 961ef0a0 authored by Daniel Rosenberg's avatar Daniel Rosenberg
Browse files

ANDROID: sdcardfs: Add option to not link obb



Add mount option unshared_obb to not link the obb
folders of multiple users together.

Bug: 27915347
Test: mount with option. Check if altering one obb
      alters the other
Signed-off-by: default avatarDaniel Rosenberg <drosen@google.com>

Change-Id: I3956e06bd0a222b0bbb2768c9a8a8372ada85e1e
parent be39872b
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -360,7 +360,8 @@ int need_graft_path(struct dentry *dentry)
	struct sdcardfs_sb_info *sbi = SDCARDFS_SB(dentry->d_sb);
	struct qstr obb = QSTR_LITERAL("obb");

	if (parent_info->data->perm == PERM_ANDROID &&
	if (!sbi->options.unshared_obb &&
			parent_info->data->perm == PERM_ANDROID &&
			qstr_case_eq(&dentry->d_name, &obb)) {

		/* /Android/obb is the base obbpath of DERIVED_UNIFIED */
+9 −1
Original line number Diff line number Diff line
@@ -35,6 +35,7 @@ enum {
	Opt_gid_derivation,
	Opt_default_normal,
	Opt_nocache,
	Opt_unshared_obb,
	Opt_err,
};

@@ -48,6 +49,7 @@ static const match_table_t sdcardfs_tokens = {
	{Opt_multiuser, "multiuser"},
	{Opt_gid_derivation, "derive_gid"},
	{Opt_default_normal, "default_normal"},
	{Opt_unshared_obb, "unshared_obb"},
	{Opt_reserved_mb, "reserved_mb=%u"},
	{Opt_nocache, "nocache"},
	{Opt_err, NULL}
@@ -134,6 +136,9 @@ static int parse_options(struct super_block *sb, char *options, int silent,
		case Opt_nocache:
			opts->nocache = true;
			break;
		case Opt_unshared_obb:
			opts->unshared_obb = true;
			break;
		/* unknown option */
		default:
			if (!silent)
@@ -187,12 +192,15 @@ int parse_options_remount(struct super_block *sb, char *options, int silent,
				return 0;
			vfsopts->mask = option;
			break;
		case Opt_unshared_obb:
		case Opt_default_normal:
		case Opt_multiuser:
		case Opt_userid:
		case Opt_fsuid:
		case Opt_fsgid:
		case Opt_reserved_mb:
		case Opt_gid_derivation:
			if (!silent)
				pr_warn("Option \"%s\" can't be changed during remount\n", p);
			break;
		/* unknown option */
+1 −0
Original line number Diff line number Diff line
@@ -197,6 +197,7 @@ struct sdcardfs_mount_options {
	bool multiuser;
	bool gid_derivation;
	bool default_normal;
	bool unshared_obb;
	unsigned int reserved_mb;
	bool nocache;
};