diff options
Diffstat (limited to 'fs/hfs/inode.c')
| -rw-r--r-- | fs/hfs/inode.c | 16 | 
1 files changed, 5 insertions, 11 deletions
diff --git a/fs/hfs/inode.c b/fs/hfs/inode.c index 761ec06354b..ee1bc55677f 100644 --- a/fs/hfs/inode.c +++ b/fs/hfs/inode.c @@ -220,7 +220,7 @@ struct inode *hfs_new_inode(struct inode *dir, struct qstr *name, umode_t mode)  	insert_inode_hash(inode);  	mark_inode_dirty(inode);  	set_bit(HFS_FLG_MDB_DIRTY, &HFS_SB(sb)->flags); -	sb->s_dirt = 1; +	hfs_mark_mdb_dirty(sb);  	return inode;  } @@ -235,7 +235,7 @@ void hfs_delete_inode(struct inode *inode)  		if (HFS_I(inode)->cat_key.ParID == cpu_to_be32(HFS_ROOT_CNID))  			HFS_SB(sb)->root_dirs--;  		set_bit(HFS_FLG_MDB_DIRTY, &HFS_SB(sb)->flags); -		sb->s_dirt = 1; +		hfs_mark_mdb_dirty(sb);  		return;  	}  	HFS_SB(sb)->file_count--; @@ -248,7 +248,7 @@ void hfs_delete_inode(struct inode *inode)  		}  	}  	set_bit(HFS_FLG_MDB_DIRTY, &HFS_SB(sb)->flags); -	sb->s_dirt = 1; +	hfs_mark_mdb_dirty(sb);  }  void hfs_inode_read_fork(struct inode *inode, struct hfs_extent *ext, @@ -489,7 +489,7 @@ out:  }  static struct dentry *hfs_file_lookup(struct inode *dir, struct dentry *dentry, -				      struct nameidata *nd) +				      unsigned int flags)  {  	struct inode *inode = NULL;  	hfs_cat_rec rec; @@ -644,13 +644,7 @@ 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); -	} +	flush_delayed_work_sync(&HFS_SB(sb)->mdb_work);  	/* .. finally sync the buffers to disk */  	err = sync_blockdev(sb->s_bdev);  	if (!ret)  |