Update the resume

博主昨日更新中英文简历并发送给一些公司,原本想早睡但完成简历时已很晚。还表达了对Benben的想念。此外提到太阳进入星盘财务区,需果断做财务决策,不能犹豫不决。

I updated my resume in Chinese and English yesterday, and send it to some companies.
For I was so tired these days, formerly I thought I would sleep early yesterday,but when I finished the resume, it also got late,en...
I miss Benben very much now.

(The following passage is from http://en.chinabroadcast.cn/2247/2005-6-23/18@196404.htm)
Daily Overview
Thursday, June 23
You seem to be having last minute doubts about what needs to be done. If so, you must banish them from your mind completely today. Now that the Sun is moving though the money area of your chart you have a chance to do something about your financial situation but you cannot be wishy- washy about it - the situation calls for bold decisions.

auto SnapshotManager::CheckTargetMergeState(LockedFile* lock, const std::string& name, const SnapshotUpdateStatus& update_status) -> MergeResult { SnapshotStatus snapshot_status; if (!ReadSnapshotStatus(lock, name, &snapshot_status)) { return MergeResult(UpdateState::MergeFailed, MergeFailureCode::ReadStatus); } std::unique_ptr<LpMetadata> current_metadata; if (!IsSnapshotDevice(name)) { if (!current_metadata) { current_metadata = ReadCurrentMetadata(); } if (!current_metadata || GetMetadataPartitionState(*current_metadata, name) != MetadataPartitionState::Updated) { DeleteSnapshot(lock, name); return MergeResult(UpdateState::Cancelled); } // During a check, we decided the merge was complete, but we were unable to // collapse the device-mapper stack and perform COW cleanup. If we haven't // rebooted after this check, the device will still be a snapshot-merge // target. If we have rebooted, the device will now be a linear target, // and we can try cleanup again. if (snapshot_status.state() == SnapshotState::MERGE_COMPLETED) { // NB: It's okay if this fails now, we gave cleanup our best effort. OnSnapshotMergeComplete(lock, name, snapshot_status); return MergeResult(UpdateState::MergeCompleted); } LOG(ERROR) << "Expected snapshot or snapshot-merge for device: " << name; return MergeResult(UpdateState::MergeFailed, MergeFailureCode::UnknownTargetType); } // This check is expensive so it is only enabled for debugging. DCHECK((current_metadata = ReadCurrentMetadata()) && GetMetadataPartitionState(*current_metadata, name) == MetadataPartitionState::Updated); if (UpdateUsesUserSnapshots(lock)) { if (!EnsureSnapuserdConnected()) { return MergeResult(UpdateState::MergeFailed, MergeFailureCode::QuerySnapshotStatus); } // Query the snapshot status from the daemon const auto merge_status = snapuserd_client_->QuerySnapshotStatus(name); if (merge_status == "snapshot-merge-failed") { return MergeResult(UpdateState::MergeFailed, MergeFailureCode::UnknownTargetType); } // This is the case when device reboots during merge. Once the device boots, // snapuserd daemon will not resume merge immediately in first stage init. // This is slightly different as compared to dm-snapshot-merge; In this // case, metadata file will have "MERGING" state whereas the daemon will be // waiting to resume the merge. Thus, we resume the merge at this point. if (merge_status == "snapshot" && snapshot_status.state() == SnapshotState::MERGING) { if (!snapuserd_client_->InitiateMerge(name)) { return MergeResult(UpdateState::MergeFailed, MergeFailureCode::UnknownTargetType); } return MergeResult(UpdateState::Merging); } /** * Unisoc: add for merge failed * method:modify directly * Unisoc Code @{ */ //If the device is powered off during the merge and the "MERGING" state of //the metadate file is not written successfully,the remaining metadate files //will still have the "CREATED" state,the daemon will also be waiting to resume the merge. //So we also resume the merge at this point. if (merge_status == "snapshot" && snapshot_status.state() == SnapshotState::CREATED) { LOG(INFO) << "Even the metadata file state of " << name << " is still CREATED, as the merge state is snapshot, need to resume merge."; if (!snapuserd_client_->InitiateMerge(name)) { return MergeResult(UpdateState::MergeFailed, MergeFailureCode::UnknownTargetType); } return MergeResult(UpdateState::Merging); } /* @}*/ if (merge_status == "snapshot" && DecideMergePhase(snapshot_status) == MergePhase::SECOND_PHASE && update_status.merge_phase() == MergePhase::FIRST_PHASE) { // The snapshot is not being merged because it's in the wrong phase. return MergeResult(UpdateState::None); } if (merge_status == "snapshot-merge") { if (snapshot_status.state() == SnapshotState::MERGE_COMPLETED) { LOG(ERROR) << "Snapshot " << name << " is merging after being marked merge-complete."; return MergeResult(UpdateState::MergeFailed, MergeFailureCode::UnmergedSectorsAfterCompletion); } return MergeResult(UpdateState::Merging); } if (merge_status != "snapshot-merge-complete") { LOG(ERROR) << "Snapshot " << name << " has incorrect status: " << merge_status; return MergeResult(UpdateState::MergeFailed, MergeFailureCode::ExpectedMergeTarget); } } else { // dm-snapshot in the kernel std::string target_type; DmTargetSnapshot::Status status; if (!QuerySnapshotStatus(name, &target_type, &status)) { return MergeResult(UpdateState::MergeFailed, MergeFailureCode::QuerySnapshotStatus); } if (target_type == "snapshot" && DecideMergePhase(snapshot_status) == MergePhase::SECOND_PHASE && update_status.merge_phase() == MergePhase::FIRST_PHASE) { // The snapshot is not being merged because it's in the wrong phase. return MergeResult(UpdateState::None); } if (target_type != "snapshot-merge") { // We can get here if we failed to rewrite the target type in // InitiateMerge(). If we failed to create the target in first-stage // init, boot would not succeed. LOG(ERROR) << "Snapshot " << name << " has incorrect target type: " << target_type; return MergeResult(UpdateState::MergeFailed, MergeFailureCode::ExpectedMergeTarget); } // These two values are equal when merging is complete. if (status.sectors_allocated != status.metadata_sectors) { if (snapshot_status.state() == SnapshotState::MERGE_COMPLETED) { LOG(ERROR) << "Snapshot " << name << " is merging after being marked merge-complete."; return MergeResult(UpdateState::MergeFailed, MergeFailureCode::UnmergedSectorsAfterCompletion); } return MergeResult(UpdateState::Merging); } } // Merging is done. First, update the status file to indicate the merge // is complete. We do this before calling OnSnapshotMergeComplete, even // though this means the write is potentially wasted work (since in the // ideal case we'll immediately delete the file). // // This makes it simpler to reason about the next reboot: no matter what // part of cleanup failed, first-stage init won't try to create another // snapshot device for this partition. snapshot_status.set_state(SnapshotState::MERGE_COMPLETED); if (!WriteSnapshotStatus(lock, snapshot_status)) { return MergeResult(UpdateState::MergeFailed, MergeFailureCode::WriteStatus); } if (!OnSnapshotMergeComplete(lock, name, snapshot_status)) { return MergeResult(UpdateState::MergeNeedsReboot); } return MergeResult(UpdateState::MergeCompleted, MergeFailureCode::Ok); }和这段的主要差异呢
07-24
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值