Repository navigation
Commit 3ffc7cd
committed
fusedev: stop an async worker on a read error it can't retry
The async server logged a read error it didn't know and read again.
Now that a tokio task waits for the device to become readable, a device
that stays readable but fails every read made the task spin at full CPU
and log on every pass. EINVAL for a buffer smaller than the kernel's
requests does that.
Retry ENOENT, which the kernel returns when a request was interrupted
before the read, and stop the task on any other error. The synchronous
server does the same.
Signed-off-by: Ilan Joselevich <personal@ilanjoselevich.com>1 parent 2c5f8fb commit 3ffc7cd
2 files changed
Lines changed: 11 additions & 9 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
44 | 44 | | |
45 | 45 | | |
46 | 46 | | |
| 47 | + | |
| 48 | + | |
47 | 49 | | |
48 | 50 | | |
49 | 51 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1257 | 1257 | | |
1258 | 1258 | | |
1259 | 1259 | | |
1260 | | - | |
1261 | | - | |
| 1260 | + | |
| 1261 | + | |
| 1262 | + | |
| 1263 | + | |
1262 | 1264 | | |
1263 | 1265 | | |
1264 | 1266 | | |
| |||
1276 | 1278 | | |
1277 | 1279 | | |
1278 | 1280 | | |
1279 | | - | |
| 1281 | + | |
1280 | 1282 | | |
1281 | | - | |
1282 | | - | |
| 1283 | + | |
| 1284 | + | |
| 1285 | + | |
| 1286 | + | |
1283 | 1287 | | |
1284 | 1288 | | |
1285 | 1289 | | |
1286 | | - | |
1287 | | - | |
1288 | | - | |
1289 | | - | |
1290 | 1290 | | |
1291 | 1291 | | |
1292 | 1292 | | |
| |||
0 commit comments