aboutsummaryrefslogtreecommitdiffstats
path: root/fs/ocfs2
Commit message (Collapse)AuthorAgeFilesLines
* ocfs2/dlm: Target node death during resource migration leads to thread spinSunil Mushran2011-05-131-0/+3
| | | | | | | | | During resource migration, if the target node were to die, the thread doing the migration spins until the target node is not removed from the domain map. This patch slows the spin by making the thread wait for the recovery to kick in. Signed-off-by: Sunil Mushran <sunil.mushran@oracle.com> Signed-off-by: Joel Becker <jlbec@evilplan.org>
* ocfs2: Skip mount recovery for hard-ro mountsSunil Mushran2011-05-131-0/+3
| | | | | | | | Patch skips mount recovery for hard-ro mounts which otherwise leads to an oops. Signed-off-by: Sunil Mushran <sunil.mushran@oracle.com> Acked-by: Mark Fasheh <mfasheh@suse.com> Signed-off-by: Joel Becker <jlbec@evilplan.org>
* ocfs2/cluster: Heartbeat mismatch message improvedSunil Mushran2011-05-131-17/+31
| | | | | | | | | | | | If o2hb finds unexpected values in the heartbeat slot, it prints a message "ERROR: Device "dm-6": another node is heartbeating in our slot!" This message could be misleading. This patch adds two more messages to help users better diagnose the problem. Signed-off-by: Sunil Mushran <sunil.mushran@oracle.com> Acked-by: Mark Fasheh <mfasheh@suse.com> Signed-off-by: Joel Becker <jlbec@evilplan.org>
* ocfs2/cluster: Increase the live threshold for global heartbeatSunil Mushran2011-05-131-1/+12
| | | | | | | | | | | | | | | | | | | | | | | | We have seen isolated cases (very few, I might add) of o2hb not detecting all live nodes on startup. One plausible reasoning for it is that other node had a hb io delay at the same time. The live threshold set at 2 (as low as it can be) could be increased to ameliorate the situation. But increasing the threshold directly affects mount time. Currently it takes around 5 secs to mount a volume in o2cb cluster with local heartbeat. Increasing the threshold will make mounts even slower. As the issue itself is rare, we have left things as they are for the local heartbeat mode. However we can improve the situation for global heartbeat mode as in that mode, we start the heartbeat much before the mount. This patch doubles the live threshold for the start of the first region in global heartbeat mode. Addresses internal Oracle bug#10635585. Signed-off-by: Sunil Mushran <sunil.mushran@oracle.com> Acked-by: Mark Fasheh <mfasheh@suse.com> Signed-off-by: Joel Becker <jlbec@evilplan.org>
* ocfs2/dlm: Use negotiated o2dlm protocol versionSunil Mushran2011-05-131-1/+2
| | | | | | | | | | | | | | Patch fixes a bug in the o2dlm protocol negotiation in that it is using the builtin version rather than the negotiated version during the domain join. This causes join errors when a node having kernel >= 2.6.37 joins a cluster with nodes having kernels < 2.6.37. This only affects the o2cb cluster stack. Signed-off-by: Sunil Mushran <sunil.mushran@oracle.com> Reported-by: Jacek Stepniewski <Jacek.Stepniewski@agora.pl> Acked-by: Mark Fasheh <mfasheh@suse.com> Signed-off-by: Joel Becker <jlbec@evilplan.org>
* ocfs2: skip existing hole when removing the last extent_rec in punching-hole ↵Tristan Ye2011-05-131-0/+12
| | | | | | | | | | | | | | | | | codes. In the case of removing a partial extent record which covers a hole, current punching-hole logic will try to remove more than the length of whole extent record, which leads to the failure of following assert(fs/ocfs2/alloc.c): 5507 BUG_ON(cpos < le32_to_cpu(rec->e_cpos) || trunc_range > rec_range); This patch tries to skip existing hole at the last attempt of removing a partial extent record, what's more, it also adds some necessary comments for better understanding of punching-hole codes. Signed-off-by: Tristan Ye <tristan.ye@oracle.com> Signed-off-by: Joel Becker <jlbec@evilplan.org>
* ocfs2: Initialize data_ac (might be used uninitialized)Marcus Meissner2011-05-131-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | CLANG found that there is a path that has data_ac uninitialized, this place 2917 /* This gets us the dx_root */ 2918 ret = ocfs2_reserve_new_metadata_blocks(osb, 1, &meta_ac); 2919 if (ret) { 3 Taking true branch 2920 mlog_errno(ret); 2921 goto out; 4 Control jumps to line 3168 2922 } Goes to the out: label without data_ac being initialized. Ciao, Marcus Signed-Off-By: Marcus Meissner <meissner@suse.de> Signed-off-by: Mark Fasheh <mfasheh@suse.com> Signed-off-by: Joel Becker <jlbec@evilplan.org>
* Revert wrong fixes for common misspellingsLucas De Marchi2011-04-261-1/+1
| | | | | | | These changes were incorrectly fixed by codespell. They were now manually corrected. Signed-off-by: Lucas De Marchi <lucas.demarchi@profusion.mobi>
* Fix common misspellingsLucas De Marchi2011-03-3117-23/+23
| | | | | | Fixes generated by 'codespell' and manually reviewed. Signed-off-by: Lucas De Marchi <lucas.demarchi@profusion.mobi>
* 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-2841-1557/+3763
| |\ | | | | | | | | | 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/+0
| | | | | | | | | | | | | | | | | | 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/+0
| | | | | | | | | | | | | | | | | | 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/+0
| | | | | | | | | | | | | | | | | | | | | | | | 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/+0
| | | | | | | | | | | | | | | | | | | | | | | | 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/+159
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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/+161
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
| * | fs,ocfs2: Move o2net_get_func_run_time under CONFIG_OCFS2_FS_STATS.Rakib Mullick2011-03-281-5/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When CONFIG_DEBUG_FS=y and CONFIG_OCFS2_FS_STATS=n, we get the following warning: fs/ocfs2/cluster/tcp.c:213:16: warning: ‘o2net_get_func_run_time’ defined but not used Since o2net_get_func_run_time is only called from o2net_update_recv_stats, so move it under CONFIG_OCFS2_FS_STATS. Signed-off-by: Rakib Mullick <rakib.mullick@gmail.com> Signed-off-by: jlbec <jlbec@evilplan.org>
| * | ocfs2/dlm: Move kmalloc() outside the spinlockSunil Mushran2011-02-221-12/+16
| | | | | | | | | | | | | | | | | | | | | | | | In dlm_query_region_handler(), move the kmalloc outside the spinlock. This allows us to use GFP_KERNEL instead of GFP_ATOMIC. Signed-off-by: Sunil Mushran <sunil.mushran@oracle.com> Signed-off-by: Joel Becker <jlbec@evilplan.org>
| * | Ocfs2: Using macro to set/clear *FILLED* flags in info handler.Tristan Ye2011-02-201-8/+30
| | | | | | | | | | | | | | | | | | | | | It's a best-effort attempt to simplize duplicated codes here. Signed-off-by: Tristan Ye <tristan.ye@oracle.com> Signed-off-by: Joel Becker <jlbec@evilplan.org>
| * | ocfs2: optimize ocfs2_check_dir_entry() with unlikely() annotationsTao Ma2011-02-201-5/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In cad3f00, ext4_check_dir_entry was modified by adding some unlikely. Ted described it as "This function gets called a lot for large directories, and the answer is almost always 'no, no, there's no problem'. This means using unlikely() is a good thing." ext3 added the similar change in commit a4ae309. So change it accordingly in ocfs2. Cc: Joel Becker <jlbec@evilplan.org> Signed-off-by: Tao Ma <boyu.mt@taobao.com> Signed-off-by: Joel Becker <jlbec@evilplan.org>
| * | ocfs2: Use hrtimer to track ocfs2 fs lock statsSunil Mushran2011-02-202-56/+64
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Patch makes use of the hrtimer to track times in ocfs2 lock stats. The patch is a bit involved to ensure no additional impact on the memory footprint. The size of ocfs2_inode_cache remains 1280 bytes on 32-bit systems. A related change was to modify the unit of the max wait time from nanosec to microsec allowing us to track max time larger than 4 secs. This change necessitated the bumping of the output version in the debugfs file, locking_state, from 2 to 3. Signed-off-by: Sunil Mushran <sunil.mushran@oracle.com> Signed-off-by: Joel Becker <jlbec@evilplan.org>