|
@@ -779,6 +779,7 @@ static int nilfs_ioctl_mark_blocks_dirty(struct the_nilfs *nilfs,
|
|
size_t nmembs = argv->v_nmembs;
|
|
size_t nmembs = argv->v_nmembs;
|
|
struct nilfs_bmap *bmap = NILFS_I(nilfs->ns_dat)->i_bmap;
|
|
struct nilfs_bmap *bmap = NILFS_I(nilfs->ns_dat)->i_bmap;
|
|
struct nilfs_bdesc *bdescs = buf;
|
|
struct nilfs_bdesc *bdescs = buf;
|
|
|
|
+ struct buffer_head *bh;
|
|
int ret, i;
|
|
int ret, i;
|
|
|
|
|
|
for (i = 0; i < nmembs; i++) {
|
|
for (i = 0; i < nmembs; i++) {
|
|
@@ -796,12 +797,16 @@ static int nilfs_ioctl_mark_blocks_dirty(struct the_nilfs *nilfs,
|
|
/* skip dead block */
|
|
/* skip dead block */
|
|
continue;
|
|
continue;
|
|
if (bdescs[i].bd_level == 0) {
|
|
if (bdescs[i].bd_level == 0) {
|
|
- ret = nilfs_mdt_mark_block_dirty(nilfs->ns_dat,
|
|
|
|
- bdescs[i].bd_offset);
|
|
|
|
- if (ret < 0) {
|
|
|
|
|
|
+ ret = nilfs_mdt_get_block(nilfs->ns_dat,
|
|
|
|
+ bdescs[i].bd_offset,
|
|
|
|
+ false, NULL, &bh);
|
|
|
|
+ if (unlikely(ret)) {
|
|
WARN_ON(ret == -ENOENT);
|
|
WARN_ON(ret == -ENOENT);
|
|
return ret;
|
|
return ret;
|
|
}
|
|
}
|
|
|
|
+ mark_buffer_dirty(bh);
|
|
|
|
+ nilfs_mdt_mark_dirty(nilfs->ns_dat);
|
|
|
|
+ put_bh(bh);
|
|
} else {
|
|
} else {
|
|
ret = nilfs_bmap_mark(bmap, bdescs[i].bd_offset,
|
|
ret = nilfs_bmap_mark(bmap, bdescs[i].bd_offset,
|
|
bdescs[i].bd_level);
|
|
bdescs[i].bd_level);
|