Message ID | 20200524091757.128995-14-hch@lst.de (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | [01/14] xfs: don't clear the "dinode core" in xfs_inode_alloc | expand |
On Sun, May 24, 2020 at 11:17:56AM +0200, Christoph Hellwig wrote: > In preparation of removing the historic icinode struct, move the > dmevmask field into the containing xfs_inode structure. Do we even use dmevmask or dmstate? Why not just get rid of them and set them to zero ondisk? --D > Signed-off-by: Christoph Hellwig <hch@lst.de> > --- > fs/xfs/libxfs/xfs_inode_buf.c | 4 ++-- > fs/xfs/libxfs/xfs_inode_buf.h | 1 - > fs/xfs/xfs_inode.c | 4 ++-- > fs/xfs/xfs_inode.h | 1 + > fs/xfs/xfs_inode_item.c | 2 +- > fs/xfs/xfs_log_recover.c | 2 +- > 6 files changed, 7 insertions(+), 7 deletions(-) > > diff --git a/fs/xfs/libxfs/xfs_inode_buf.c b/fs/xfs/libxfs/xfs_inode_buf.c > index af595ee23635a..d361803102d0e 100644 > --- a/fs/xfs/libxfs/xfs_inode_buf.c > +++ b/fs/xfs/libxfs/xfs_inode_buf.c > @@ -246,7 +246,7 @@ xfs_inode_from_disk( > ip->i_nblocks = be64_to_cpu(from->di_nblocks); > ip->i_extsize = be32_to_cpu(from->di_extsize); > ip->i_forkoff = from->di_forkoff; > - to->di_dmevmask = be32_to_cpu(from->di_dmevmask); > + ip->i_dmevmask = be32_to_cpu(from->di_dmevmask); > to->di_dmstate = be16_to_cpu(from->di_dmstate); > ip->i_diflags = be16_to_cpu(from->di_flags); > > @@ -312,7 +312,7 @@ xfs_inode_to_disk( > to->di_anextents = cpu_to_be16(xfs_ifork_nextents(ip->i_afp)); > to->di_forkoff = ip->i_forkoff; > to->di_aformat = xfs_ifork_format(ip->i_afp); > - to->di_dmevmask = cpu_to_be32(from->di_dmevmask); > + to->di_dmevmask = cpu_to_be32(ip->i_dmevmask); > to->di_dmstate = cpu_to_be16(from->di_dmstate); > to->di_flags = cpu_to_be16(ip->i_diflags); > > diff --git a/fs/xfs/libxfs/xfs_inode_buf.h b/fs/xfs/libxfs/xfs_inode_buf.h > index 2a8e7a7ed8d18..0cfc1aaff6c6f 100644 > --- a/fs/xfs/libxfs/xfs_inode_buf.h > +++ b/fs/xfs/libxfs/xfs_inode_buf.h > @@ -16,7 +16,6 @@ struct xfs_dinode; > * format specific structures at the appropriate time. > */ > struct xfs_icdinode { > - uint32_t di_dmevmask; /* DMIG event mask */ > uint16_t di_dmstate; /* DMIG state info */ > }; > > diff --git a/fs/xfs/xfs_inode.c b/fs/xfs/xfs_inode.c > index aa91217b0fd7f..0b92ce18cf957 100644 > --- a/fs/xfs/xfs_inode.c > +++ b/fs/xfs/xfs_inode.c > @@ -833,7 +833,7 @@ xfs_ialloc( > inode->i_ctime = tv; > > ip->i_extsize = 0; > - ip->i_d.di_dmevmask = 0; > + ip->i_dmevmask = 0; > ip->i_d.di_dmstate = 0; > ip->i_diflags = 0; > > @@ -2753,7 +2753,7 @@ xfs_ifree( > VFS_I(ip)->i_mode = 0; /* mark incore inode as free */ > ip->i_diflags = 0; > ip->i_diflags2 = 0; > - ip->i_d.di_dmevmask = 0; > + ip->i_dmevmask = 0; > ip->i_forkoff = 0; /* mark the attr fork not in use */ > ip->i_df.if_format = XFS_DINODE_FMT_EXTENTS; > > diff --git a/fs/xfs/xfs_inode.h b/fs/xfs/xfs_inode.h > index c77ecde5e6e0d..46dc9612af138 100644 > --- a/fs/xfs/xfs_inode.h > +++ b/fs/xfs/xfs_inode.h > @@ -67,6 +67,7 @@ typedef struct xfs_inode { > uint16_t i_diflags; /* XFS_DIFLAG_... */ > uint64_t i_diflags2; /* XFS_DIFLAG2_... */ > struct timespec64 i_crtime; /* time created */ > + uint32_t i_dmevmask; /* DMIG event mask */ > > struct xfs_icdinode i_d; /* most of ondisk inode */ > > diff --git a/fs/xfs/xfs_inode_item.c b/fs/xfs/xfs_inode_item.c > index dff3bc6a33720..9b7860025c497 100644 > --- a/fs/xfs/xfs_inode_item.c > +++ b/fs/xfs/xfs_inode_item.c > @@ -330,7 +330,7 @@ xfs_inode_to_log_dinode( > to->di_anextents = xfs_ifork_nextents(ip->i_afp); > to->di_forkoff = ip->i_forkoff; > to->di_aformat = xfs_ifork_format(ip->i_afp); > - to->di_dmevmask = from->di_dmevmask; > + to->di_dmevmask = ip->i_dmevmask; > to->di_dmstate = from->di_dmstate; > to->di_flags = ip->i_diflags; > > diff --git a/fs/xfs/xfs_log_recover.c b/fs/xfs/xfs_log_recover.c > index ec015df55b77a..d096b8c401381 100644 > --- a/fs/xfs/xfs_log_recover.c > +++ b/fs/xfs/xfs_log_recover.c > @@ -2720,7 +2720,7 @@ xlog_recover_process_one_iunlink( > * Prevent any DMAPI event from being sent when the reference on > * the inode is dropped. > */ > - ip->i_d.di_dmevmask = 0; > + ip->i_dmevmask = 0; > > xfs_irele(ip); > return agino; > -- > 2.26.2 >
On Tue, Jun 02, 2020 at 05:36:56PM -0700, Darrick J. Wong wrote: > On Sun, May 24, 2020 at 11:17:56AM +0200, Christoph Hellwig wrote: > > In preparation of removing the historic icinode struct, move the > > dmevmask field into the containing xfs_inode structure. > > Do we even use dmevmask or dmstate? Why not just get rid of them and > set them to zero ondisk? "we" don't really use it, no. But until recently we had an ioctl to set it, and bulkstat can report it. If we didn't have the fields in xfs_inode we'd thus lose information when changing the inode. OTOH once Daves series to always read the inode buffer when dirting the inode is merged we could copy it straight from the buffer to the log inode. I'll volunteer to do that work once all the reuquired bit are merged, but for now I'd just like to kill off the horrible icdinode structure.
diff --git a/fs/xfs/libxfs/xfs_inode_buf.c b/fs/xfs/libxfs/xfs_inode_buf.c index af595ee23635a..d361803102d0e 100644 --- a/fs/xfs/libxfs/xfs_inode_buf.c +++ b/fs/xfs/libxfs/xfs_inode_buf.c @@ -246,7 +246,7 @@ xfs_inode_from_disk( ip->i_nblocks = be64_to_cpu(from->di_nblocks); ip->i_extsize = be32_to_cpu(from->di_extsize); ip->i_forkoff = from->di_forkoff; - to->di_dmevmask = be32_to_cpu(from->di_dmevmask); + ip->i_dmevmask = be32_to_cpu(from->di_dmevmask); to->di_dmstate = be16_to_cpu(from->di_dmstate); ip->i_diflags = be16_to_cpu(from->di_flags); @@ -312,7 +312,7 @@ xfs_inode_to_disk( to->di_anextents = cpu_to_be16(xfs_ifork_nextents(ip->i_afp)); to->di_forkoff = ip->i_forkoff; to->di_aformat = xfs_ifork_format(ip->i_afp); - to->di_dmevmask = cpu_to_be32(from->di_dmevmask); + to->di_dmevmask = cpu_to_be32(ip->i_dmevmask); to->di_dmstate = cpu_to_be16(from->di_dmstate); to->di_flags = cpu_to_be16(ip->i_diflags); diff --git a/fs/xfs/libxfs/xfs_inode_buf.h b/fs/xfs/libxfs/xfs_inode_buf.h index 2a8e7a7ed8d18..0cfc1aaff6c6f 100644 --- a/fs/xfs/libxfs/xfs_inode_buf.h +++ b/fs/xfs/libxfs/xfs_inode_buf.h @@ -16,7 +16,6 @@ struct xfs_dinode; * format specific structures at the appropriate time. */ struct xfs_icdinode { - uint32_t di_dmevmask; /* DMIG event mask */ uint16_t di_dmstate; /* DMIG state info */ }; diff --git a/fs/xfs/xfs_inode.c b/fs/xfs/xfs_inode.c index aa91217b0fd7f..0b92ce18cf957 100644 --- a/fs/xfs/xfs_inode.c +++ b/fs/xfs/xfs_inode.c @@ -833,7 +833,7 @@ xfs_ialloc( inode->i_ctime = tv; ip->i_extsize = 0; - ip->i_d.di_dmevmask = 0; + ip->i_dmevmask = 0; ip->i_d.di_dmstate = 0; ip->i_diflags = 0; @@ -2753,7 +2753,7 @@ xfs_ifree( VFS_I(ip)->i_mode = 0; /* mark incore inode as free */ ip->i_diflags = 0; ip->i_diflags2 = 0; - ip->i_d.di_dmevmask = 0; + ip->i_dmevmask = 0; ip->i_forkoff = 0; /* mark the attr fork not in use */ ip->i_df.if_format = XFS_DINODE_FMT_EXTENTS; diff --git a/fs/xfs/xfs_inode.h b/fs/xfs/xfs_inode.h index c77ecde5e6e0d..46dc9612af138 100644 --- a/fs/xfs/xfs_inode.h +++ b/fs/xfs/xfs_inode.h @@ -67,6 +67,7 @@ typedef struct xfs_inode { uint16_t i_diflags; /* XFS_DIFLAG_... */ uint64_t i_diflags2; /* XFS_DIFLAG2_... */ struct timespec64 i_crtime; /* time created */ + uint32_t i_dmevmask; /* DMIG event mask */ struct xfs_icdinode i_d; /* most of ondisk inode */ diff --git a/fs/xfs/xfs_inode_item.c b/fs/xfs/xfs_inode_item.c index dff3bc6a33720..9b7860025c497 100644 --- a/fs/xfs/xfs_inode_item.c +++ b/fs/xfs/xfs_inode_item.c @@ -330,7 +330,7 @@ xfs_inode_to_log_dinode( to->di_anextents = xfs_ifork_nextents(ip->i_afp); to->di_forkoff = ip->i_forkoff; to->di_aformat = xfs_ifork_format(ip->i_afp); - to->di_dmevmask = from->di_dmevmask; + to->di_dmevmask = ip->i_dmevmask; to->di_dmstate = from->di_dmstate; to->di_flags = ip->i_diflags; diff --git a/fs/xfs/xfs_log_recover.c b/fs/xfs/xfs_log_recover.c index ec015df55b77a..d096b8c401381 100644 --- a/fs/xfs/xfs_log_recover.c +++ b/fs/xfs/xfs_log_recover.c @@ -2720,7 +2720,7 @@ xlog_recover_process_one_iunlink( * Prevent any DMAPI event from being sent when the reference on * the inode is dropped. */ - ip->i_d.di_dmevmask = 0; + ip->i_dmevmask = 0; xfs_irele(ip); return agino;
In preparation of removing the historic icinode struct, move the dmevmask field into the containing xfs_inode structure. Signed-off-by: Christoph Hellwig <hch@lst.de> --- fs/xfs/libxfs/xfs_inode_buf.c | 4 ++-- fs/xfs/libxfs/xfs_inode_buf.h | 1 - fs/xfs/xfs_inode.c | 4 ++-- fs/xfs/xfs_inode.h | 1 + fs/xfs/xfs_inode_item.c | 2 +- fs/xfs/xfs_log_recover.c | 2 +- 6 files changed, 7 insertions(+), 7 deletions(-)