Commit 959eb4e5592cc0b0b07db0ca30d2b1efd790020f
Committed by
Alasdair G Kergon
1 parent
7b76ec11fe
Exists in
master
and in
7 other branches
dm mpath: support discard
Enable discard support in the DM multipath target. This discard support depends on a few discard-specific fixes to the block layer's request stacking driver methods. Discard requests are optional so don't allow a failed discard to trigger path failures. If there is a real problem with a given path the barriers associated with the discard (either before or after the discard) will cause path failure. That said, unconditionally passing discard failures up the stack is not ideal. This must be fixed once DM has more information about the nature of the underlying storage failure. Signed-off-by: Mike Snitzer <snitzer@redhat.com> Signed-off-by: Alasdair G Kergon <agk@redhat.com> Cc: Kiyoshi Ueda <k-ueda@ct.jp.nec.com>
Showing 1 changed file with 10 additions and 0 deletions Side-by-side Diff
drivers/md/dm-mpath.c
... | ... | @@ -893,6 +893,7 @@ |
893 | 893 | } |
894 | 894 | |
895 | 895 | ti->num_flush_requests = 1; |
896 | + ti->num_discard_requests = 1; | |
896 | 897 | |
897 | 898 | return 0; |
898 | 899 | |
... | ... | @@ -1270,6 +1271,15 @@ |
1270 | 1271 | return 0; /* I/O complete */ |
1271 | 1272 | |
1272 | 1273 | if (error == -EOPNOTSUPP) |
1274 | + return error; | |
1275 | + | |
1276 | + if (clone->cmd_flags & REQ_DISCARD) | |
1277 | + /* | |
1278 | + * Pass all discard request failures up. | |
1279 | + * FIXME: only fail_path if the discard failed due to a | |
1280 | + * transport problem. This requires precise understanding | |
1281 | + * of the underlying failure (e.g. the SCSI sense). | |
1282 | + */ | |
1273 | 1283 | return error; |
1274 | 1284 | |
1275 | 1285 | if (mpio->pgpath) |