| 1113 | } |
| 1114 | |
| 1115 | int KernelDevice::write( |
| 1116 | uint64_t off, |
| 1117 | bufferlist &bl, |
| 1118 | bool buffered, |
| 1119 | int write_hint) |
| 1120 | { |
| 1121 | uint64_t len = bl.length(); |
| 1122 | dout(20) << __func__ << " 0x" << std::hex << off << "~" << len << std::dec |
| 1123 | << " " << buffermode(buffered) |
| 1124 | << dendl; |
| 1125 | ceph_assert(is_valid_io(off, len)); |
| 1126 | if (cct->_conf->objectstore_blackhole) { |
| 1127 | lderr(cct) << __func__ << " objectstore_blackhole=true, throwing out IO" |
| 1128 | << dendl; |
| 1129 | return 0; |
| 1130 | } |
| 1131 | |
| 1132 | if ((!buffered || bl.get_num_buffers() >= IOV_MAX) && |
| 1133 | bl.rebuild_aligned_size_and_memory(block_size, block_size, IOV_MAX)) { |
| 1134 | dout(20) << __func__ << " rebuilding buffer to be aligned" << dendl; |
| 1135 | } |
| 1136 | dout(40) << "data:\n"; |
| 1137 | bl.hexdump(*_dout); |
| 1138 | *_dout << dendl; |
| 1139 | |
| 1140 | return _sync_write(off, bl, buffered, write_hint); |
| 1141 | } |
| 1142 | |
| 1143 | int KernelDevice::aio_write( |
| 1144 | uint64_t off, |
nothing calls this directly
no test coverage detected