summaryrefslogtreecommitdiffstats
path: root/fs/ntfs (follow)
Commit message (Collapse)AuthorAgeFilesLines
* NTFS: $EA attributes can be both resident non-resident.Anton Altaparmakov2005-10-195-14/+35
| | | | | | Minor tidying. Signed-off-by: Anton Altaparmakov <aia21@cantab.net>
* NTFS: The big ntfs write(2) rewrite has arrived. We now implement our ownAnton Altaparmakov2005-10-113-45/+2242
| | | | | | | | | | | | | | | file operations ->write(), ->aio_write(), and ->writev() for regular files. This replaces the old use of generic_file_write(), et al and the address space operations ->prepare_write and ->commit_write. This means that both sparse and non-sparse (unencrypted and uncompressed) files can now be extended using the normal write(2) code path. There are two limitations at present and these are that we never create sparse files and that we only have limited support for highly fragmented files, i.e. ones whose data attribute is split across multiple extents. When such a case is encountered, EOPNOTSUPP is returned. Signed-off-by: Anton Altaparmakov <aia21@cantab.net>
* NTFS: Remove address space operations ->prepare_write and ->commit_write inAnton Altaparmakov2005-10-111-827/+0
| | | | | | preparation for the big rewrite of write(2) support in ntfs. Signed-off-by: Anton Altaparmakov <aia21@cantab.net>
* NTFS: In attrib.c::ntfs_attr_set() call balance_dirty_pages_ratelimited()Anton Altaparmakov2005-10-113-2/+9
| | | | | | | | and cond_resched() in the main loop as we could be dirtying a lot of pages and this ensures we play nice with the VM and the system as a whole. Signed-off-by: Anton Altaparmakov <aia21@cantab.net>
* Merge branch 'master' of /usr/src/ntfs-2.6/Anton Altaparmakov2005-10-111-1/+1
|\
| * [PATCH] gfp flags annotations - part 1Al Viro2005-10-091-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | - added typedef unsigned int __nocast gfp_t; - replaced __nocast uses for gfp flags with gfp_t - it gives exactly the same warnings as far as sparse is concerned, doesn't change generated code (from gcc point of view we replaced unsigned int with typedef) and documents what's going on far better. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
* | NTFS: Enable ATTR_SIZE attribute changes in ntfs_setattr(). This completesAnton Altaparmakov2005-10-042-8/+22
| | | | | | | | | | | | | | | | | | | | | | 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>
* | NTFS: Implement fs/ntfs/inode.[hc]::ntfs_truncate(). It only supportsAnton Altaparmakov2005-10-042-43/+468
| | | | | | | | | | | | uncompressed and unencrypted files. Signed-off-by: Anton Altaparmakov <aia21@cantab.net>
* | NTFS: Add fs/ntfs/attrib.[hc]::ntfs_attr_extend_allocation(), a function toAnton Altaparmakov2005-10-043-0/+640
| | | | | | | | | | | | | | 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>
* | NTFS: Fix ntfs_attr_make_non_resident() to update the vfs inode i_blocksAnton Altaparmakov2005-10-042-1/+7
| | | | | | | | | | | | | | | | 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>
* | NTFS: Change ntfs_attr_make_non_resident to take the attribute value sizeAnton Altaparmakov2005-10-043-4/+17
| | | | | | | | | | | | | | | | | | | | 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>
* | NTFS: - Change ntfs_cluster_alloc() to take an extra boolean parameterAnton Altaparmakov2005-10-045-15/+25
| | | | | | | | | | | | | | | | | | | | 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>
* | NTFS: - Change {__,}ntfs_cluster_free() to also take an optional attributeAnton Altaparmakov2005-10-044-19/+86
| | | | | | | | | | | | | | | | | | | | 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>
* | NTFS: Change ntfs_attr_find_vcn_nolock() to also take an optional attributeAnton Altaparmakov2005-10-045-44/+59
| | | | | | | | | | | | | | search context as argument. This allows calling it with the mft record mapped. Update all callers. Signed-off-by: Anton Altaparmakov <aia21@cantab.net>
* | NTFS: Change ntfs_map_runlist_nolock() to also take an optional attributeAnton Altaparmakov2005-10-044-33/+209
|/ | | | | | search context. This allows calling it with the mft record mapped. Signed-off-by: Anton Altaparmakov <aia21@cantab.net>
* NTFS: Fix a 64-bitness bug where a left-shift could overflow a 32-bit variableAnton Altaparmakov2005-10-043-3/+4
| | | | | | which we now cast to 64-bit first (fs/ntfs/mft.c::map_mft_record_page(). Signed-off-by: Anton Altaparmakov <aia21@cantab.net>
* NTFS: Fix a stupid bug in __ntfs_bitmap_set_bits_in_run() which caused theAnton Altaparmakov2005-10-042-2/+6
| | | | | | | 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>
* NTFS: Re-fix sparse warnings in a more correct way, i.e. don't use an enum withAnton Altaparmakov2005-09-261-8/+5
| | | | | | different types in it but #define the two constants instead. Signed-off-by: Anton Altaparmakov <aia21@cantab.net>
* NTFS: More $LogFile handling fixes: when chkdsk has been run, it can leave theAnton Altaparmakov2005-09-263-15/+35
| | | | | | | | 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>
* NTFS: Fix the definition of the CHKD ntfs record magic. It had an off byAnton Altaparmakov2005-09-261-1/+1
| | | | | | two error causing it to be CHKB instead of CHKD. Signed-off-by: Anton Altaparmakov <aia21@cantab.net>
* NTFS: Change ntfs_cluster_free() to require a write locked runlist on entryAnton Altaparmakov2005-09-235-34/+32
| | | | | | | | 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>
* NTFS: Fix sparse warnings that have crept in over time.Anton Altaparmakov2005-09-223-4/+9
| | | | Signed-off-by: Anton Altaparmakov <aia21@cantab.net>
* NTFS: More runlist handling fixes from Richard Russon and myself.Anton Altaparmakov2005-09-201-22/+33
| | | | Signed-off-by: Anton Altaparmakov <aia21@cantab.net>
* NTFS: Fix ntfs_{read,write}page() to cope with concurrent truncates better.Anton Altaparmakov2005-09-193-41/+80
| | | | Signed-off-by: Anton Altaparmakov <aia21@cantab.net>
* NTFS: Fix handling of compressed directories that I broke in earlier changeset.Anton Altaparmakov2005-09-191-4/+8
| | | | Signed-off-by: Anton Altaparmakov <aia21@cantab.net>
* NTFS: Fix various bugs in the runlist merging code. (Based on libntfsAnton Altaparmakov2005-09-192-64/+70
| | | | | | changes by Richard Russon.) Signed-off-by: Anton Altaparmakov <aia21@cantab.net>
* NTFS: Mask out __GFP_HIGHMEM when doing kmalloc() in __ntfs_malloc() as itAnton Altaparmakov2005-09-122-4/+1
| | | | | | otherwise causes a BUG(). Signed-off-by: Anton Altaparmakov <aia21@cantab.net>
* NTFS: Change the mount options {u,f,d}mask to always parse the number asAnton Altaparmakov2005-09-122-4/+16
| | | | | | | | 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>
* [PATCH] ntfs build fixAndrew Morton2005-09-101-0/+1
| | | | | | | | | *** 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>
* NTFS: 2.1.24 release and some minor final fixes.Anton Altaparmakov2005-09-094-9/+9
| | | | Signed-off-by: Anton Altaparmakov <aia21@cantab.net>
* NTFS: Improve scalability by changing the driver global spin lock inAnton Altaparmakov2005-09-082-6/+12
| | | | | | | 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>
* NTFS: Fix page_has_buffers()/page_buffers() handling in fs/ntfs/aops.c.Anton Altaparmakov2005-09-082-17/+22
| | | | Signed-off-by: Anton Altaparmakov <aia21@cantab.net>
* NTFS: Fixup handling of sparse, compressed, and encrypted attributes inAnton Altaparmakov2005-09-082-20/+26
| | | | | | fs/ntfs/aops.c::ntfs_readpage(). Signed-off-by: Anton Altaparmakov <aia21@cantab.net>
* NTFS: Fix fs/ntfs/aops.c::ntfs_{read,write}_block() to handle the caseAnton Altaparmakov2005-09-082-11/+42
| | | | | | where a concurrent truncate has truncated the runlist under our feet. Signed-off-by: Anton Altaparmakov <aia21@cantab.net>
* NTFS: Optimize fs/ntfs/aops.c::ntfs_write_block() by extending the pageAnton Altaparmakov2005-09-082-10/+6
| | | | | | | 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>
* NTFS: Fixup handling of sparse, compressed, and encrypted attributes inAnton Altaparmakov2005-09-082-57/+49
| | | | | | fs/ntfs/aops.c::ntfs_writepage(). Signed-off-by: Anton Altaparmakov <aia21@cantab.net>
* NTFS: Make ntfs_write_block() not instantiate sparse blocks if they are zero.Anton Altaparmakov2005-09-082-0/+23
| | | | Signed-off-by: Anton Altaparmakov <aia21@cantab.net>
* NTFS: Fixup handling of sparse, compressed, and encrypted attributes inAnton Altaparmakov2005-09-082-101/+116
| | | | | | fs/ntfs/inode.c::ntfs_read_locked_{,attr_,index_}inode(). Signed-off-by: Anton Altaparmakov <aia21@cantab.net>
* NTFS: Truncate {a,c,m}time to the ntfs supported time granularity whenAnton Altaparmakov2005-09-082-5/+9
| | | | | | updating the times in the inode in ntfs_setattr(). Signed-off-by: Anton Altaparmakov <aia21@cantab.net>
* NTFS: Fix cluster (de)allocators to work when the runlist is NULL and moreAnton Altaparmakov2005-09-084-33/+32
| | | | | | | importantly to take a locked runlist rather than them locking it which leads to lock reversal. Signed-off-by: Anton Altaparmakov <aia21@cantab.net>
* NTFS: Fix handling of sparse attributes in ntfs_attr_make_non_resident().Anton Altaparmakov2005-09-082-17/+40
| | | | | | | | 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>
* NTFS: Fix several bugs in fs/ntfs/attrib.c.Anton Altaparmakov2005-09-082-1/+37
| | | | | | | | | | | - 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>
* NTFS: Add fs/ntfs/attrib.[hc]::ntfs_resident_attr_value_resize().Anton Altaparmakov2005-09-083-0/+43
| | | | Signed-off-by: Anton Altaparmakov <aia21@cantab.net>
* NTFS: Remove bogus setting of PageError in ntfs_read_compressed_block().Anton Altaparmakov2005-09-083-10/+8
| | | | Signed-off-by: Anton Altaparmakov <aia21@cantab.net>
* NTFS: Fix a bug in fs/ntfs/index.c::ntfs_index_lookup(). When the returnedAnton Altaparmakov2005-09-082-0/+4
| | | | | | | 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>
* NTFS: Add ntfs_rl_punch_nolock() which punches a caller specified hole into ↵Anton Altaparmakov2005-09-083-0/+289
| | | | | | a runlist. Signed-off-by: Anton Altaparmakov <aia21@cantab.net>
* NTFS: Change ntfs_rl_truncate_nolock() to throw away the runlist if the newAnton Altaparmakov2005-09-082-1/+15
| | | | | | length is zero. Signed-off-by: Anton Altaparmakov <aia21@cantab.net>
* NTFS: Report unrepresentable inodes during ntfs_readdir() as KERN_WARNINGAnton Altaparmakov2005-09-083-2/+7
| | | | | | | messages and include the inode number. Thanks to Yura Pakhuchiy for pointing this out. Signed-off-by: Anton Altaparmakov <aia21@cantab.net>
* NTFS: Fix handling of valid but empty mapping pairs array inAnton Altaparmakov2005-09-082-0/+5
| | | | | | fs/ntfs/runlist.c::ntfs_mapping_pairs_decompress(). Signed-off-by: Anton Altaparmakov <aia21@cantab.net>
* NTFS: Remove two bogus BUG_ON()s from fs/ntfs/mft.c.Anton Altaparmakov2005-09-082-2/+1
| | | | Signed-off-by: Anton Altaparmakov <aia21@cantab.net>