From: Stephen Rothwell on
Hi Jan,

Today's linux-next merge of the ext3 tree got a conflict in fs/super.c
between commits b20bd1a5e78af267dc4b6e1ffed48d5d776302c5 ("get rid of
S_BIAS"), 1712ac8fda7d8bc4dc921f5777b7423aacad7263 ("Saner locking around
deactivate_super()") and e1e46bf1866317d4f86f66bf18d3f07317d9f9ee ("Trim
includes in fs/super.c") from Linus' tree and commits
c3134141c78d5ea233a08b703b553e70cfb5c585 ("quota: move unmount handling
into the filesystem") and cdb89ca659f5a39edf88f3c55e545ea3347533d1
("quota: explicitly set ->dq_op and ->s_qcop") from the ext3 tree.

I fixed it all up (see below) and can carry the fix for a while.
--
Cheers,
Stephen Rothwell sfr(a)canb.auug.org.au

diff --cc fs/super.c
index 69688b1,2e0811f..0000000
--- a/fs/super.c
+++ b/fs/super.c
@@@ -22,15 -22,22 +22,14 @@@

#include <linux/module.h>
#include <linux/slab.h>
-#include <linux/init.h>
-#include <linux/smp_lock.h>
#include <linux/acct.h>
#include <linux/blkdev.h>
- #include <linux/quotaops.h>
-#include <linux/namei.h>
#include <linux/mount.h>
#include <linux/security.h>
-#include <linux/syscalls.h>
-#include <linux/vfs.h>
#include <linux/writeback.h> /* for the emergency remount stuff */
#include <linux/idr.h>
-#include <linux/kobject.h>
#include <linux/mutex.h>
-#include <linux/file.h>
#include <linux/backing-dev.h>
-#include <asm/uaccess.h>
#include "internal.h"


@@@ -146,21 -175,21 +143,20 @@@ void put_super(struct super_block *sb


/**
- * deactivate_super - drop an active reference to superblock
+ * deactivate_locked_super - drop an active reference to superblock
* @s: superblock to deactivate
*
- * Drops an active reference to superblock, acquiring a temprory one if
- * there is no active references left. In that case we lock superblock,
+ * Drops an active reference to superblock, converting it into a temprory
+ * one if there is no other active references left. In that case we
* tell fs driver to shut it down and drop the temporary reference we
* had just acquired.
+ *
+ * Caller holds exclusive lock on superblock; that lock is released.
*/
-void deactivate_super(struct super_block *s)
+void deactivate_locked_super(struct super_block *s)
{
struct file_system_type *fs = s->s_type;
- if (atomic_dec_and_lock(&s->s_active, &sb_lock)) {
- s->s_count -= S_BIAS-1;
- spin_unlock(&sb_lock);
- down_write(&s->s_umount);
+ if (atomic_dec_and_test(&s->s_active)) {
- vfs_dq_off(s, 0);
fs->kill_sb(s);
put_filesystem(fs);
put_super(s);
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo(a)vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
From: Jan Kara on
Hi Stephen,

On Sat 22-05-10 15:45:32, Stephen Rothwell wrote:
> Today's linux-next merge of the ext3 tree got a conflict in fs/super.c
> between commits b20bd1a5e78af267dc4b6e1ffed48d5d776302c5 ("get rid of
> S_BIAS"), 1712ac8fda7d8bc4dc921f5777b7423aacad7263 ("Saner locking around
> deactivate_super()") and e1e46bf1866317d4f86f66bf18d3f07317d9f9ee ("Trim
> includes in fs/super.c") from Linus' tree and commits
> c3134141c78d5ea233a08b703b553e70cfb5c585 ("quota: move unmount handling
> into the filesystem") and cdb89ca659f5a39edf88f3c55e545ea3347533d1
> ("quota: explicitly set ->dq_op and ->s_qcop") from the ext3 tree.
Thanks! I've now rebased for_next branch on recent Linus's tree and
so this conflict should go away.

Honza
--
Jan Kara <jack(a)suse.cz>
SUSE Labs, CR
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo(a)vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/