summaryrefslogtreecommitdiffstats
path: root/fs
Commit message (Collapse)AuthorAgeFilesLines
...
| * | | Btrfs: check items for correctness as we searchJosef Bacik2011-03-174-124/+95Star
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently if we have corrupted items things will blow up in spectacular ways. So as we read in blocks and they are leaves, check the entire leaf to make sure all of the items are correct and point to valid parts in the leaf for the item data the are responsible for. If the item is corrupt we will kick back EIO and not read any of the copies since they are likely to not be correct either. This will catch generic corruptions, it will be up to the individual callers of btrfs_search_slot to make sure their items are right. Thanks, Signed-off-by: Josef Bacik <josef@redhat.com>
| * | | Btrfs: return error if the range we want to map is bogusJosef Bacik2011-03-171-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently if we have corrupt metadata map_extent_buffer will complain about it, but not return an error so the caller has no idea a problem was hit. Fix this. Thanks, Signed-off-by: Josef Bacik <josef@redhat.com>
| * | | Btrfs: add a comment explaining what btrfs_cont_expand doesJosef Bacik2011-03-171-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Everytime I have to deal with btrfs_cont_expand I stare at it for 20 minutes trying to remember what exactly it does and why the hell we need it. So add a comment to save future-Josef some time. Thanks, Signed-off-by: Josef Bacik <josef@redhat.com>
| * | | Btrfs: use mark_inode_dirty when expanding the fileJosef Bacik2011-03-171-15/+1Star
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Mark_inode_dirty will call btrfs_dirty_inode which will take care of updating the inode. This makes setsize a little cleaner since we don't have to start a transaction and update the inode in there, we can just call mark_inode_dirty. Thanks, Signed-off-by: Josef Bacik <josef@redhat.com>
| * | | Btrfs: only add orphan items when truncatingJosef Bacik2011-03-171-27/+18Star
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We don't need an orphan item when expanding files, we just need them for truncating them, so only add the orphan item in btrfs_truncate instead of in btrfs_setsize. Thanks, Signed-off-by: Josef Bacik <josef@redhat.com>
| * | | Btrfs: make sure to remove the orphan item from the in-memory listJosef Bacik2011-03-171-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This fixes a problem where if truncate fails the inode will still be on the in memory orphan list. This is will make us complain when the inode gets destroyed because it's still on the orphan list. So if we fail just remove us from the in memory list and carry on. Signed-off-by: Josef Bacik <josef@redhat.com>
| * | | Btrfs: handle errors in btrfs_orphan_cleanupJosef Bacik2011-03-176-23/+50
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If we cannot truncate an inode for some reason we will never delete the orphan item associated with that inode, which means that we will loop forever in btrfs_orphan_cleanup. Instead of doing this just return error so we fail to mount. It sucks, but hey it's better than hanging. Thanks, Signed-off-by: Josef Bacik <josef@redhat.com>
| * | | Btrfs: cleanup error handling in the truncate pathJosef Bacik2011-03-171-19/+45
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Now that we can handle having errors in the truncate path lets make sure we return errors instead of doing BUG_ON() and such. Thanks, Signed-off-by: Josef Bacik <josef@redhat.com>
| * | | Btrfs: convert to the new truncate sequenceJosef Bacik2011-03-173-47/+40Star
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ->truncate() is going away, instead all of the work needs to be done in ->setattr(). So this converts us over to do this. It's fairly straightforward, just get rid of our .truncate inode operation and call btrfs_truncate() directly from btrfs_setsize. This works out better for us since truncate can technically return ENOSPC, and before we had no way of letting anybody know. Thanks, Signed-off-by: Josef Bacik <josef@redhat.com>
| * | | Btrfs: use a slab for the free space entriesJosef Bacik2011-03-173-16/+29
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Since we alloc/free free space entries a whole lot, lets use a slab to keep track of them. This makes some of my tests slightly faster. Thanks, Signed-off-by: Josef Bacik <josef@redhat.com>
| * | | Btrfs: change reserved_extents to an atomic_tJosef Bacik2011-03-173-21/+29
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We track delayed allocation per inodes via 2 counters, one is outstanding_extents and reserved_extents. Outstanding_extents is already an atomic_t, but reserved_extents is not and is protected by a spinlock. So convert this to an atomic_t and instead of using a spinlock, use atomic_cmpxchg when releasing delalloc bytes. This makes our inode 72 bytes smaller, and reduces locking overhead (albiet it was minimal to begin with). Thanks, Signed-off-by: Josef Bacik <josef@redhat.com>
| * | | Btrfs: fix how we deal with the pages array in the write pathJosef Bacik2011-03-171-4/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Really we don't need to memset the pages array at all, since we know how many pages we're going to use in the array and pass that around. So don't memset, just trust we're not idiots and we pass num_pages around properly. Signed-off-by: Josef Bacik <josef@redhat.com>
| * | | Btrfs: simplify our write pathJosef Bacik2011-03-171-175/+180
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Our aio_write function is huge and kind of hard to follow at times. So this patch fixes this by breaking out the buffered and direct write paths out into seperate functions so it's a little clearer what's going on. I've also fixed some wrong typing that we had and added the ability to handle getting an error back from btrfs_set_extent_delalloc. Tested this with xfstests and everything came out fine. Thanks, Signed-off-by: Josef Bacik <josef@redhat.com>
| * | | Btrfs: fix formatting in file.cJosef Bacik2011-03-171-8/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Sorry, but these were bugging me. Just cleanup some of the formatting in file.c. Signed-off-by: Josef Bacik <josef@redhat.com>
* | | | Merge branch 'upstream-linus' of ↵Linus Torvalds2011-03-2842-1626/+3855
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | git://git.kernel.org/pub/scm/linux/kernel/git/jlbec/ocfs2 * 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jlbec/ocfs2: (39 commits) Treat writes as new when holes span across page boundaries fs,ocfs2: Move o2net_get_func_run_time under CONFIG_OCFS2_FS_STATS. ocfs2/dlm: Move kmalloc() outside the spinlock ocfs2: Make the left masklogs compat. ocfs2: Remove masklog ML_AIO. ocfs2: Remove masklog ML_UPTODATE. ocfs2: Remove masklog ML_BH_IO. ocfs2: Remove masklog ML_JOURNAL. ocfs2: Remove masklog ML_EXPORT. ocfs2: Remove masklog ML_DCACHE. ocfs2: Remove masklog ML_NAMEI. ocfs2: Remove mlog(0) from fs/ocfs2/dir.c ocfs2: remove NAMEI from symlink.c ocfs2: Remove masklog ML_QUOTA. ocfs2: Remove mlog(0) from quota_local.c. ocfs2: Remove masklog ML_RESERVATIONS. ocfs2: Remove masklog ML_XATTR. ocfs2: Remove masklog ML_SUPER. ocfs2: Remove mlog(0) from fs/ocfs2/heartbeat.c ocfs2: Remove mlog(0) from fs/ocfs2/slot_map.c ... Fix up trivial conflict in fs/ocfs2/super.c
| * | | | Treat writes as new when holes span across page boundariesGoldwyn Rodrigues2011-03-281-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When a hole spans across page boundaries, the next write forces a read of the block. This could end up reading existing garbage data from the disk in ocfs2_map_page_blocks. This leads to non-zero holes. In order to avoid this, mark the writes as new when the holes span across page boundaries. Signed-off-by: Goldwyn Rodrigues <rgoldwyn@suse.de> Signed-off-by: jlbec <jlbec@evilplan.org>
| * | | | Merge branch 'mlog_replace_for_39' of git://repo.or.cz/taoma-kernel into ↵Joel Becker2011-03-28141-3234/+6132
| |\ \ \ \ | | | | | | | | | | | | | | | | | | ocfs2-merge-window-fix
| | * | | | ocfs2: Make the left masklogs compat.Tao Ma2011-02-211-17/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since we have removed almost all of the masklogs in fs/ocfs2/*, make the left masklogs compat. Signed-off-by: Tao Ma <boyu.mt@taobao.com>
| | * | | | ocfs2: Remove masklog ML_AIO.Tao Ma2011-02-212-2/+0Star
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There is no user for masklog AIO, so remove it. Signed-off-by: Tao Ma <boyu.mt@taobao.com>
| | * | | | ocfs2: Remove masklog ML_UPTODATE.Tao Ma2011-02-245-41/+79
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Remove mlog(0,...) and mlog(ML_UPTODATE,...) from fs/ocfs2/uptodate.c and fs/ocfs2/buffer_head_io.c. The masklog UPTODATE is removed finally. Signed-off-by: Tao Ma <boyu.mt@taobao.com>
| | * | | | ocfs2: Remove masklog ML_BH_IO.Tao Ma2011-02-244-26/+59
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Remove mlog(0,...) and mlog(ML_BH_IO,...) from fs/ocfs2/buffer_head_io.c. The masklog BH_IO is removed finally. Signed-off-by: Tao Ma <boyu.mt@taobao.com>
| | * | | | ocfs2: Remove masklog ML_JOURNAL.Tao Ma2011-02-244-78/+153
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Remove mlog(0) from fs/ocfs2/journal.c and the masklog JOURNAL. Signed-off-by: Tao Ma <boyu.mt@taobao.com>
| | * | | | ocfs2: Remove masklog ML_EXPORT.Tao Ma2011-02-244-30/+101
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Remove mlog(0) from fs/ocfs2/export.c and the masklog EXPORT. Signed-off-by: Tao Ma <boyu.mt@taobao.com>
| | * | | | ocfs2: Remove masklog ML_DCACHE.Tao Ma2011-02-234-24/+121
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Remove mlog(0) from fs/ocfs2/dcache.c and the masklog DCACHE. Signed-off-by: Tao Ma <boyu.mt@taobao.com>
| | * | | | ocfs2: Remove masklog ML_NAMEI.Tao Ma2011-02-234-71/+292
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Remove mlog(0) from fs/ocfs2/namei.c and the masklog NAMEI finally. Signed-off-by: Tao Ma <boyu.mt@taobao.com>
| | * | | | ocfs2: Remove mlog(0) from fs/ocfs2/dir.cTao Ma2011-02-232-46/+153
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is the 2nd step to remove the debug info of NAMEI. Signed-off-by: Tao Ma <boyu.mt@taobao.com>
| | * | | | ocfs2: remove NAMEI from symlink.cTao Ma2011-02-211-1/+0Star
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | No mlog(0,...) in symlink.c, so just remove NAMEI. Signed-off-by: Tao Ma <boyu.mt@taobao.com>
| | * | | | ocfs2: Remove masklog ML_QUOTA.Tao Ma2011-02-234-14/+90
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Remove mlog(0) from fs/ocfs2/quota_global.c and the masklog QUOTA. Signed-off-by: Tao Ma <boyu.mt@taobao.com>
| | * | | | ocfs2: Remove mlog(0) from quota_local.c.Tao Ma2011-02-232-6/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Remove mlog(0) from fs/ocfs2/quota_local.c. Signed-off-by: Tao Ma <boyu.mt@taobao.com>
| | * | | | ocfs2: Remove masklog ML_RESERVATIONS.Tao Ma2011-02-234-33/+142
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Remove mlog(0) from fs/ocfs2/reservations.c and the masklog RESERVATIONS. Signed-off-by: Tao Ma <boyu.mt@taobao.com>
| | * | | | ocfs2: Remove masklog ML_XATTR.Tao Ma2011-02-234-80/+239
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Remove mlog(0) from fs/ocfs2/xattr.c and the masklog ML_XATTR. Signed-off-by: Tao Ma <boyu.mt@taobao.com>
| | * | | | ocfs2: Remove masklog ML_SUPER.Tao Ma2011-02-234-21/+118
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Remove mlog(0) from fs/ocfs2/super.c and the masklog SUPER. Signed-off-by: Tao Ma <boyu.mt@taobao.com>
| | * | | | ocfs2: Remove mlog(0) from fs/ocfs2/heartbeat.cTao Ma2011-02-232-2/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is the 2nd step to remove the debug info of SUPER. Signed-off-by: Tao Ma <boyu.mt@taobao.com>
| | * | | | ocfs2: Remove mlog(0) from fs/ocfs2/slot_map.cTao Ma2011-02-222-8/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is the 1st step to remove the debug info of SUPER. Signed-off-by: Tao Ma <boyu.mt@taobao.com>
| | * | | | ocfs2: Remove masklog ML_EXTENT_MAP.Tao Ma2011-02-224-5/+31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Remove mlog(0) from fs/ocfs2/extent_map.c and the masklog EXTENT_MAP. Signed-off-by: Tao Ma <boyu.mt@taobao.com>
| | * | | | ocfs2: Remove masklog ML_INODE.Tao Ma2011-02-224-63/+182
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Remove mlog(0) from fs/ocfs2/inode.c and the masklog INODE. Signed-off-by: Tao Ma <boyu.mt@taobao.com>
| | * | | | ocfs2: Little refactoring against ocfs2_iget.Tao Ma2011-02-211-5/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ocfs2_iget is used to get/create inode. Only iget5_locked will give us an inode = NULL. So move this check ahead of ocfs2_read_locked_inode so that we don't need to check inode before we read and unlock inode. This is also helpful for trace event(see the next patch). Signed-off-by: Tao Ma <boyu.mt@taobao.com>
| | * | | | ocfs2: Remove mlog(0) from fs/ocfs2/file.cTao Ma2011-02-223-98/+330
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is the 2nd step to remove the debug info of INODE. Signed-off-by: Tao Ma <boyu.mt@taobao.com>
| | * | | | ocfs2: remove INODE from unused files.Tao Ma2011-02-213-3/+0Star
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | As there are no such debug information in fs/ocfs2/ioctl.c, fs/ocfs2/locks.c and fs/ocfs2/sysfile.c, ML_INODE are also removed. Signed-off-by: Tao Ma <boyu.mt@taobao.com>
| | * | | | ocfs2: Remove FILE_IO from masklog.Tao Ma2011-02-224-6/+28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Change all the "mlog(0," in fs/ocfs2/mmap.c to trace events. And finally remove masklog FILE_IO. Signed-off-by: Tao Ma <boyu.mt@taobao.com>
| | * | | | ocfs2: Remove mlog(0) from fs/ocfs2/aops.cTao Ma2011-02-222-26/+153
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Remove all the "mlog(0," in fs/ocfs2/aops.c. Signed-off-by: Tao Ma <boyu.mt@taobao.com>
| | * | | | ocfs2: Remove masklog ML_REFCOUNT.Tao Ma2011-02-224-82/+341
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Change all the "mlog(0," in fs/ocfs2/refcounttree.c to trace events. And finally remove masklog ML_REFCOUNT. Signed-off-by: Tao Ma <boyu.mt@taobao.com>
| | * | | | ocfs2: Remove DISK_ALLOC from masklog.Tao Ma2011-02-226-6/+0Star
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since all 4 files, localalloc.c, suballoc.c, alloc.c and resize.c, which use DISK_ALLOC are changed to trace events, Remove masklog DISK_ALLOC totally. Signed-off-by: Tao Ma <boyu.mt@taobao.com>
| | * | | | ocfs2: Remove mlog(0) from fs/ocfs2/suballoc.cTao Ma2011-02-222-5/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is the 4th step to remove the debug info of DISK_ALLOC. Signed-off-by: Tao Ma <boyu.mt@taobao.com>
| | * | | | ocfs2: Remove mlog(0) from fs/ocfs2/suballoc.cTao Ma2011-02-222-54/+265
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is the 3rd step to remove the debug info of DISK_ALLOC. Signed-off-by: Tao Ma <boyu.mt@taobao.com>
| | * | | | ocfs2: Remove mlog(0) from fs/ocfs2/localalloc.cTao Ma2011-02-222-34/+135
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is the 2nd step to remove the debug info of DISK_ALLOC. So this patch removes all mlog(0,...) from localalloc.c and adds the corresponding tracepoints. Different mlogs have different solutions. 1. Some are replaced with trace event directly. 2. Some are replaced while some new parameters are added. 3. Some are combined into one trace events. 4. Some redundant mlogs are removed. Signed-off-by: Tao Ma <boyu.mt@taobao.com>
| | * | | | ocfs2: Remove mlog(0) from fs/ocfs2/alloc.cTao Ma2011-02-222-77/+452
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is the first try of replacing debug mlog(0,...) to trace events. Wengang has did some work in his original patch http://oss.oracle.com/pipermail/ocfs2-devel/2009-November/005513.html But he didn't finished it. So this patch removes all mlog(0,...) from alloc.c and adds the corresponding trace events. Different mlogs have different solutions. 1. Some are replaced with trace event directly. 2. Some are replaced and some new parameters are added since I think we need to know the btree owner in that case. 3. Some are combined into one trace events. 4. Some redundant mlogs are removed. What's more, it defines some event classes so that we can use them later. Cc: Wengang Wang <wen.gang.wang@oracle.com> Signed-off-by: Tao Ma <boyu.mt@taobao.com>
| | * | | | ocfs2: Add ocfs2_trace.h.Wengang Wang2011-02-212-0/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | About one year ago, Wengang Wang tried some first steps to add tracepoints to ocfs2. Hiss original patch is here: http://oss.oracle.com/pipermail/ocfs2-devel/2009-November/005512.html But as Steven Rostedt indicated in his article http://lwn.net/Articles/383362/, we'd better have our trace files resides in fs/ocfs2, so I rewrited the patch using the method Steven mentioned in that article. Signed-off-by: Wengang Wang <wen.gang.wang@oracle.com> Signed-off-by: Tao Ma <boyu.mt@taobao.com>
| | * | | | ocfs2: Remove EXIT from masklog.Tao Ma2011-03-0727-315/+159Star
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | mlog_exit is used to record the exit status of a function. But because it is added in so many functions, if we enable it, the system logs get filled up quickly and cause too much I/O. So actually no one can open it for a production system or even for a test. This patch just try to remove it or change it. So: 1. if all the error paths already use mlog_errno, it is just removed. Otherwise, it will be replaced by mlog_errno. 2. if it is used to print some return value, it is replaced with mlog(0,...). mlog_exit_ptr is changed to mlog(0. All those mlog(0,...) will be replaced with trace events later. Signed-off-by: Tao Ma <boyu.mt@taobao.com>
| | * | | | ocfs2: Remove ENTRY from masklog.Tao Ma2011-02-2131-418/+161Star
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ENTRY is used to record the entry of a function. But because it is added in so many functions, if we enable it, the system logs get filled up quickly and cause too much I/O. So actually no one can open it for a production system or even for a test. So for mlog_entry_void, we just remove it. for mlog_entry(...), we replace it with mlog(0,...), and they will be replace by trace event later. Signed-off-by: Tao Ma <boyu.mt@taobao.com>