Fix gfs2 cluster coherency bug
-----BEGIN PGP SIGNATURE----- iQIcBAABAgAGBQJdQvbzAAoJENW/n+sDE2U6UoAQALmdmYJ7+t25YG/0UQQ7ZuvH mvlW7/r4SZm7BY2+ltPdjohTG+Fq/uXceI6BRjJ28TrDuroZinPx6/gqEtzmkKh6 GPx1vztURoxGyh0l723N8Ti6DQuOdiajfaeH24Ypg7YXGFXY5ogyDY1LdHqF5RUU rwJGVNVeo54q0pOccV/7wztblwZw4EbzPCZRxdVXu5ibHODkldlvLM1uB5nUTR2l R10Uo8tUAT1l2P1fw6R679ZeYP0YzKy2cUFn+RikzSmEy1GvhbgEFqU+CIie3j+K TVwS0imUbLLghZLJhcY2rzTi4IdEjwF6z5bRknZHp0cYJ3Wfl6df3xEz7gkyLB2H wHXfmsNtqi+vXDfhOVpDVE9fXqSFYlcvf5mTFGWXzl1ZDzrG2bdgvskG3Es6vsLS AFf0eyyOi6mbhaQ3dqx4rsvLTMyUCX7oqQil7JxrjbbCSt+X5IUEgqrveDt0jW+x N0vNwXpuZlNNEUsHb0hU2vAIs9PmxalUuF5QhgaZ2n46G2YrcUzA5jrXCCQlXqCh pe2l7AvP3rCquSf0giZAbrUXNz8KlXYAV0XNUFo6alUCFaATfzh49q/0lUQeC2My 4poAFRJX4y9NZaHJymIVU9XcBeHaCFnfcXqm3qqXQ/His1lnuoPCm4jlEqPsC0vB NOO9Geb813hSnT6kjTXW =09tJ -----END PGP SIGNATURE----- Merge tag 'gfs2-v5.3-rc2.fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/gfs2/linux-gfs2 Pull gfs2 fix from Andreas Gruenbacher: "Fix gfs2 cluster coherency bug" * tag 'gfs2-v5.3-rc2.fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/gfs2/linux-gfs2: gfs2: Inode dirtying fix
This commit is contained in:
commit
97b00aff2c
|
@ -1002,11 +1002,16 @@ static void gfs2_iomap_page_done(struct inode *inode, loff_t pos,
|
||||||
unsigned copied, struct page *page,
|
unsigned copied, struct page *page,
|
||||||
struct iomap *iomap)
|
struct iomap *iomap)
|
||||||
{
|
{
|
||||||
|
struct gfs2_trans *tr = current->journal_info;
|
||||||
struct gfs2_inode *ip = GFS2_I(inode);
|
struct gfs2_inode *ip = GFS2_I(inode);
|
||||||
struct gfs2_sbd *sdp = GFS2_SB(inode);
|
struct gfs2_sbd *sdp = GFS2_SB(inode);
|
||||||
|
|
||||||
if (page && !gfs2_is_stuffed(ip))
|
if (page && !gfs2_is_stuffed(ip))
|
||||||
gfs2_page_add_databufs(ip, page, offset_in_page(pos), copied);
|
gfs2_page_add_databufs(ip, page, offset_in_page(pos), copied);
|
||||||
|
|
||||||
|
if (tr->tr_num_buf_new)
|
||||||
|
__mark_inode_dirty(inode, I_DIRTY_DATASYNC);
|
||||||
|
|
||||||
gfs2_trans_end(sdp);
|
gfs2_trans_end(sdp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1099,8 +1104,6 @@ static int gfs2_iomap_begin_write(struct inode *inode, loff_t pos,
|
||||||
tr = current->journal_info;
|
tr = current->journal_info;
|
||||||
if (tr->tr_num_buf_new)
|
if (tr->tr_num_buf_new)
|
||||||
__mark_inode_dirty(inode, I_DIRTY_DATASYNC);
|
__mark_inode_dirty(inode, I_DIRTY_DATASYNC);
|
||||||
else
|
|
||||||
gfs2_trans_add_meta(ip->i_gl, mp->mp_bh[0]);
|
|
||||||
|
|
||||||
gfs2_trans_end(sdp);
|
gfs2_trans_end(sdp);
|
||||||
}
|
}
|
||||||
|
@ -1181,10 +1184,16 @@ static int gfs2_iomap_end(struct inode *inode, loff_t pos, loff_t length,
|
||||||
|
|
||||||
if (ip->i_qadata && ip->i_qadata->qa_qd_num)
|
if (ip->i_qadata && ip->i_qadata->qa_qd_num)
|
||||||
gfs2_quota_unlock(ip);
|
gfs2_quota_unlock(ip);
|
||||||
|
|
||||||
|
if (unlikely(!written))
|
||||||
|
goto out_unlock;
|
||||||
|
|
||||||
if (iomap->flags & IOMAP_F_SIZE_CHANGED)
|
if (iomap->flags & IOMAP_F_SIZE_CHANGED)
|
||||||
mark_inode_dirty(inode);
|
mark_inode_dirty(inode);
|
||||||
gfs2_write_unlock(inode);
|
set_bit(GLF_DIRTY, &ip->i_gl->gl_flags);
|
||||||
|
|
||||||
|
out_unlock:
|
||||||
|
gfs2_write_unlock(inode);
|
||||||
out:
|
out:
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue