Age | Commit message (Collapse) | Author |
|
the initial implementation of file truncation. Now both open(2)ing
a file with the O_TRUNC flag and the {,f}truncate(2) system calls
will resize a file appropriately. The limitations are that only
uncompressed and unencrypted files are supported. Also, there is
only very limited support for highly fragmented files (the ones whose
$DATA attribute is split into multiple attribute extents).
Signed-off-by: Anton Altaparmakov <aia21@cantab.net>
|
|
uncompressed and unencrypted files.
Signed-off-by: Anton Altaparmakov <aia21@cantab.net>
|
|
extend the allocation of an attributes. Optionally, the data size,
but not the initialized size can be extended, too.
Signed-off-by: Anton Altaparmakov <aia21@cantab.net>
|
|
which is zero for a resident attribute but should no longer be zero
once the attribute is non-resident as it then has real clusters
allocated.
Signed-off-by: Anton Altaparmakov <aia21@cantab.net>
|
|
as an extra parameter. This is needed since we need to know the size
before we can map the mft record and our callers always know it. The
reason we cannot simply read the size from the vfs inode i_size is
that this is not necessarily uptodate. This happens when
ntfs_attr_make_non_resident() is called in the ->truncate call path.
Signed-off-by: Anton Altaparmakov <aia21@cantab.net>
|
|
specifying whether the cluster are being allocated to extend an
attribute or to fill a hole.
- Change ntfs_attr_make_non_resident() to call ntfs_cluster_alloc()
with @is_extension set to TRUE and remove the runlist terminator
fixup code as this is now done by ntfs_cluster_alloc().
Signed-off-by: Anton Altaparmakov <aia21@cantab.net>
|
|
search context as argument. This allows calling it with the mft
record mapped. Update all callers.
- Fix potential deadlock in ntfs_mft_data_extend_allocation_nolock()
error handling by passing in the active search context when calling
ntfs_cluster_free().
Signed-off-by: Anton Altaparmakov <aia21@cantab.net>
|
|
search context as argument. This allows calling it with the mft
record mapped. Update all callers.
Signed-off-by: Anton Altaparmakov <aia21@cantab.net>
|
|
search context. This allows calling it with the mft record mapped.
Signed-off-by: Anton Altaparmakov <aia21@cantab.net>
|
|
which we now cast to 64-bit first (fs/ntfs/mft.c::map_mft_record_page().
Signed-off-by: Anton Altaparmakov <aia21@cantab.net>
|
|
count to become negative and hence we had a wild memset() scribbling
all over the system's ram.
Signed-off-by: Anton Altaparmakov <aia21@cantab.net>
|
|
different types in it but #define the two constants instead.
Signed-off-by: Anton Altaparmakov <aia21@cantab.net>
|
|
restart pages in the journal without multi sector transfer protection
fixups (i.e. the update sequence array is empty and in fact does not
exist).
Signed-off-by: Anton Altaparmakov <aia21@cantab.net>
|
|
two error causing it to be CHKB instead of CHKD.
Signed-off-by: Anton Altaparmakov <aia21@cantab.net>
|
|
since we otherwise get into a lock reversal deadlock if a read locked
runlist is passed in. In the process also change it to take an ntfs
inode instead of a vfs inode as parameter.
Signed-off-by: Anton Altaparmakov <aia21@cantab.net>
|
|
Signed-off-by: Anton Altaparmakov <aia21@cantab.net>
|
|
Signed-off-by: Anton Altaparmakov <aia21@cantab.net>
|
|
Signed-off-by: Anton Altaparmakov <aia21@cantab.net>
|
|
Signed-off-by: Anton Altaparmakov <aia21@cantab.net>
|
|
changes by Richard Russon.)
Signed-off-by: Anton Altaparmakov <aia21@cantab.net>
|
|
otherwise causes a BUG().
Signed-off-by: Anton Altaparmakov <aia21@cantab.net>
|
|
an octal number to conform to how chmod(1) works, too. Thanks to
Giuseppe Bilotta and Horst von Brand for pointing out the errors of
my ways.
Signed-off-by: Anton Altaparmakov <aia21@cantab.net>
|
|
*** Warning: "bit_spin_lock" [fs/ntfs/ntfs.ko] undefined!
*** Warning: "bit_spin_unlock" [fs/ntfs/ntfs.ko] undefined!
Cc: Anton Altaparmakov <aia21@cantab.net>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
|
|
Signed-off-by: Anton Altaparmakov <aia21@cantab.net>
|
|
fs/ntfs/aops.c::ntfs_end_buffer_async_read() to a bit spin lock
in the first buffer head of a page.
Signed-off-by: Anton Altaparmakov <aia21@cantab.net>
|
|
Signed-off-by: Anton Altaparmakov <aia21@cantab.net>
|
|
fs/ntfs/aops.c::ntfs_readpage().
Signed-off-by: Anton Altaparmakov <aia21@cantab.net>
|
|
where a concurrent truncate has truncated the runlist under our feet.
Signed-off-by: Anton Altaparmakov <aia21@cantab.net>
|
|
lock protection over the buffer submission for i/o which allows the
removal of the get_bh()/put_bh() pairs for each buffer.
Signed-off-by: Anton Altaparmakov <aia21@cantab.net>
|
|
fs/ntfs/aops.c::ntfs_writepage().
Signed-off-by: Anton Altaparmakov <aia21@cantab.net>
|
|
Signed-off-by: Anton Altaparmakov <aia21@cantab.net>
|
|
fs/ntfs/inode.c::ntfs_read_locked_{,attr_,index_}inode().
Signed-off-by: Anton Altaparmakov <aia21@cantab.net>
|
|
updating the times in the inode in ntfs_setattr().
Signed-off-by: Anton Altaparmakov <aia21@cantab.net>
|
|
importantly to take a locked runlist rather than them locking it
which leads to lock reversal.
Signed-off-by: Anton Altaparmakov <aia21@cantab.net>
|
|
Also, add BUG() checks to ntfs_attr_make_non_resident() and
ntfs_attr_set() to ensure that these functions are never called
for compressed or encrypted attributes.
Signed-off-by: Anton Altaparmakov <aia21@cantab.net>
|
|
- Fix a bug in ntfs_map_runlist_nolock() where we forgot to protect
access to the allocated size in the ntfs inode with the size lock.
- Fix ntfs_attr_vcn_to_lcn_nolock() and ntfs_attr_find_vcn_nolock() to
return LCN_ENOENT when there is no runlist and the allocated size is
zero.
- Fix load_attribute_list() to handle the case of a NULL runlist.
Signed-off-by: Anton Altaparmakov <aia21@cantab.net>
|
|
Signed-off-by: Anton Altaparmakov <aia21@cantab.net>
|
|
Signed-off-by: Anton Altaparmakov <aia21@cantab.net>
|
|
index entry is in the index root, we forgot to set the @ir pointer in
the index context. Thanks for Yura Pakhuchiy for finding this bug.
Signed-off-by: Anton Altaparmakov <aia21@cantab.net>
|
|
a runlist.
Signed-off-by: Anton Altaparmakov <aia21@cantab.net>
|
|
length is zero.
Signed-off-by: Anton Altaparmakov <aia21@cantab.net>
|
|
messages and include the inode number. Thanks to Yura Pakhuchiy for
pointing this out.
Signed-off-by: Anton Altaparmakov <aia21@cantab.net>
|
|
fs/ntfs/runlist.c::ntfs_mapping_pairs_decompress().
Signed-off-by: Anton Altaparmakov <aia21@cantab.net>
|
|
Signed-off-by: Anton Altaparmakov <aia21@cantab.net>
|
|
Thanks to Stefano Picerno for the bug report.
Signed-off-by: Anton Altaparmakov <aia21@cantab.net>
|
|
in the two critical regions. This means we no longer need to
panic() when the allocation fails as it now cannot fail.
Signed-off-by: Anton Altaparmakov <aia21@cantab.net>
|
|
- Modify fs/ntfs/malloc.h::ntfs_malloc_nofs() to do the kmalloc() based
allocations with __GFP_HIGHMEM, analogous to how the vmalloc() based
allocations are done.
- Add fs/ntfs/malloc.h::ntfs_malloc_nofs_nofail() which is analogous to
ntfs_malloc_nofs() but it performs allocations with __GFP_NOFAIL and
hence cannot fail.
Signed-off-by: Anton Altaparmakov <aia21@cantab.net>
|
|
- Support journals ($LogFile) which have been modified by chkdsk. This
means users can boot into Windows after we marked the volume dirty.
The Windows boot will run chkdsk and then reboot. The user can then
immediately boot into Linux rather than having to do a full Windows
boot first before rebooting into Linux and we will recognize such a
journal and empty it as it is clean by definition.
- Support journals ($LogFile) with only one restart page as well as
journals with two different restart pages. We sanity check both and
either use the only sane one or the more recent one of the two in the
case that both are valid.
Signed-off-by: Anton Altaparmakov <aia21@cantab.net>
|
|
for mft record writing. I had missed the writepage based mft record
write code path.
Signed-off-by: Anton Altaparmakov <aia21@cantab.net>
|
|
the buffers when mapping them after the VM had discarded them.
Thanks to Martin MOKREJŠ for the bug report.
Signed-off-by: Anton Altaparmakov <aia21@cantab.net>
|