20651f62d0
Current first stage mount for AVB requires specifying a common prefix of by-name symlink for all AVB partitions. It limits all AVB partitions to be on the same block device. firmware { android { compatible = "android,firmware"; vbmeta { compatible = "android,vbmeta"; parts = "vbmeta,boot,system,vendor"; by_name_prefix="/dev/block/platform/soc.0/f9824900.sdhci/by-name" <-- *removing this* }; fstab { compatible = "android,fstab"; vendor { compatible = "android,vendor"; dev = "/dev/block/platform/soc.0/f9824900.sdhci/by-name/vendor"; type = "ext4"; mnt_flags = "ro,barrier=1,inode_readahead_blks=8"; fsmgr_flags = "wait,avb"; }; }; }; }; For normal mount with AVB, it extracts the by-name prefix of /misc partition and use it as the prefix for all other partitions: - /dev/block/platform/soc.0/f9824900.sdhci/by-name/misc -> - /dev/block/platform/soc.0/f9824900.sdhci/by-name/vendor_a Fix this by adding an internal map in FsManagerAvbOps to record the mapping from partition name to its by-name symlink: ByNameSymlinkMap["vendor_a"] = "/dev/block/platform/soc.0/f9824900.sdhci/by-name/vendor_a" Two overloaded factory methods are then provided for FsManagerAvbUniquePtr: - FsManagerAvbUniquePtr Open(ByNameSymlinkMap&& by_name_symlink_map): for first stage mount, where the by-name symlink map will be constructed externally, from the uevents processed by init, before invoking this factory method. - FsManagerAvbUniquePtr Open(const fstab& fstab): for normal mount, where the by-name symlink map will be constructed from the input fstab internally. Bug: 37552224 Test: first stage mount /vendor with vboot 1.0 Test: first stage mount /vendor with vboot 2.0 (AVB) Test: normal mount /vendor with vboot 2.0 (AVB) Change-Id: Id17e8566da87ea22b8923fcd6e47db8d45bc7d6a |
||
---|---|---|
.. | ||
fs_mgr.h | ||
fs_mgr_avb.h |