fs_mgr: remove configurable zram backing file path
Bug: 142795879
Test: zram_loopback_path never change file location.
Test: Setting zram_backingdev_size on fstab turns on zram writeback.
Change-Id: If244e690405eb925270f767a22e4db95cbd8ba8a
Signed-off-by: Minchan Kim <minchan@google.com>
diff --git a/fs_mgr/fs_mgr.cpp b/fs_mgr/fs_mgr.cpp
index 4ba1c49..8a41a8b 100644
--- a/fs_mgr/fs_mgr.cpp
+++ b/fs_mgr/fs_mgr.cpp
@@ -1493,12 +1493,10 @@
return true;
}
-static bool PrepareZramDevice(const std::string& loop, off64_t size, const std::string& bdev) {
- if (loop.empty() && bdev.empty()) return true;
+static bool PrepareZramBackingDevice(off64_t size) {
- if (bdev.length()) {
- return InstallZramDevice(bdev);
- }
+ constexpr const char* file_path = "/data/per_boot/zram_swap";
+ if (size == 0) return true;
// Get free loopback
unique_fd loop_fd(TEMP_FAILURE_RETRY(open("/dev/loop-control", O_RDWR | O_CLOEXEC)));
@@ -1514,13 +1512,13 @@
}
// Prepare target path
- unique_fd target_fd(TEMP_FAILURE_RETRY(open(loop.c_str(), O_RDWR | O_CREAT | O_CLOEXEC, 0600)));
+ unique_fd target_fd(TEMP_FAILURE_RETRY(open(file_path, O_RDWR | O_CREAT | O_CLOEXEC, 0600)));
if (target_fd.get() == -1) {
- PERROR << "Cannot open target path: " << loop;
+ PERROR << "Cannot open target path: " << file_path;
return false;
}
if (fallocate(target_fd.get(), 0, 0, size) < 0) {
- PERROR << "Cannot truncate target path: " << loop;
+ PERROR << "Cannot truncate target path: " << file_path;
return false;
}
@@ -1556,11 +1554,10 @@
continue;
}
- if (!PrepareZramDevice(entry.zram_loopback_path, entry.zram_loopback_size, entry.zram_backing_dev_path)) {
- LERROR << "Skipping losetup for '" << entry.blk_device << "'";
- }
-
if (entry.zram_size > 0) {
+ if (!PrepareZramBackingDevice(entry.zram_backingdev_size)) {
+ LERROR << "Failure of zram backing device file for '" << entry.blk_device << "'";
+ }
// A zram_size was specified, so we need to configure the
// device. There is no point in having multiple zram devices
// on a system (all the memory comes from the same pool) so
diff --git a/fs_mgr/fs_mgr_fstab.cpp b/fs_mgr/fs_mgr_fstab.cpp
index 2ff5243..19afcdf 100644
--- a/fs_mgr/fs_mgr_fstab.cpp
+++ b/fs_mgr/fs_mgr_fstab.cpp
@@ -343,15 +343,10 @@
} else if (StartsWith(flag, "sysfs_path=")) {
// The path to trigger device gc by idle-maint of vold.
entry->sysfs_path = arg;
- } else if (StartsWith(flag, "zram_loopback_path=")) {
- // The path to use loopback for zram.
- entry->zram_loopback_path = arg;
- } else if (StartsWith(flag, "zram_loopback_size=")) {
- if (!ParseByteCount(arg, &entry->zram_loopback_size)) {
- LWARNING << "Warning: zram_loopback_size= flag malformed: " << arg;
+ } else if (StartsWith(flag, "zram_backingdev_size=")) {
+ if (!ParseByteCount(arg, &entry->zram_backingdev_size)) {
+ LWARNING << "Warning: zram_backingdev_size= flag malformed: " << arg;
}
- } else if (StartsWith(flag, "zram_backing_dev_path=")) {
- entry->zram_backing_dev_path = arg;
} else {
LWARNING << "Warning: unknown flag: " << flag;
}
diff --git a/fs_mgr/include_fstab/fstab/fstab.h b/fs_mgr/include_fstab/fstab/fstab.h
index 3c517dc..953aa6b 100644
--- a/fs_mgr/include_fstab/fstab/fstab.h
+++ b/fs_mgr/include_fstab/fstab/fstab.h
@@ -52,9 +52,7 @@
off64_t logical_blk_size = 0;
std::string sysfs_path;
std::string vbmeta_partition;
- std::string zram_loopback_path;
- uint64_t zram_loopback_size = 512 * 1024 * 1024; // 512MB by default;
- std::string zram_backing_dev_path;
+ uint64_t zram_backingdev_size = 0;
std::string avb_keys;
struct FsMgrFlags {
diff --git a/fs_mgr/tests/fs_mgr_test.cpp b/fs_mgr/tests/fs_mgr_test.cpp
index a7ea817..544976f 100644
--- a/fs_mgr/tests/fs_mgr_test.cpp
+++ b/fs_mgr/tests/fs_mgr_test.cpp
@@ -392,9 +392,9 @@
TemporaryFile tf;
ASSERT_TRUE(tf.fd != -1);
std::string fstab_contents = R"fs(
-source none0 swap defaults encryptable,forceencrypt,fileencryption,forcefdeorfbe,keydirectory,length,swapprio,zramsize,max_comp_streams,reservedsize,eraseblk,logicalblk,sysfs_path,zram_loopback_path,zram_loopback_size,zram_backing_dev_path
+source none0 swap defaults encryptable,forceencrypt,fileencryption,forcefdeorfbe,keydirectory,length,swapprio,zramsize,max_comp_streams,reservedsize,eraseblk,logicalblk,sysfs_path,zram_backingdev_size
-source none1 swap defaults encryptable=,forceencrypt=,fileencryption=,keydirectory=,length=,swapprio=,zramsize=,max_comp_streams=,avb=,reservedsize=,eraseblk=,logicalblk=,sysfs_path=,zram_loopback_path=,zram_loopback_size=,zram_backing_dev_path=
+source none1 swap defaults encryptable=,forceencrypt=,fileencryption=,keydirectory=,length=,swapprio=,zramsize=,max_comp_streams=,avb=,reservedsize=,eraseblk=,logicalblk=,sysfs_path=,zram_backingdev_size=
source none2 swap defaults forcefdeorfbe=
@@ -425,9 +425,7 @@
EXPECT_EQ(0, entry->erase_blk_size);
EXPECT_EQ(0, entry->logical_blk_size);
EXPECT_EQ("", entry->sysfs_path);
- EXPECT_EQ("", entry->zram_loopback_path);
- EXPECT_EQ(512U * 1024U * 1024U, entry->zram_loopback_size);
- EXPECT_EQ("", entry->zram_backing_dev_path);
+ EXPECT_EQ(0U, entry->zram_backingdev_size);
entry++;
EXPECT_EQ("none1", entry->mount_point);
@@ -453,9 +451,7 @@
EXPECT_EQ(0, entry->erase_blk_size);
EXPECT_EQ(0, entry->logical_blk_size);
EXPECT_EQ("", entry->sysfs_path);
- EXPECT_EQ("", entry->zram_loopback_path);
- EXPECT_EQ(512U * 1024U * 1024U, entry->zram_loopback_size);
- EXPECT_EQ("", entry->zram_backing_dev_path);
+ EXPECT_EQ(0U, entry->zram_backingdev_size);
entry++;
// forcefdeorfbe sets file_contents_mode and file_names_mode by default, so test it separately.
@@ -1040,14 +1036,10 @@
TemporaryFile tf;
ASSERT_TRUE(tf.fd != -1);
std::string fstab_contents = R"fs(
-source none0 swap defaults zram_loopback_path=/dev/path
-
-source none1 swap defaults zram_loopback_size=blah
-source none2 swap defaults zram_loopback_size=2
-source none3 swap defaults zram_loopback_size=1K
-source none4 swap defaults zram_loopback_size=2m
-
-source none5 swap defaults zram_backing_dev_path=/dev/path2
+source none1 swap defaults zram_backingdev_size=blah
+source none2 swap defaults zram_backingdev_size=2
+source none3 swap defaults zram_backingdev_size=1K
+source none4 swap defaults zram_backingdev_size=2m
)fs";
@@ -1055,29 +1047,23 @@
Fstab fstab;
EXPECT_TRUE(ReadFstabFromFile(tf.path, &fstab));
- ASSERT_EQ(6U, fstab.size());
+ ASSERT_EQ(4U, fstab.size());
auto entry = fstab.begin();
- EXPECT_EQ("none0", entry->mount_point);
- EXPECT_EQ("/dev/path", entry->zram_loopback_path);
- entry++;
EXPECT_EQ("none1", entry->mount_point);
- EXPECT_EQ(512U * 1024U * 1024U, entry->zram_loopback_size);
+ EXPECT_EQ(0U, entry->zram_backingdev_size);
entry++;
EXPECT_EQ("none2", entry->mount_point);
- EXPECT_EQ(2U, entry->zram_loopback_size);
+ EXPECT_EQ(2U, entry->zram_backingdev_size);
entry++;
EXPECT_EQ("none3", entry->mount_point);
- EXPECT_EQ(1024U, entry->zram_loopback_size);
+ EXPECT_EQ(1024U, entry->zram_backingdev_size);
entry++;
EXPECT_EQ("none4", entry->mount_point);
- EXPECT_EQ(2U * 1024U * 1024U, entry->zram_loopback_size);
+ EXPECT_EQ(2U * 1024U * 1024U, entry->zram_backingdev_size);
entry++;
-
- EXPECT_EQ("none5", entry->mount_point);
- EXPECT_EQ("/dev/path2", entry->zram_backing_dev_path);
}