Commit graph

110 commits

Author SHA1 Message Date
Yifan Hong
f764aaf998 storaged: Fix double ownership for HealthInfoCallback.
SharedRefBase objects can only be created via
SharedRefBase::make, not std::make_shared. Otherwise
there'll be a double-ownership problem.

Test: TH
Fixes: 225448524
Change-Id: I856677626cb146eb52a5b4a4562148e899d5a57b
2022-03-22 21:25:28 -07:00
Treehugger Robot
46de7add81 Merge "storaged: Fix bug in empty check" 2021-12-11 03:07:39 +00:00
Greg Kaiser
00c5e4c9ea storaged: Fix bug in empty check
Test: TreeHugger
Bug: 208543110
Change-Id: I89610a1e9e8f6bab57bab593132365f88d4adc76
2021-12-08 10:15:04 -08:00
Yifan Hong
1407fd04db storaged: skip disk_stats test if not supported.
If HAL does not support disk stats, do not run
corresponding storaged tests.

Also add storaged-unit-tests to Treehugger.

Test: storaged-unit-tests
Bug: 208543110
Change-Id: Ia2acf30ca3e259e0f0744385da69d92f9c00f223
2021-12-08 07:33:09 +00:00
Yifan Hong
5291a67ee3 storaged: use health HAL
Test: storaged_test
Test: manual
Bug: 208543110

Change-Id: I60d42fc4f2e411f375fe98d1c8e145ce79c52f88
2021-12-06 23:09:37 -08:00
Yifan Hong
e8474c2a10 storaged: test do not crash on cuttlefish.
If device does not have disk stats, do not crash the
test. Check for null C strings before converting it
to std::string.

Test: storaged-unit-tests
Change-Id: I46c87b6b6876fb0fbdb403c0015886d6d4cca0c6
2021-12-06 23:09:37 -08:00
Samiul Islam
26eeec7f04 libbinder: split out PackageManagerNative aidl
Very few clients of libbinder use PackageManagerNative service, as such
it's a waste to couple them together. Now, user of PackageManagerNative
service need to add the corresponding aidl files as shared library.

Bug: 183654927
Test: builds + presubmit

Change-Id: Ieca32fc3c970f2b720d76071651e85459d082f02
Merged-In: Ieca32fc3c970f2b720d76071651e85459d082f02
(cherry picked from commit 47a5f43202)
2021-09-15 11:14:07 +01:00
Steven Moreland
13e8fa6664 storaged: remove unused libsysutils dep
Unused.

Bug: N/A
Test: build only
Change-Id: I47e5e2c2c19e2e06b920bf36695f28af4db6095f
2021-06-29 00:10:39 +00:00
Suren Baghdasaryan
2079c5f0c9 Replace writepid with task_profiles command for cgroup migration
writepid command usage to join a cgroup has been deprecated in favor
of a more flexible approach using task_profiles. This way cgroup path
is not hardcoded and cgroup changes can be easily made. Replace
writepid with task_profiles command to migrate between cgroups.

Bug: 191283136
Test: build and boot
Signed-off-by: Suren Baghdasaryan <surenb@google.com>
Change-Id: I945c634dfa7621437d8ea3981bce370d680b7371
2021-06-24 17:24:20 +00:00
Bob Badour
d69ad69a93 [LSC] Add LOCAL_LICENSE_KINDS to system/core
Added SPDX-license-identifier-Apache-2.0 to:
  bootstat/Android.bp
  cli-test/Android.bp
  code_coverage/Android.bp
  cpio/Android.bp
  debuggerd/crasher/Android.bp
  debuggerd/proto/Android.bp
  diagnose_usb/Android.bp
  fs_mgr/libdm/Android.bp
  fs_mgr/libfiemap/Android.bp
  fs_mgr/liblp/Android.bp
  fs_mgr/libsnapshot/Android.bp
  fs_mgr/libstorage_literals/Android.bp
  fs_mgr/libvbmeta/Android.bp
  fs_mgr/tests/Android.bp
  fs_mgr/tools/Android.bp
  gatekeeperd/Android.bp
  healthd/Android.bp
  healthd/testdata/Android.bp
  init/Android.bp
  init/Android.mk
  init/sysprop/Android.bp
  init/test_kill_services/Android.bp
  init/test_service/Android.bp
  libappfuse/Android.bp
  libasyncio/Android.bp
  libbinderwrapper/Android.bp
  libcrypto_utils/Android.bp
  libcrypto_utils/tests/Android.bp
  libdiskconfig/Android.bp
  libgrallocusage/Android.bp
  libkeyutils/mini_keyctl/Android.bp
  libmodprobe/Android.bp
  libnetutils/Android.bp
  libpackagelistparser/Android.bp
  libprocessgroup/Android.bp
  libprocessgroup/cgrouprc/Android.bp
  libprocessgroup/cgrouprc_format/Android.bp
  libprocessgroup/profiles/Android.bp
  libprocessgroup/setup/Android.bp
  libqtaguid/Android.bp
  libsparse/Android.bp
  libstats/push_compat/Android.bp
  libsuspend/Android.bp
  libsync/Android.bp
  libsystem/Android.bp
  libsysutils/Android.bp
  libusbhost/Android.bp
  libutils/Android.bp
  libvndksupport/Android.bp
  libvndksupport/tests/Android.bp
  llkd/Android.bp
  llkd/tests/Android.bp
  property_service/libpropertyinfoparser/Android.bp
  property_service/libpropertyinfoserializer/Android.bp
  property_service/property_info_checker/Android.bp
  qemu_pipe/Android.bp
  reboot/Android.bp
  rootdir/Android.bp
  rootdir/Android.mk
  rootdir/avb/Android.bp
  rootdir/avb/Android.mk
  run-as/Android.bp
  sdcard/Android.bp
  set-verity-state/Android.bp
  shell_and_utilities/Android.bp
  storaged/Android.bp
  toolbox/Android.bp
  trusty/apploader/Android.bp
  trusty/confirmationui/Android.bp
  trusty/confirmationui/fuzz/Android.bp
  trusty/coverage/Android.bp
  trusty/fuzz/Android.bp
  trusty/fuzz/test/Android.bp
  trusty/gatekeeper/Android.bp
  trusty/gatekeeper/fuzz/Android.bp
  trusty/keymaster/Android.bp
  trusty/keymaster/fuzz/Android.bp
  trusty/libtrusty/Android.bp
  trusty/libtrusty/tipc-test/Android.bp
  trusty/secure_dpu/Android.bp
  trusty/storage/interface/Android.bp
  trusty/storage/lib/Android.bp
  trusty/storage/proxy/Android.bp
  trusty/storage/tests/Android.bp
  trusty/utils/spiproxyd/Android.bp
  trusty/utils/trusty-ut-ctrl/Android.bp
  usbd/Android.bp
  watchdogd/Android.bp

Added SPDX-license-identifier-Apache-2.0 SPDX-license-identifier-BSD to:
  debuggerd/Android.bp
  fastboot/Android.bp
  libkeyutils/Android.bp

Added SPDX-license-identifier-Apache-2.0 SPDX-license-identifier-BSD
    SPDX-license-identifier-MIT
to:
  libcutils/Android.bp

Added SPDX-license-identifier-Apache-2.0 SPDX-license-identifier-MIT
to:
  fs_mgr/Android.bp
  fs_mgr/libfs_avb/Android.bp
  trusty/Android.bp
  trusty/utils/rpmb_dev/Android.bp

Added SPDX-license-identifier-BSD
to:
  fastboot/fuzzy_fastboot/Android.bp

Bug: 68860345
Bug: 151177513
Bug: 151953481

Test: m all

Exempt-From-Owner-Approval: janitorial work
Change-Id: Id740a7d2884556081fdb68876584b25eb95e1bef
2021-02-19 12:59:05 -08:00
Elliott Hughes
c3a206ccda Revert "[LSC] Add LOCAL_LICENSE_KINDS to system/core"
This reverts commit 187b7d1950.

Reason for revert: system/core is multiple projects, not one.

Change-Id: I790ea41741f8cd9b8b6db2f59a49e71fb0958fd6
2021-02-16 20:01:20 +00:00
Bob Badour
187b7d1950 [LSC] Add LOCAL_LICENSE_KINDS to system/core
Added SPDX-license-identifier-Apache-2.0 to:
  bootstat/Android.bp
  cli-test/Android.bp
  code_coverage/Android.bp
  cpio/Android.bp
  debuggerd/crasher/Android.bp
  debuggerd/proto/Android.bp
  diagnose_usb/Android.bp
  fs_mgr/libdm/Android.bp
  fs_mgr/libfiemap/Android.bp
  fs_mgr/liblp/Android.bp
  fs_mgr/libsnapshot/Android.bp
  fs_mgr/libstorage_literals/Android.bp
  fs_mgr/libvbmeta/Android.bp
  fs_mgr/tests/Android.bp
  fs_mgr/tools/Android.bp
  gatekeeperd/Android.bp
  healthd/Android.bp
  healthd/testdata/Android.bp
  init/Android.bp
  init/Android.mk
  init/sysprop/Android.bp
  init/test_kill_services/Android.bp
  init/test_service/Android.bp
  libappfuse/Android.bp
  libasyncio/Android.bp
  libbinderwrapper/Android.bp
  libcrypto_utils/Android.bp
  libcrypto_utils/tests/Android.bp
  libdiskconfig/Android.bp
  libgrallocusage/Android.bp
  libkeyutils/mini_keyctl/Android.bp
  libmodprobe/Android.bp
  libnetutils/Android.bp
  libpackagelistparser/Android.bp
  libprocessgroup/Android.bp
  libprocessgroup/cgrouprc/Android.bp
  libprocessgroup/cgrouprc_format/Android.bp
  libprocessgroup/profiles/Android.bp
  libprocessgroup/setup/Android.bp
  libqtaguid/Android.bp
  libsparse/Android.bp
  libstats/push_compat/Android.bp
  libsuspend/Android.bp
  libsync/Android.bp
  libsystem/Android.bp
  libsysutils/Android.bp
  libusbhost/Android.bp
  libutils/Android.bp
  libvndksupport/Android.bp
  libvndksupport/tests/Android.bp
  llkd/Android.bp
  llkd/tests/Android.bp
  property_service/libpropertyinfoparser/Android.bp
  property_service/libpropertyinfoserializer/Android.bp
  property_service/property_info_checker/Android.bp
  qemu_pipe/Android.bp
  reboot/Android.bp
  rootdir/Android.bp
  rootdir/Android.mk
  rootdir/avb/Android.bp
  rootdir/avb/Android.mk
  run-as/Android.bp
  sdcard/Android.bp
  set-verity-state/Android.bp
  shell_and_utilities/Android.bp
  storaged/Android.bp
  toolbox/Android.bp
  trusty/apploader/Android.bp
  trusty/confirmationui/Android.bp
  trusty/confirmationui/fuzz/Android.bp
  trusty/coverage/Android.bp
  trusty/fuzz/Android.bp
  trusty/fuzz/test/Android.bp
  trusty/gatekeeper/Android.bp
  trusty/gatekeeper/fuzz/Android.bp
  trusty/keymaster/Android.bp
  trusty/keymaster/fuzz/Android.bp
  trusty/libtrusty/Android.bp
  trusty/libtrusty/tipc-test/Android.bp
  trusty/secure_dpu/Android.bp
  trusty/storage/interface/Android.bp
  trusty/storage/lib/Android.bp
  trusty/storage/proxy/Android.bp
  trusty/storage/tests/Android.bp
  trusty/utils/spiproxyd/Android.bp
  trusty/utils/trusty-ut-ctrl/Android.bp
  usbd/Android.bp
  watchdogd/Android.bp

Added SPDX-license-identifier-Apache-2.0 SPDX-license-identifier-BSD to:
  debuggerd/Android.bp
  fastboot/Android.bp
  libkeyutils/Android.bp

Added SPDX-license-identifier-Apache-2.0 SPDX-license-identifier-BSD
    SPDX-license-identifier-MIT
to:
  Android.bp
  libcutils/Android.bp

Added SPDX-license-identifier-Apache-2.0 SPDX-license-identifier-MIT
to:
  fs_mgr/Android.bp
  fs_mgr/libfs_avb/Android.bp
  trusty/utils/rpmb_dev/Android.bp

Added SPDX-license-identifier-BSD
to:
  fastboot/fuzzy_fastboot/Android.bp

Bug: 68860345
Bug: 151177513
Bug: 151953481

Test: m all

Exempt-From-Owner-Approval: janitorial work
Change-Id: I5bd81adb5cdcf2b4dd4141b204eb430ff526af8f
2021-02-16 04:10:03 -08:00
Mark Salyzyn
79fc288f10 storaged: protect global proto_loaded
proto_loaded is not thread safe, so we must protect it with
a mutex proto_lock.

Signed-off-by: hanhongli@360.cn
Signed-off-by: gongguang@360.cn
Signed-off-by: Mark Salyzyn <salyzyn@google.com>
Bug: 170732441
Test: compile
Change-Id: I93416598b6047e890c66b922b360093aa42db8c5
(cherry picked from commit d179cbcdc2)
2020-12-15 21:46:28 +00:00
Tom Cherry
7e47915755 storaged: ignore SIGPIPE
It is possible for storaged to terminate due to SIGPIPE if its clients
have terminated.  This is not a fatal condition from storaged's
perspective, so we ignore SIGPIPE instead.

Bug: 151581751
Test: build
Merged-In: I633780ed20908be02e5e1dea9504e140932afc8c
Change-Id: I633780ed20908be02e5e1dea9504e140932afc8c
(cherry picked from commit 3f3b1708d9)
2020-03-18 13:53:15 -07:00
shaozhongqi
cda9b2a500 storaged:Thread out of sync will cause null pointer crash
if other process binder calls dumpPerfHistory when storaged is started, there will be a problem with the storage_sp null pointer

Test: Manual

Bug: 149251684

Change-Id: I9bf61ceb7c34326e95f2355129714d28153a994c
Signed-off-by: shaozhongqi <shaozhongqi@xiaomi.com>
2020-02-11 16:03:41 +08:00
Tom Cherry
b8c1147c4a storaged: replace LOG_TO() macros with LOG()
Storaged always writes to the SYSTEM log, so instead of using
LOG_TO(), it can use the normal LOG() macros as long as it calls
InitLogging() with a default to the SYSTEM log.

Test: storaged writes to the SYSTEM log still
Change-Id: I47e63bc92d55f9b1262a67e3508601ddbd9edc87
2020-01-10 17:10:58 -08:00
Steven Moreland
a4eaf64de8 Remove libhwbinder/libhidltransport deps
Since these were combined into libhidlbase.

Bug: 135686713
Test: build only (libhwbinder/libhidltransport are empty)
Change-Id: I0bdffced6af52695c0ef98c9dd659348e56f7aa6
2019-09-05 14:17:42 -07:00
Hridya Valsaraju
dbac204e8b Do not access ext_csd register in debugfs from storaged
Starting from Android R, platform code cannot access files in debugfs
since it does not guarantee ABI stability. This CL removes the code in
storaged that accesses the EMMC's ext_csd register from debugfs as a
backup if it is unable to obtain the information from Health HAL.

Test: build and boot.
Bug: 134669095
Change-Id: I3bfeb3963de5fb5e6bb3eaa9df43baacad164816
2019-08-16 14:30:09 -07:00
David Anderson
f7970cee69 Merge "Fix storaged memory leak" 2019-08-02 00:15:28 +00:00
Tom Cherry
3b4bddc638 Remove liblog's rate limiting
After a few years of being available, there only ended up being one
user of this, so it is clear that logd's duplicate message mechanism
is the favored solution.

The one user of this rate limiting is questionable as is, since due to
the nature of storaged, the mainloop only runs once per minute by
default as is, so there is essentially nothing to be gained by rate
limiting any further.

Test: build
Change-Id: I0610d11efda1ce8b581b939bad11ff295cb2daa6
2019-01-16 10:37:14 -08:00
Mark Salyzyn
0ade88c83d storaged: emplace recent_perf in load_perf_history_proto
If recent_perf contains existing content, overwrite in method
load_perf_history_proto.  If proto of recent_perf contains a lot of
history, the content would have grown with system_server crashes.

Test: setprop ro.storaged.flush_proto.interval 60
      while true;do sleep 5;stop;sleep 1;start;ps -A|grep storaged;done
      and look at value for rss should remain about 4MB over long term.
Bug: 119798824
Change-Id: I50aae7d61eb791a8fcddbbd829254baf8f708186
2018-11-20 09:00:05 -08:00
Joe Yu
857a63eb66 Fix storaged memory leak
storaged try to load user's proto even if it has been loaded before

https://partnerissuetracker.corp.google.com/u/2/issues/118719575

Change-Id: Ia7575cdc60e82b028c6db9a29ae80e31e02268b1
2018-11-01 04:47:25 +00:00
Elliott Hughes
643268f325 Move system/core/ off NO_ERROR.
It causes trouble for Windows, and OK already exists.

Bug: N/A
Test: builds
Change-Id: Ida22fd658b0ebb259c710ba39049b07c9e495d9c
2018-10-08 11:15:52 -07:00
Dan Willemsen
c53f5c153f Match src paths with aidl package name
In order for the build system to track updates to the header files
during incremental builds, always specify the src files using the same
path as the package for C++ compilations.

Bug: 112114177
Test: m
Change-Id: Iec355bf4c11204a09bb164bbf14eaa1a148c5f36
2018-09-14 21:27:31 -07:00
Yifan Hong
539ee58b41 storaged: change log level for health HAL calls
Devices that does not implement getDiskStats and getStorageInfo
returns NOT_SUPPORTED as a value. Do not log to error stream in
this case.
Fixes: 114475810
Test: boots

Change-Id: I95e9ebe23b4dee451cb8f6e8dc0b60a224006600
2018-09-13 09:41:46 -07:00
David Anderson
dec6a881ba storaged: Cap io_history when loading stats from disk.
Similar to add_record_locked, load_uid_io_proto should respect the
maximum number of records.

Bug: 111578975
Test: storaged_test.load_uid_io_proto
Change-Id: Ic3c5095cdd09d2184f436813b5ab50d3ee0007b2
Merged-In: Ic3c5095cdd09d2184f436813b5ab50d3ee0007b2
2018-08-21 09:20:40 -07:00
David Anderson
0026a14ff2 storaged: Don't duplicate uid_records from proto files.
It is possible for storaged to load the same saved proto file multiple
times, for example, if system_server crashes. In this case we do not
want to fill io_history with duplicate entries. This patch elides
records for which an app+userid record already exists for the same
timestamp.

Bug: 111578975
Test: gtest storaged_test.load_uid_io_proto
Change-Id: I87bc3e37d6464079cece03b5852285d79067b935
Merged-In: I87bc3e37d6464079cece03b5852285d79067b935
2018-08-21 09:20:33 -07:00
David Anderson
3488d9f9dd storaged: Fix-up private variable names in uid_monitor.
Bug: N/A
Test: storaged builds
Change-Id: Ifd21e25baa7b1c6ce41c5e0ec5247f47ba716e6e
Merged-In: Ifd21e25baa7b1c6ce41c5e0ec5247f47ba716e6e
2018-08-21 09:20:29 -07:00
Yifan Hong
acd2d30cec storaged: fix headers.
Add missing libbatteryservice_headers dependency.
It used to use global header include dirs, which is bad.

Add old transitive dependency from libbatteryservice_headers
as well.

Test: builds
Bug: 68724651

Change-Id: Idcc4452160dce70b4f8b48e2d809dcd5744b93b4
Merged-In: Idcc4452160dce70b4f8b48e2d809dcd5744b93b4
(cherry picked from commit 0b31908912)
2018-07-17 15:36:09 -07:00
David Anderson
8cc138e03f Merge "storaged: lower capabilities in init" am: 183b575e78
am: 04cc5c3616

Change-Id: I2b1f68bfc21febb0f5ade62d06815377b03c77eb
2018-04-12 09:41:00 -07:00
Treehugger Robot
183b575e78 Merge "storaged: lower capabilities in init" 2018-04-12 15:55:26 +00:00
David Anderson
639ecf64b3 Merge "storaged: update OWNERS" am: ffc325a3b2
am: 2e0f524713

Change-Id: I1d4d1279f5af662f7f6e0706c34e3c9369ac0550
2018-04-12 03:33:04 -07:00
David Anderson
3214731cc8 storaged: update OWNERS
Bug: N/A
Test: N/A
Change-Id: Ic3e3fbcb4c4357a286ef05feab68e65390e2eab3
2018-04-11 18:50:14 -07:00
David Anderson
e54ca5fa0e storaged: lower capabilities in init
Lower storaged's capabilities to DAC_READ_SEARCH as an initial step
toward running it non-root.

Bug: 77634061
Test: storaged still runs and its /proc/pid/status has lower CapPrms
Change-Id: Ibfe0349fc059e2f37efba33f587176e8ce6be9fe
2018-04-11 12:33:02 -07:00
David Anderson
bba38cda0f Merge "storaged: remove unused includes" am: 0289f35b83
am: 6cebd27db8

Change-Id: Ia6f60132c3026621252015028cb7ebe2559a47bd
2018-04-06 13:30:11 -07:00
David Anderson
6d65f7c61a storaged: remove unused includes
Bug: 35323867
Test: N/A
Change-Id: I21c0b62765dbd27a462288c5e7577905240720f0
2018-04-05 18:55:08 -07:00
David Anderson
d9c510f9c2 Merge "storaged: fix divide-by-zero when updating history" into pi-dev
am: 0b637d94d6

Change-Id: If668d3a3a349070a734ebce66e8e4eef0465bdef
2018-04-02 18:16:40 -07:00
David Anderson
7d74a5a2f2 storaged: fix divide-by-zero when updating history
Bug: 75984894
Test: storaged unit tests on x86/64 platforms
Change-Id: I8c491f70705c662d40d0b212bcbc43a0de279bec
Merged-In: I8c491f70705c662d40d0b212bcbc43a0de279bec
(cherry picked from commit f2dd78bb2c)
2018-03-27 14:51:28 -07:00
Mark Salyzyn
1aff9f5883 Merge "storaged: owner adjustment" am: 387319307a
am: 785c18d4d1

Change-Id: I8fc93957370c2ef95ddbea5ce1d3f16ada31611d
2018-03-23 23:34:40 +00:00
Mark Salyzyn
133c9111a3 storaged: owner adjustment
Added salyzyn@ for final owner review on adjustments to storaged.

Test: none
Signed-off-by: Mark Salyzyn <salyzyn@google.com>
Change-Id: Iac73403ea416a4820f72689f5860aa88931def06
2018-03-23 14:37:53 -07:00
Hridya Valsaraju
79d38ebcaf health: Modify IHealthInfo Callback interface to return V2.0 HealthInfo
Bug: 71860528
Test: vts-tradefed run vts -m VtsHalHealthV2_0
Change-Id: I7de39ffa4c21772d8878c9a3f054bc6dbbde2fb9
2018-01-18 14:51:26 -08:00
TreeHugger Robot
7b94ae273b Merge "Provide Recent Disk Perf via IStoraged" 2018-01-18 02:50:48 +00:00
Yifan Hong
845e35bdc3 storaged: use health HAL to read StorageInfo.
Test: storaged unit tests
Bug: 68388678

Change-Id: Iec395a33bac72f49366e8c30ea7e709c8acdcfa2
2018-01-16 19:25:01 -08:00
Yifan Hong
c4b46e0ad9 storaged: use health HAL to read DiskStats.
Test: storaged unit tests
Bug: 68388678
Change-Id: I03ce3aa71fb54ae40489c7b35973cd4b83b13bfb
2018-01-16 19:24:54 -08:00
Yifan Hong
4a43bdc5f5 storaged: storaged_t replace initHealthService with init.
storaged_t has more fields that depend on the health service;
they should be initialized in the new init() function.

Test: storaged unit tests

Change-Id: I70d41e5d0a0ef20c39c41c7539a284937bd21ad5
2018-01-16 19:19:37 -08:00
Yifan Hong
70c44e7a6a storaged: use get_health_service
Test: storaged unit tests
Bug: 68388678
Change-Id: I67100a9a0ad27f9e5b8fc077ff83c442e2bebe71
2018-01-16 18:05:19 -08:00
Michael Wachenschwanz
37b912b805 Provide Recent Disk Perf via IStoraged
Expose recent disk write performance to Java side services.

Bug: 62393328
Test: manual
Change-Id: I6002681b17e7f5b9538b4dc9e312843cf838e467
2018-01-08 19:06:22 -08:00
Jin Qian
4c23c4576b storaged: align buffer address and size for direct_io
O_DIRECT requires buffer address and size to be aligned

Bug: 63629306

Change-Id: I268abb1c0ba32af4fd2e92210192c47a1f173238
2017-12-13 15:54:55 -08:00
Elliott Hughes
3e2b34136a Merge "Add OWNERS." am: 3289b9c928 am: 515c8fe572
am: aede8375fe

Change-Id: I28f7a8f3fa9c9837f4043768e70c0d985ed95abd
2017-12-08 01:29:20 +00:00
Elliott Hughes
3289b9c928 Merge "Add OWNERS." 2017-12-07 23:21:26 +00:00