Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mfasheh/ocfs2

* 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mfasheh/ocfs2:
ocfs2: fix regression in ocfs2_read_blocks_sync()
ocfs2: fix return value set in init_dlmfs_fs()
ocfs2: Small documentation update
ocfs2: fix wake_up in unlock_ast
ocfs2: initialize stack_user lvbptr
ocfs2: comments typo fix

+13 -19
-3
Documentation/filesystems/ocfs2.txt
··· 28 28 Caveats 29 29 ======= 30 30 Features which OCFS2 does not support yet: 31 - - extended attributes 32 31 - quotas 33 - - cluster aware flock 34 - - cluster aware lockf 35 32 - Directory change notification (F_NOTIFY) 36 33 - Distributed Caching (F_SETLEASE/F_GETLEASE/break_lease) 37 34 - POSIX ACLs
+4 -11
fs/ocfs2/buffer_head_io.c
··· 112 112 bh = bhs[i]; 113 113 114 114 if (buffer_jbd(bh)) { 115 - mlog(ML_ERROR, 115 + mlog(ML_BH_IO, 116 116 "trying to sync read a jbd " 117 117 "managed bh (blocknr = %llu), skipping\n", 118 118 (unsigned long long)bh->b_blocknr); ··· 147 147 for (i = nr; i > 0; i--) { 148 148 bh = bhs[i - 1]; 149 149 150 - if (buffer_jbd(bh)) { 151 - mlog(ML_ERROR, 152 - "the journal got the buffer while it was " 153 - "locked for io! (blocknr = %llu)\n", 154 - (unsigned long long)bh->b_blocknr); 155 - BUG(); 156 - } 150 + /* No need to wait on the buffer if it's managed by JBD. */ 151 + if (!buffer_jbd(bh)) 152 + wait_on_buffer(bh); 157 153 158 - wait_on_buffer(bh); 159 154 if (!buffer_uptodate(bh)) { 160 155 /* Status won't be cleared from here on out, 161 156 * so we can safely record this and loop back ··· 246 251 ignore_cache = 1; 247 252 } 248 253 249 - /* XXX: Can we ever get this and *not* have the cached 250 - * flag set? */ 251 254 if (buffer_jbd(bh)) { 252 255 if (ignore_cache) 253 256 mlog(ML_BH_IO, "trying to sync read a jbd "
+3 -1
fs/ocfs2/dlm/dlmfs.c
··· 608 608 0, (SLAB_HWCACHE_ALIGN|SLAB_RECLAIM_ACCOUNT| 609 609 SLAB_MEM_SPREAD), 610 610 dlmfs_init_once); 611 - if (!dlmfs_inode_cache) 611 + if (!dlmfs_inode_cache) { 612 + status = -ENOMEM; 612 613 goto bail; 614 + } 613 615 cleanup_inode = 1; 614 616 615 617 user_dlm_worker = create_singlethread_workqueue("user_dlm");
+1 -1
fs/ocfs2/dlm/userdlm.h
··· 33 33 #include <linux/workqueue.h> 34 34 35 35 /* user_lock_res->l_flags flags. */ 36 - #define USER_LOCK_ATTACHED (0x00000001) /* have we initialized 36 + #define USER_LOCK_ATTACHED (0x00000001) /* we have initialized 37 37 * the lvb */ 38 38 #define USER_LOCK_BUSY (0x00000002) /* we are currently in 39 39 * dlm_lock */
+1 -2
fs/ocfs2/dlmglue.c
··· 2841 2841 2842 2842 lockres_clear_flags(lockres, OCFS2_LOCK_BUSY); 2843 2843 lockres->l_unlock_action = OCFS2_UNLOCK_INVALID; 2844 - spin_unlock_irqrestore(&lockres->l_lock, flags); 2845 - 2846 2844 wake_up(&lockres->l_event); 2845 + spin_unlock_irqrestore(&lockres->l_lock, flags); 2847 2846 2848 2847 mlog_exit_void(); 2849 2848 }
+1 -1
fs/ocfs2/ocfs2.h
··· 85 85 }; 86 86 87 87 /* ocfs2_lock_res->l_flags flags. */ 88 - #define OCFS2_LOCK_ATTACHED (0x00000001) /* have we initialized 88 + #define OCFS2_LOCK_ATTACHED (0x00000001) /* we have initialized 89 89 * the lvb */ 90 90 #define OCFS2_LOCK_BUSY (0x00000002) /* we are currently in 91 91 * dlm_lock */
+3
fs/ocfs2/stack_user.c
··· 740 740 741 741 static void *user_dlm_lvb(union ocfs2_dlm_lksb *lksb) 742 742 { 743 + if (!lksb->lksb_fsdlm.sb_lvbptr) 744 + lksb->lksb_fsdlm.sb_lvbptr = (char *)lksb + 745 + sizeof(struct dlm_lksb); 743 746 return (void *)(lksb->lksb_fsdlm.sb_lvbptr); 744 747 } 745 748