mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-09-21 12:11:49 +08:00
cce6bfa6ca
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 |