Messages in this thread | | | Date | Fri, 15 Sep 2023 17:50:56 +0800 (CST) | From | <> | Subject | Re: [PATCH v3] xfs: introduce protection for drop nlink |
| |
> On Wed, Sep 13, 2023 at 05:44:45PM +0800, cheng.lin130@zte.com.cn wrote: > > From: Cheng Lin <cheng.lin130@zte.com.cn> > > > > When abnormal drop_nlink are detected on the inode, > > shutdown filesystem, to avoid corruption propagation. > > > > Signed-off-by: Cheng Lin <cheng.lin130@zte.com.cn> > > --- > > fs/xfs/xfs_inode.c | 9 +++++++++ > > 1 file changed, 9 insertions(+) > > > > diff --git a/fs/xfs/xfs_inode.c b/fs/xfs/xfs_inode.c > > index 9e62cc500..40cc106ae 100644 > > --- a/fs/xfs/xfs_inode.c > > +++ b/fs/xfs/xfs_inode.c > > @@ -919,6 +919,15 @@ xfs_droplink( > > xfs_trans_t *tp, > > xfs_inode_t *ip) > > { > > + > > + if (VFS_I(ip)->i_nlink == 0) { > > + xfs_alert(ip->i_mount, > > + "%s: Deleting inode %llu with no links.", > > + __func__, ip->i_ino); > > + tp->t_flags |= XFS_TRANS_DIRTY; > Marking the transaction dirty is not necessary. > Otherwise this seems fine. Another strategy: Set nlink to an invalid value(like XFS_NLINK_PINNED), and Complete this transaction before shutdown fs. To make sure nlink not be zero. If the nlink of a directory are zero, it may be cleaned up. Is that appropriate? > -Dave. > -- > Dave Chinner > david@fromorbit.com
| |