mirror of
https://git.proxmox.com/git/mirror_ubuntu-kernels.git
synced 2026-01-06 19:02:48 +00:00
When netfslib writes to a folio that it doesn't have data for, but that
data exists on the server, it will make a 'streaming write' whereby it
stores data in a folio that is marked dirty, but not uptodate. When it
does this, it attaches a record to folio->private to track the dirty
region.
When truncate() or fallocate() wants to invalidate part of such a folio, it
will call into ->invalidate_folio(), specifying the part of the folio that
is to be invalidated. netfs_invalidate_folio(), on behalf of the
filesystem, must then determine how to trim the streaming write record. In
a couple of cases, however, it does this incorrectly (the reduce-length and
move-start cases are switched over and don't, in any case, calculate the
value correctly).
Fix this by making the logic tree more obvious and fixing the cases.
Fixes:
|
||
|---|---|---|
| .. | ||
| buffered_read.c | ||
| buffered_write.c | ||
| direct_read.c | ||
| direct_write.c | ||
| fscache_cache.c | ||
| fscache_cookie.c | ||
| fscache_internal.h | ||
| fscache_io.c | ||
| fscache_main.c | ||
| fscache_proc.c | ||
| fscache_stats.c | ||
| fscache_volume.c | ||
| internal.h | ||
| io.c | ||
| iterator.c | ||
| Kconfig | ||
| locking.c | ||
| main.c | ||
| Makefile | ||
| misc.c | ||
| objects.c | ||
| stats.c | ||
| write_collect.c | ||
| write_issue.c | ||