82e90de23d
StubVolume is a volume type for ARC++ external storage. Named StubVolume because it is managed from outside Android (not through Android kernel). Previously, StubVolume is a diskless volume. However, as mentioned in jsharkey@ email, a disk is needed for StubVolume to hold "kInternal" (external storage type that is "external" from Android perspective, but is "internal" to the device. For example shared directory from ChromeOS to Android) and "kIndexable" (whether or not a disk should be indexed by MediaStore). The addition of disk means we could expose the createStubVolume API to add a disk flags, which is also introduced in this CL. Both kInternal and kIndexable will be introduced in separate CL. Bug: 132796154 Test: Mount/unmount ARC++ removable device in ChromeOS. Change-Id: I8b77fa1cf50ab38a2892272154dafdb78f079378
69 lines
1.8 KiB
C++
69 lines
1.8 KiB
C++
/*
|
|
* Copyright (C) 2018 The Android Open Source Project
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
#include "StubVolume.h"
|
|
|
|
#include <inttypes.h>
|
|
|
|
#include <android-base/logging.h>
|
|
#include <android-base/stringprintf.h>
|
|
|
|
using android::base::StringPrintf;
|
|
|
|
namespace android {
|
|
namespace vold {
|
|
|
|
StubVolume::StubVolume(dev_t id, const std::string& sourcePath, const std::string& mountPath,
|
|
const std::string& fsType, const std::string& fsUuid,
|
|
const std::string& fsLabel)
|
|
: VolumeBase(Type::kStub),
|
|
mSourcePath(sourcePath),
|
|
mMountPath(mountPath),
|
|
mFsType(fsType),
|
|
mFsUuid(fsUuid),
|
|
mFsLabel(fsLabel) {
|
|
setId(StringPrintf("stub:%llu", (unsigned long long)id));
|
|
}
|
|
|
|
StubVolume::~StubVolume() {}
|
|
|
|
status_t StubVolume::doCreate() {
|
|
return OK;
|
|
}
|
|
|
|
status_t StubVolume::doDestroy() {
|
|
return OK;
|
|
}
|
|
|
|
status_t StubVolume::doMount() {
|
|
auto listener = getListener();
|
|
if (listener) listener->onVolumeMetadataChanged(getId(), mFsType, mFsUuid, mFsLabel);
|
|
setInternalPath(mSourcePath);
|
|
setPath(mMountPath);
|
|
return OK;
|
|
}
|
|
|
|
status_t StubVolume::doUnmount() {
|
|
return OK;
|
|
}
|
|
|
|
// TODO: return error instead.
|
|
status_t StubVolume::doFormat(const std::string& fsType) {
|
|
return OK;
|
|
}
|
|
|
|
} // namespace vold
|
|
} // namespace android
|