diff options
Diffstat (limited to 'fs/ocfs2/super.c')
| -rw-r--r-- | fs/ocfs2/super.c | 25 | 
1 files changed, 16 insertions, 9 deletions
diff --git a/fs/ocfs2/super.c b/fs/ocfs2/super.c index 56f61027236..4994f8b0e60 100644 --- a/fs/ocfs2/super.c +++ b/fs/ocfs2/super.c @@ -54,6 +54,7 @@  #include "ocfs1_fs_compat.h"  #include "alloc.h" +#include "aops.h"  #include "blockcheck.h"  #include "dlmglue.h"  #include "export.h" @@ -1107,9 +1108,9 @@ static int ocfs2_fill_super(struct super_block *sb, void *data, int silent)  		ocfs2_set_ro_flag(osb, 1); -		printk(KERN_NOTICE "Readonly device detected. No cluster " -		       "services will be utilized for this mount. Recovery " -		       "will be skipped.\n"); +		printk(KERN_NOTICE "ocfs2: Readonly device (%s) detected. " +		       "Cluster services will not be used for this mount. " +		       "Recovery will be skipped.\n", osb->dev_str);  	}  	if (!ocfs2_is_hard_readonly(osb)) { @@ -1616,12 +1617,17 @@ static int ocfs2_show_options(struct seq_file *s, struct vfsmount *mnt)  	return 0;  } +wait_queue_head_t ocfs2__ioend_wq[OCFS2_IOEND_WQ_HASH_SZ]; +  static int __init ocfs2_init(void)  { -	int status; +	int status, i;  	ocfs2_print_version(); +	for (i = 0; i < OCFS2_IOEND_WQ_HASH_SZ; i++) +		init_waitqueue_head(&ocfs2__ioend_wq[i]); +  	status = init_ocfs2_uptodate_cache();  	if (status < 0) {  		mlog_errno(status); @@ -1760,7 +1766,7 @@ static void ocfs2_inode_init_once(void *data)  	ocfs2_extent_map_init(&oi->vfs_inode);  	INIT_LIST_HEAD(&oi->ip_io_markers);  	oi->ip_dir_start_lookup = 0; - +	atomic_set(&oi->ip_unaligned_aio, 0);  	init_rwsem(&oi->ip_alloc_sem);  	init_rwsem(&oi->ip_xattr_sem);  	mutex_init(&oi->ip_io_mutex); @@ -1974,7 +1980,8 @@ static void ocfs2_dismount_volume(struct super_block *sb, int mnt_err)  	 * If we failed before we got a uuid_str yet, we can't stop  	 * heartbeat.  Otherwise, do it.  	 */ -	if (!mnt_err && !ocfs2_mount_local(osb) && osb->uuid_str) +	if (!mnt_err && !ocfs2_mount_local(osb) && osb->uuid_str && +	    !ocfs2_is_hard_readonly(osb))  		hangup_needed = 1;  	if (osb->cconn) @@ -2353,7 +2360,7 @@ static int ocfs2_initialize_super(struct super_block *sb,  		mlog_errno(status);  		goto bail;  	} -	cleancache_init_shared_fs((char *)&uuid_net_key, sb); +	cleancache_init_shared_fs((char *)&di->id2.i_super.s_uuid, sb);  bail:  	return status; @@ -2462,8 +2469,8 @@ static int ocfs2_check_volume(struct ocfs2_super *osb)  			goto finally;  		}  	} else { -		mlog(ML_NOTICE, "File system was not unmounted cleanly, " -		     "recovering volume.\n"); +		printk(KERN_NOTICE "ocfs2: File system on device (%s) was not " +		       "unmounted cleanly, recovering it.\n", osb->dev_str);  	}  	local = ocfs2_mount_local(osb);  |