lkml.org 
[lkml]   [2012]   [Jul]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCHv2 1/6] hfs: push lock_super down
    Date
    From: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>

    HFS uses 'lock_super()'/'unlock_super()' around 'hfs_mdb_commit()' in order
    to serialize MDB (Master Directory Block) changes. Push it down to
    'hfs_mdb_commit()' in order to simplify the code a bit.

    Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
    ---
    fs/hfs/inode.c | 2 --
    fs/hfs/mdb.c | 2 ++
    fs/hfs/super.c | 4 ----
    3 files changed, 2 insertions(+), 6 deletions(-)

    diff --git a/fs/hfs/inode.c b/fs/hfs/inode.c
    index 761ec06..daf3d63 100644
    --- a/fs/hfs/inode.c
    +++ b/fs/hfs/inode.c
    @@ -645,11 +645,9 @@ static int hfs_file_fsync(struct file *filp, loff_t start, loff_t end,
    /* sync the superblock to buffers */
    sb = inode->i_sb;
    if (sb->s_dirt) {
    - lock_super(sb);
    sb->s_dirt = 0;
    if (!(sb->s_flags & MS_RDONLY))
    hfs_mdb_commit(sb);
    - unlock_super(sb);
    }
    /* .. finally sync the buffers to disk */
    err = sync_blockdev(sb->s_bdev);
    diff --git a/fs/hfs/mdb.c b/fs/hfs/mdb.c
    index 1563d5c..3f558d58 100644
    --- a/fs/hfs/mdb.c
    +++ b/fs/hfs/mdb.c
    @@ -260,6 +260,7 @@ void hfs_mdb_commit(struct super_block *sb)
    {
    struct hfs_mdb *mdb = HFS_SB(sb)->mdb;

    + lock_super(sb);
    if (test_and_clear_bit(HFS_FLG_MDB_DIRTY, &HFS_SB(sb)->flags)) {
    /* These parameters may have been modified, so write them back */
    mdb->drLsMod = hfs_mtime();
    @@ -317,6 +318,7 @@ void hfs_mdb_commit(struct super_block *sb)
    size -= len;
    }
    }
    + unlock_super(sb);
    }

    void hfs_mdb_close(struct super_block *sb)
    diff --git a/fs/hfs/super.c b/fs/hfs/super.c
    index 7b4c537..f7c06bb 100644
    --- a/fs/hfs/super.c
    +++ b/fs/hfs/super.c
    @@ -50,21 +50,17 @@ MODULE_LICENSE("GPL");
    */
    static void hfs_write_super(struct super_block *sb)
    {
    - lock_super(sb);
    sb->s_dirt = 0;

    /* sync everything to the buffers */
    if (!(sb->s_flags & MS_RDONLY))
    hfs_mdb_commit(sb);
    - unlock_super(sb);
    }

    static int hfs_sync_fs(struct super_block *sb, int wait)
    {
    - lock_super(sb);
    hfs_mdb_commit(sb);
    sb->s_dirt = 0;
    - unlock_super(sb);

    return 0;
    }
    --
    1.7.7.6


    \
     
     \ /
      Last update: 2012-07-12 17:01    [W:2.400 / U:0.412 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site