On Tue, Nov 3, 2020 at 6:13 AM Jan Kara <jack@xxxxxxx> wrote: > > On Sat 31-10-20 13:05:10, Harshad Shirwadkar wrote: > > If inode gets evicted due to memory pressure, we have to remove it > > from the fast commit list. However, that inode may have uncommitted > > changes that fast commits will lose. So, just fall back to full > > commits in this case. Also, rename the fast commit ineligiblity reason > > from "EXT4_FC_REASON_MEM" to "EXT4_FC_REASON_MEM_CRUNCH" for better > > expression. > > > > Suggested-by: Jan Kara <jack@xxxxxxx> > > Signed-off-by: Harshad Shirwadkar <harshadshirwadkar@xxxxxxxxx> > > ... > > > diff --git a/fs/ext4/fast_commit.h b/fs/ext4/fast_commit.h > > index 06907d485989..cde86747faf8 100644 > > --- a/fs/ext4/fast_commit.h > > +++ b/fs/ext4/fast_commit.h > > @@ -100,7 +100,7 @@ enum { > > EXT4_FC_REASON_XATTR = 0, > > EXT4_FC_REASON_CROSS_RENAME, > > EXT4_FC_REASON_JOURNAL_FLAG_CHANGE, > > - EXT4_FC_REASON_MEM, > > + EXT4_FC_REASON_MEM_CRUNCH, > > Well MEM_CRUNCH doesn't really sound more understandable to me :). I'd > rather call it MEM_RECLAIM or ENOMEM or something like that... Okay, ENOMEM sounds good, since this is also used in case of memory allocation failures. > > > diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c > > index b96a18679a27..52ff71236290 100644 > > --- a/fs/ext4/inode.c > > +++ b/fs/ext4/inode.c > > @@ -327,6 +327,7 @@ void ext4_evict_inode(struct inode *inode) > > ext4_xattr_inode_array_free(ea_inode_array); > > return; > > no_delete: > > + ext4_fc_mark_ineligible(inode->i_sb, EXT4_FC_REASON_MEM_CRUNCH); > > ext4_clear_inode(inode); /* We must guarantee clearing of inode... */ > > } > > This will make fs ineligible on every inode reclaim. Even if the inode was > clean, not part of any FC. I guess this is too aggressive... Right, I missed that, so first checking if the inode is on FC list and then marking the FS as ineligible should suffice? Thanks, Harshad > > Honza > -- > Jan Kara <jack@xxxxxxxx> > SUSE Labs, CR