mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-11-20 08:38:24 +08:00
NTFS: Change the runlist terminator of the newly allocated cluster(s) to
LCN_ENOENT in ntfs_attr_make_non_resident(). Otherwise the runlist code gets confused. Signed-off-by: Anton Altaparmakov <aia21@cantab.net>
This commit is contained in:
parent
3bd1f4a173
commit
1d58b27b8d
@ -132,6 +132,9 @@ ToDo/Notes:
|
||||
with a 64-bit variable and a int, i.e. 32-bit, constant. This causes
|
||||
the higher order 32-bits of the 64-bit variable to be zeroed. To fix
|
||||
this cast the 'const' to the same 64-bit type as 'var'.
|
||||
- Change the runlist terminator of the newly allocated cluster(s) to
|
||||
LCN_ENOENT in ntfs_attr_make_non_resident(). Otherwise the runlist
|
||||
code gets confused.
|
||||
|
||||
2.1.22 - Many bug and race fixes and error handling improvements.
|
||||
|
||||
|
@ -1285,6 +1285,8 @@ int ntfs_attr_make_non_resident(ntfs_inode *ni)
|
||||
new_size = (i_size_read(vi) + vol->cluster_size - 1) &
|
||||
~(vol->cluster_size - 1);
|
||||
if (new_size > 0) {
|
||||
runlist_element *rl2;
|
||||
|
||||
/*
|
||||
* Will need the page later and since the page lock nests
|
||||
* outside all ntfs locks, we need to get the page now.
|
||||
@ -1304,6 +1306,12 @@ int ntfs_attr_make_non_resident(ntfs_inode *ni)
|
||||
err);
|
||||
goto page_err_out;
|
||||
}
|
||||
/* Change the runlist terminator to LCN_ENOENT. */
|
||||
rl2 = rl;
|
||||
while (rl2->length)
|
||||
rl2++;
|
||||
BUG_ON(rl2->lcn != LCN_RL_NOT_MAPPED);
|
||||
rl2->lcn = LCN_ENOENT;
|
||||
} else {
|
||||
rl = NULL;
|
||||
page = NULL;
|
||||
|
Loading…
Reference in New Issue
Block a user