Commit 3ef825d
bcache: use bio cloning for detached device requests
Previously, bcache hijacked the bi_end_io and bi_private fields of
the incoming bio when the backing device was in a detached state.
This is fragile and breaks if the bio is needed to be processed by
other layers.
This patch transitions to using a cloned bio embedded within a private
structure. This ensures the original bio's metadata remains untouched.
Fixes: 53280e3 ("bcache: fix improper use of bi_end_io")
Co-developed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Shida Zhang <zhangshida@kylinos.cn>
Acked-by: Coly Li <colyli@fnnas.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>1 parent 046be7e commit 3ef825d
3 files changed
Lines changed: 54 additions & 46 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
273 | 273 | | |
274 | 274 | | |
275 | 275 | | |
| 276 | + | |
| 277 | + | |
276 | 278 | | |
277 | 279 | | |
278 | 280 | | |
| |||
753 | 755 | | |
754 | 756 | | |
755 | 757 | | |
| 758 | + | |
| 759 | + | |
| 760 | + | |
| 761 | + | |
| 762 | + | |
| 763 | + | |
| 764 | + | |
756 | 765 | | |
757 | 766 | | |
758 | 767 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1077 | 1077 | | |
1078 | 1078 | | |
1079 | 1079 | | |
1080 | | - | |
1081 | | - | |
1082 | | - | |
1083 | | - | |
1084 | | - | |
1085 | | - | |
1086 | | - | |
1087 | | - | |
1088 | 1080 | | |
1089 | 1081 | | |
1090 | | - | |
1091 | | - | |
1092 | | - | |
1093 | | - | |
1094 | | - | |
| 1082 | + | |
| 1083 | + | |
| 1084 | + | |
1095 | 1085 | | |
1096 | 1086 | | |
1097 | | - | |
| 1087 | + | |
1098 | 1088 | | |
1099 | 1089 | | |
1100 | | - | |
1101 | | - | |
| 1090 | + | |
| 1091 | + | |
1102 | 1092 | | |
1103 | 1093 | | |
| 1094 | + | |
1104 | 1095 | | |
1105 | 1096 | | |
1106 | | - | |
1107 | | - | |
| 1097 | + | |
| 1098 | + | |
1108 | 1099 | | |
1109 | 1100 | | |
1110 | | - | |
1111 | | - | |
| 1101 | + | |
| 1102 | + | |
1112 | 1103 | | |
1113 | 1104 | | |
1114 | 1105 | | |
| 1106 | + | |
1115 | 1107 | | |
1116 | | - | |
1117 | | - | |
1118 | | - | |
1119 | | - | |
1120 | | - | |
1121 | | - | |
1122 | | - | |
1123 | | - | |
1124 | | - | |
| 1108 | + | |
| 1109 | + | |
| 1110 | + | |
1125 | 1111 | | |
1126 | 1112 | | |
1127 | 1113 | | |
1128 | | - | |
| 1114 | + | |
| 1115 | + | |
| 1116 | + | |
| 1117 | + | |
| 1118 | + | |
| 1119 | + | |
| 1120 | + | |
| 1121 | + | |
| 1122 | + | |
1129 | 1123 | | |
1130 | | - | |
| 1124 | + | |
1131 | 1125 | | |
1132 | | - | |
1133 | | - | |
1134 | | - | |
1135 | | - | |
1136 | | - | |
1137 | | - | |
1138 | | - | |
1139 | | - | |
1140 | | - | |
1141 | | - | |
| 1126 | + | |
| 1127 | + | |
| 1128 | + | |
| 1129 | + | |
| 1130 | + | |
| 1131 | + | |
1142 | 1132 | | |
1143 | 1133 | | |
1144 | 1134 | | |
| |||
1214 | 1204 | | |
1215 | 1205 | | |
1216 | 1206 | | |
1217 | | - | |
1218 | 1207 | | |
1219 | 1208 | | |
1220 | 1209 | | |
| 1210 | + | |
1221 | 1211 | | |
1222 | 1212 | | |
1223 | 1213 | | |
| |||
1237 | 1227 | | |
1238 | 1228 | | |
1239 | 1229 | | |
1240 | | - | |
| 1230 | + | |
1241 | 1231 | | |
1242 | | - | |
| 1232 | + | |
| 1233 | + | |
1243 | 1234 | | |
1244 | 1235 | | |
1245 | 1236 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
887 | 887 | | |
888 | 888 | | |
889 | 889 | | |
| 890 | + | |
890 | 891 | | |
891 | 892 | | |
892 | 893 | | |
| |||
949 | 950 | | |
950 | 951 | | |
951 | 952 | | |
| 953 | + | |
| 954 | + | |
| 955 | + | |
| 956 | + | |
| 957 | + | |
952 | 958 | | |
953 | 959 | | |
954 | 960 | | |
| |||
964 | 970 | | |
965 | 971 | | |
966 | 972 | | |
967 | | - | |
| 973 | + | |
968 | 974 | | |
969 | 975 | | |
970 | 976 | | |
| |||
976 | 982 | | |
977 | 983 | | |
978 | 984 | | |
979 | | - | |
| 985 | + | |
| 986 | + | |
| 987 | + | |
980 | 988 | | |
981 | 989 | | |
982 | 990 | | |
| |||
0 commit comments