On Mon, Apr 20, 2020 at 7:40 PM Harshad Shirwadkar <harshadshirwadkar@xxxxxxxxx> wrote: > > Don't ignore return values from ext4_ext_dirty, since the errors > indicate valid failures below Ext4. In all of the other instances of > ext4_ext_dirty calls, the error return value is handled in some > way. This patch makes those remaining couple of places to handle > ext4_ext_dirty errors as well. In the longer run, we probably should > make sure that errors from other mark_dirty routines are handled as > well. > > Ran gce-xfstests smoke tests and verified that there were no > regressions. > > Signed-off-by: Harshad Shirwadkar <harshadshirwadkar@xxxxxxxxx> > --- > fs/ext4/extents.c | 5 ++--- > 1 file changed, 2 insertions(+), 3 deletions(-) > > diff --git a/fs/ext4/extents.c b/fs/ext4/extents.c > index f2b577b315a0..f62f55a16fe3 100644 > --- a/fs/ext4/extents.c > +++ b/fs/ext4/extents.c > @@ -3244,8 +3244,7 @@ static int ext4_split_extent_at(handle_t *handle, > > fix_extent_len: > ex->ee_len = orig_ex.ee_len; > - ext4_ext_dirty(handle, inode, path + path->p_depth); > - return err; > + return ext4_ext_dirty(handle, inode, path + path->p_depth); > } I realized that this is not correct. That's because fix_extent_len is an error path and this change would make ext4_split_extent_at() return success if ext4_ext_dirty succeeds in this path. I think instead I should be adding a comment here explaining why we are not handling ext4_ext_dirty(). Sorry for that. - Harshad > > /* > @@ -3503,7 +3502,7 @@ static int ext4_ext_convert_to_initialized(handle_t *handle, > } > if (allocated) { > /* Mark the block containing both extents as dirty */ > - ext4_ext_dirty(handle, inode, path + depth); > + err = ext4_ext_dirty(handle, inode, path + depth); > > /* Update path to point to the right extent */ > path[depth].p_ext = abut_ex; > -- > 2.26.1.301.g55bc3eb7cb9-goog >