Messages in this thread Patch in this message | | | From | Artem Bityutskiy <> | Subject | [PATCH 5/7] affs: stop using lock_super | Date | Tue, 5 Jun 2012 14:28:13 +0300 |
| |
From: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
The VFS's 'lock_super()' and 'unlock_super()' calls are deprecated and unwanted and just wait for a brave knight who'd kill them. This patch makes AFFS stop using them and introduces own AFFS superblock mutex which we use for serializeing the root block changes.
Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com> --- fs/affs/affs.h | 1 + fs/affs/super.c | 5 +++-- 2 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/fs/affs/affs.h b/fs/affs/affs.h index 45a0ce4..b8af745 100644 --- a/fs/affs/affs.h +++ b/fs/affs/affs.h @@ -108,6 +108,7 @@ struct affs_sb_info { char *s_prefix; /* Prefix for volumes and assigns. */ char s_volume[32]; /* Volume prefix for absolute symlinks. */ spinlock_t symlink_lock; /* protects the previous two */ + struct mutex s_lock; /* protects the SB's buffer-head */ }; #define SF_INTL 0x0001 /* International filesystem. */ diff --git a/fs/affs/super.c b/fs/affs/super.c index 8293cb9..8674915 100644 --- a/fs/affs/super.c +++ b/fs/affs/super.c @@ -31,14 +31,14 @@ affs_commit_super(struct super_block *sb, int wait) struct buffer_head *bh = sbi->s_root_bh; struct affs_root_tail *tail = AFFS_ROOT_TAIL(sb, bh); - lock_super(sb); + mutex_lock(&sbi->s_lock); tail->bm_flag = cpu_to_be32(2); secs_to_datestamp(get_seconds(), &tail->disk_change); affs_fix_checksum(sb, bh); mark_buffer_dirty(bh); if (wait) sync_dirty_buffer(bh); - unlock_super(sb); + mutex_unlock(&sbi->s_lock); } static void @@ -299,6 +299,7 @@ static int affs_fill_super(struct super_block *sb, void *data, int silent) return -ENOMEM; sb->s_fs_info = sbi; + mutex_init(&sbi->s_lock); mutex_init(&sbi->s_bmlock); spin_lock_init(&sbi->symlink_lock); -- 1.7.7.6
| |