• Home
  • Raw
  • Download

Lines Matching refs:td

743 	struct dm_thin_device *td, *tmp;  in __write_changed_details()  local
747 list_for_each_entry_safe(td, tmp, &pmd->thin_devices, list) { in __write_changed_details()
748 if (!td->changed) in __write_changed_details()
751 key = td->id; in __write_changed_details()
753 details.mapped_blocks = cpu_to_le64(td->mapped_blocks); in __write_changed_details()
754 details.transaction_id = cpu_to_le64(td->transaction_id); in __write_changed_details()
755 details.creation_time = cpu_to_le32(td->creation_time); in __write_changed_details()
756 details.snapshotted_time = cpu_to_le32(td->snapshotted_time); in __write_changed_details()
764 if (td->open_count) in __write_changed_details()
765 td->changed = 0; in __write_changed_details()
767 list_del(&td->list); in __write_changed_details()
768 kfree(td); in __write_changed_details()
868 struct dm_thin_device *td, *tmp; in dm_pool_metadata_close() local
871 list_for_each_entry_safe(td, tmp, &pmd->thin_devices, list) { in dm_pool_metadata_close()
872 if (td->open_count) in dm_pool_metadata_close()
875 list_del(&td->list); in dm_pool_metadata_close()
876 kfree(td); in dm_pool_metadata_close()
908 struct dm_thin_device **td) in __open_device() argument
927 *td = td2; in __open_device()
950 *td = kmalloc(sizeof(**td), GFP_NOIO); in __open_device()
951 if (!*td) in __open_device()
954 (*td)->pmd = pmd; in __open_device()
955 (*td)->id = dev; in __open_device()
956 (*td)->open_count = 1; in __open_device()
957 (*td)->changed = changed; in __open_device()
958 (*td)->aborted_with_changes = false; in __open_device()
959 (*td)->mapped_blocks = le64_to_cpu(details_le.mapped_blocks); in __open_device()
960 (*td)->transaction_id = le64_to_cpu(details_le.transaction_id); in __open_device()
961 (*td)->creation_time = le32_to_cpu(details_le.creation_time); in __open_device()
962 (*td)->snapshotted_time = le32_to_cpu(details_le.snapshotted_time); in __open_device()
964 list_add(&(*td)->list, &pmd->thin_devices); in __open_device()
969 static void __close_device(struct dm_thin_device *td) in __close_device() argument
971 --td->open_count; in __close_device()
981 struct dm_thin_device *td; in __create_thin() local
1007 r = __open_device(pmd, dev, 1, &td); in __create_thin()
1013 __close_device(td); in __create_thin()
1035 struct dm_thin_device *td; in __set_snapshot_details() local
1037 r = __open_device(pmd, origin, 0, &td); in __set_snapshot_details()
1041 td->changed = 1; in __set_snapshot_details()
1042 td->snapshotted_time = time; in __set_snapshot_details()
1044 snap->mapped_blocks = td->mapped_blocks; in __set_snapshot_details()
1046 __close_device(td); in __set_snapshot_details()
1057 struct dm_thin_device *td; in __create_snap() local
1088 r = __open_device(pmd, dev, 1, &td); in __create_snap()
1092 r = __set_snapshot_details(pmd, td, origin, pmd->time); in __create_snap()
1093 __close_device(td); in __create_snap()
1125 struct dm_thin_device *td; in __delete_device() local
1128 r = __open_device(pmd, dev, 0, &td); in __delete_device()
1132 if (td->open_count > 1) { in __delete_device()
1133 __close_device(td); in __delete_device()
1137 list_del(&td->list); in __delete_device()
1138 kfree(td); in __delete_device()
1353 struct dm_thin_device **td) in dm_pool_open_thin_device() argument
1359 r = __open_device(pmd, dev, 0, td); in dm_pool_open_thin_device()
1365 int dm_pool_close_thin_device(struct dm_thin_device *td) in dm_pool_close_thin_device() argument
1367 down_write(&td->pmd->root_lock); in dm_pool_close_thin_device()
1368 __close_device(td); in dm_pool_close_thin_device()
1369 up_write(&td->pmd->root_lock); in dm_pool_close_thin_device()
1374 dm_thin_id dm_thin_dev_id(struct dm_thin_device *td) in dm_thin_dev_id() argument
1376 return td->id; in dm_thin_dev_id()
1385 static bool __snapshotted_since(struct dm_thin_device *td, uint32_t time) in __snapshotted_since() argument
1387 return td->snapshotted_time > time; in __snapshotted_since()
1390 int dm_thin_find_block(struct dm_thin_device *td, dm_block_t block, in dm_thin_find_block() argument
1396 struct dm_pool_metadata *pmd = td->pmd; in dm_thin_find_block()
1397 dm_block_t keys[2] = { td->id, block }; in dm_thin_find_block()
1424 result->shared = __snapshotted_since(td, exception_time); in dm_thin_find_block()
1430 static int __insert(struct dm_thin_device *td, dm_block_t block, in __insert() argument
1435 struct dm_pool_metadata *pmd = td->pmd; in __insert()
1436 dm_block_t keys[2] = { td->id, block }; in __insert()
1446 td->changed = 1; in __insert()
1448 td->mapped_blocks++; in __insert()
1453 int dm_thin_insert_block(struct dm_thin_device *td, dm_block_t block, in dm_thin_insert_block() argument
1458 down_write(&td->pmd->root_lock); in dm_thin_insert_block()
1459 if (!td->pmd->fail_io) in dm_thin_insert_block()
1460 r = __insert(td, block, data_block); in dm_thin_insert_block()
1461 up_write(&td->pmd->root_lock); in dm_thin_insert_block()
1466 static int __remove(struct dm_thin_device *td, dm_block_t block) in __remove() argument
1469 struct dm_pool_metadata *pmd = td->pmd; in __remove()
1470 dm_block_t keys[2] = { td->id, block }; in __remove()
1476 td->mapped_blocks--; in __remove()
1477 td->changed = 1; in __remove()
1482 int dm_thin_remove_block(struct dm_thin_device *td, dm_block_t block) in dm_thin_remove_block() argument
1486 down_write(&td->pmd->root_lock); in dm_thin_remove_block()
1487 if (!td->pmd->fail_io) in dm_thin_remove_block()
1488 r = __remove(td, block); in dm_thin_remove_block()
1489 up_write(&td->pmd->root_lock); in dm_thin_remove_block()
1508 bool dm_thin_changed_this_transaction(struct dm_thin_device *td) in dm_thin_changed_this_transaction() argument
1512 down_read(&td->pmd->root_lock); in dm_thin_changed_this_transaction()
1513 r = td->changed; in dm_thin_changed_this_transaction()
1514 up_read(&td->pmd->root_lock); in dm_thin_changed_this_transaction()
1522 struct dm_thin_device *td, *tmp; in dm_pool_changed_this_transaction() local
1525 list_for_each_entry_safe(td, tmp, &pmd->thin_devices, list) { in dm_pool_changed_this_transaction()
1526 if (td->changed) { in dm_pool_changed_this_transaction()
1527 r = td->changed; in dm_pool_changed_this_transaction()
1536 bool dm_thin_aborted_changes(struct dm_thin_device *td) in dm_thin_aborted_changes() argument
1540 down_read(&td->pmd->root_lock); in dm_thin_aborted_changes()
1541 r = td->aborted_with_changes; in dm_thin_aborted_changes()
1542 up_read(&td->pmd->root_lock); in dm_thin_aborted_changes()
1582 struct dm_thin_device *td; in __set_abort_with_changes_flags() local
1584 list_for_each_entry(td, &pmd->thin_devices, list) in __set_abort_with_changes_flags()
1585 td->aborted_with_changes = td->changed; in __set_abort_with_changes_flags()
1667 int dm_thin_get_mapped_count(struct dm_thin_device *td, dm_block_t *result) in dm_thin_get_mapped_count() argument
1670 struct dm_pool_metadata *pmd = td->pmd; in dm_thin_get_mapped_count()
1674 *result = td->mapped_blocks; in dm_thin_get_mapped_count()
1682 static int __highest_block(struct dm_thin_device *td, dm_block_t *result) in __highest_block() argument
1687 struct dm_pool_metadata *pmd = td->pmd; in __highest_block()
1689 r = dm_btree_lookup(&pmd->tl_info, pmd->root, &td->id, &value_le); in __highest_block()
1698 int dm_thin_get_highest_mapped_block(struct dm_thin_device *td, in dm_thin_get_highest_mapped_block() argument
1702 struct dm_pool_metadata *pmd = td->pmd; in dm_thin_get_highest_mapped_block()
1706 r = __highest_block(td, result); in dm_thin_get_highest_mapped_block()