NTFS: Change ntfs_rl_truncate_nolock() to throw away the runlist if the new
length is zero. Signed-off-by: Anton Altaparmakov <aia21@cantab.net>
This commit is contained in:
parent
f94ad38e68
commit
3ffc5a4438
|
@ -51,6 +51,8 @@ ToDo/Notes:
|
||||||
- Report unrepresentable inodes during ntfs_readdir() as KERN_WARNING
|
- Report unrepresentable inodes during ntfs_readdir() as KERN_WARNING
|
||||||
messages and include the inode number. Thanks to Yura Pakhuchiy for
|
messages and include the inode number. Thanks to Yura Pakhuchiy for
|
||||||
pointing this out.
|
pointing this out.
|
||||||
|
- Change ntfs_rl_truncate_nolock() to throw away the runlist if the new
|
||||||
|
length is zero.
|
||||||
|
|
||||||
2.1.23 - Implement extension of resident files and make writing safe as well as
|
2.1.23 - Implement extension of resident files and make writing safe as well as
|
||||||
many bug fixes, cleanups, and enhancements...
|
many bug fixes, cleanups, and enhancements...
|
||||||
|
|
|
@ -1455,6 +1455,7 @@ err_out:
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ntfs_rl_truncate_nolock - truncate a runlist starting at a specified vcn
|
* ntfs_rl_truncate_nolock - truncate a runlist starting at a specified vcn
|
||||||
|
* @vol: ntfs volume (needed for error output)
|
||||||
* @runlist: runlist to truncate
|
* @runlist: runlist to truncate
|
||||||
* @new_length: the new length of the runlist in VCNs
|
* @new_length: the new length of the runlist in VCNs
|
||||||
*
|
*
|
||||||
|
@ -1462,12 +1463,16 @@ err_out:
|
||||||
* holding the runlist elements to a length of @new_length VCNs.
|
* holding the runlist elements to a length of @new_length VCNs.
|
||||||
*
|
*
|
||||||
* If @new_length lies within the runlist, the runlist elements with VCNs of
|
* If @new_length lies within the runlist, the runlist elements with VCNs of
|
||||||
* @new_length and above are discarded.
|
* @new_length and above are discarded. As a special case if @new_length is
|
||||||
|
* zero, the runlist is discarded and set to NULL.
|
||||||
*
|
*
|
||||||
* If @new_length lies beyond the runlist, a sparse runlist element is added to
|
* If @new_length lies beyond the runlist, a sparse runlist element is added to
|
||||||
* the end of the runlist @runlist or if the last runlist element is a sparse
|
* the end of the runlist @runlist or if the last runlist element is a sparse
|
||||||
* one already, this is extended.
|
* one already, this is extended.
|
||||||
*
|
*
|
||||||
|
* Note, no checking is done for unmapped runlist elements. It is assumed that
|
||||||
|
* the caller has mapped any elements that need to be mapped already.
|
||||||
|
*
|
||||||
* Return 0 on success and -errno on error.
|
* Return 0 on success and -errno on error.
|
||||||
*
|
*
|
||||||
* Locking: The caller must hold @runlist->lock for writing.
|
* Locking: The caller must hold @runlist->lock for writing.
|
||||||
|
@ -1482,6 +1487,13 @@ int ntfs_rl_truncate_nolock(const ntfs_volume *vol, runlist *const runlist,
|
||||||
BUG_ON(!runlist);
|
BUG_ON(!runlist);
|
||||||
BUG_ON(new_length < 0);
|
BUG_ON(new_length < 0);
|
||||||
rl = runlist->rl;
|
rl = runlist->rl;
|
||||||
|
if (!new_length) {
|
||||||
|
ntfs_debug("Freeing runlist.");
|
||||||
|
runlist->rl = NULL;
|
||||||
|
if (rl)
|
||||||
|
ntfs_free(rl);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
if (unlikely(!rl)) {
|
if (unlikely(!rl)) {
|
||||||
/*
|
/*
|
||||||
* Create a runlist consisting of a sparse runlist element of
|
* Create a runlist consisting of a sparse runlist element of
|
||||||
|
|
Loading…
Reference in New Issue