Bug #43644
mds: Empty directory check is done on the importer side (at import finish) during migration
0%
Description
In the current MDS code, the migration of empty directories is prohibited but it is actually exported during the migration process and a check on the importer side during import_finish() (https://github.com/ceph/ceph/blob/master/src/mds/Migrator.cc#L3175) determines whether the directory empty and if so exports it back to the original exporter.
Why is this check not done on the exporter side? We can avoid unnecessary round trips between the exporter and the importing mds.
History
#1 Updated by Sidharth Anupkrishnan about 4 years ago
- Component(FS) MDS added
#2 Updated by Sidharth Anupkrishnan about 4 years ago
Sidharth Anupkrishnan wrote:
In the current MDS code, the migration of empty directories is prohibited but it is actually exported during the migration process and a check on the importer side during import_finish() (https://github.com/ceph/ceph/blob/master/src/mds/Migrator.cc#L3175) determines whether the directory empty and if so exports it back to the original exporter.
Why is this check not done on the exporter side? We can avoid unnecessary round trips between the exporter and the importing mds.
Zheng and Patrick. Please take a look
#3 Updated by Zheng Yan about 4 years ago
you are right. we can do the check a export_dir and export_frozen. If directory is empty, abort. But we still need to consider export_pin
#4 Updated by Patrick Donnelly about 4 years ago
Zheng Yan wrote:
you are right. we can do the check a export_dir and export_frozen. If directory is empty, abort. But we still need to consider export_pin
As I discussed with Sidharth, it appears to me the prohibition on exporting empty directories is just a premature optimization to prevent moving metadata unnecessarily. I think it does make sense for a pinned directory. I'm suggesting we just undo this restriction entirely.
Sidharth, please submit a PR when you have time.
#5 Updated by Patrick Donnelly about 4 years ago
- Status changed from New to Triaged
- Assignee set to Sidharth Anupkrishnan
- Priority changed from Normal to Urgent
- Target version set to v15.0.0
- Source set to Development
- Backport set to nautilus
#6 Updated by Patrick Donnelly about 4 years ago
- Status changed from Triaged to Fix Under Review
- Backport deleted (
nautilus) - Pull request ID set to 32792
#7 Updated by Patrick Donnelly about 4 years ago
- Status changed from Fix Under Review to Rejected