[Linux-cluster] gfs1 and 2.6.20

Robert Peterson rpeterso at redhat.com
Thu Feb 22 16:06:25 UTC 2007


Asbjørn Sannes wrote:
>> Great! I tried to figure out why the s_umount semaphore was not upped by
>> comparing to other filesystems, but the functions seems almost identical
>> .. so I cheated and looked what had changed lately (from your patch):
>>
>> diff -w -u -p -p -u -r1.1.2.1.4.1.2.1 diaper.c
>> --- gfs-kernel/src/gfs/diaper.c	26 Jun 2006 21:53:51 -0000	1.1.2.1.4.1.2.1
>> +++ gfs-kernel/src/gfs/diaper.c	2 Feb 2007 22:28:41 -0000
>> @@ -50,7 +50,7 @@ static int diaper_major = 0;
>>  static LIST_HEAD(diaper_list);
>>  static spinlock_t diaper_lock;
>>  static DEFINE_IDR(diaper_idr);
>> -kmem_cache_t *diaper_slab;
>> +struct kmem_cache *diaper_slab;
>>  
>>  /**
>>   * diaper_open -
>> @@ -232,9 +232,9 @@ get_dummy_sb(struct diaper_holder *dh)
>>  	struct inode *inode;
>>  	int error;
>>  
>> -	mutex_lock(&real->bd_mount_mutex);
>> +	down(&real->bd_mount_sem);
>>  	sb = sget(&gfs_fs_type, gfs_test_bdev_super, gfs_set_bdev_super, real);
>> -	mutex_unlock(&real->bd_mount_mutex);
>> +	up(&real->bd_mount_sem);
>>  	if (IS_ERR(sb))
>>  		return PTR_ERR(sb);
>>  
>> @@ -252,7 +252,6 @@ get_dummy_sb(struct diaper_holder *dh)
>>  	sb->s_op = &gfs_dummy_sops;
>>  	sb->s_fs_info = dh;
>>  
>> -	up_write(&sb->s_umount);
>>  	module_put(gfs_fs_type.owner);
>>  
>>  	dh->dh_dummy_sb = sb;
>> @@ -263,7 +262,6 @@ get_dummy_sb(struct diaper_holder *dh)
>>  	iput(inode);
>>  
>>   fail:
>> -	up_write(&sb->s_umount);
>>  	deactivate_super(sb);
>>  	return error;
>>  }
>>
>>
>>
>> And undid those up_write ones (added them back in), which helped, I
>> don't know if it safe though, and maybe you could shed some lights on
>> why they were removed? (I didn't find any changes that would do up_write
>> on s_umount later..
>>   
>>     
> Actually, it didn't enjoy unmount as much ..
>
> Mvh,
> Asbjørn Sannes
>   
Hi Asbjørn,

I took them out because I noticed the problem with umount and I knew that
the HEAD version didn't do it.  Of course, that's because it doesn't have a
diaper device whereas STABLE still does.  I've just got to spend a 
little time
with it, that's all.  It's probably something simple.

Regards,

Bob Peterson
Red Hat Cluster Suite




More information about the Linux-cluster mailing list