Commit c3c8149b authored by Russell King's avatar Russell King Committed by Al Viro
Browse files

fs/adfs: dir: add helper to mark directory buffers dirty



Provide a helper for marking directory buffers dirty so they get
written back to disk.

Signed-off-by: default avatarRussell King <rmk+kernel@armlinux.org.uk>
Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent 90011c7a
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -157,6 +157,15 @@ static int adfs_dir_read_inode(struct super_block *sb, struct inode *inode,
	return ret;
}

static void adfs_dir_mark_dirty(struct adfs_dir *dir)
{
	unsigned int i;

	/* Mark the buffers dirty */
	for (i = 0; i < dir->nr_buffers; i++)
		mark_buffer_dirty(dir->bhs[i]);
}

static int adfs_dir_sync(struct adfs_dir *dir)
{
	int err = 0;
@@ -280,6 +289,9 @@ adfs_dir_update(struct super_block *sb, struct object_info *obj, int wait)
	ret = ops->update(&dir, obj);
	write_unlock(&adfs_dir_lock);

	if (ret == 0)
		adfs_dir_mark_dirty(&dir);

	if (wait) {
		int err = adfs_dir_sync(&dir);
		if (!ret)
+1 −4
Original line number Diff line number Diff line
@@ -306,7 +306,7 @@ static int
adfs_f_update(struct adfs_dir *dir, struct object_info *obj)
{
	struct super_block *sb = dir->sb;
	int ret, i;
	int ret;

	ret = adfs_dir_find_entry(dir, obj->indaddr);
	if (ret < 0) {
@@ -347,9 +347,6 @@ adfs_f_update(struct adfs_dir *dir, struct object_info *obj)
		goto bad_dir;
	}
#endif
	for (i = dir->nr_buffers - 1; i >= 0; i--)
		mark_buffer_dirty(dir->bh[i]);

	ret = 0;
out:
	return ret;