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: Russell King <rmk+kernel@armlinux.org.uk> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
@@ -157,6 +157,15 @@ static int adfs_dir_read_inode(struct super_block *sb, struct inode *inode,
|
|||||||
return ret;
|
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)
|
static int adfs_dir_sync(struct adfs_dir *dir)
|
||||||
{
|
{
|
||||||
int err = 0;
|
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);
|
ret = ops->update(&dir, obj);
|
||||||
write_unlock(&adfs_dir_lock);
|
write_unlock(&adfs_dir_lock);
|
||||||
|
|
||||||
|
if (ret == 0)
|
||||||
|
adfs_dir_mark_dirty(&dir);
|
||||||
|
|
||||||
if (wait) {
|
if (wait) {
|
||||||
int err = adfs_dir_sync(&dir);
|
int err = adfs_dir_sync(&dir);
|
||||||
if (!ret)
|
if (!ret)
|
||||||
|
@@ -306,7 +306,7 @@ static int
|
|||||||
adfs_f_update(struct adfs_dir *dir, struct object_info *obj)
|
adfs_f_update(struct adfs_dir *dir, struct object_info *obj)
|
||||||
{
|
{
|
||||||
struct super_block *sb = dir->sb;
|
struct super_block *sb = dir->sb;
|
||||||
int ret, i;
|
int ret;
|
||||||
|
|
||||||
ret = adfs_dir_find_entry(dir, obj->indaddr);
|
ret = adfs_dir_find_entry(dir, obj->indaddr);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
@@ -347,9 +347,6 @@ adfs_f_update(struct adfs_dir *dir, struct object_info *obj)
|
|||||||
goto bad_dir;
|
goto bad_dir;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
for (i = dir->nr_buffers - 1; i >= 0; i--)
|
|
||||||
mark_buffer_dirty(dir->bh[i]);
|
|
||||||
|
|
||||||
ret = 0;
|
ret = 0;
|
||||||
out:
|
out:
|
||||||
return ret;
|
return ret;
|
||||||
|
Reference in New Issue
Block a user