diff options
author | Dave Chinner <dchinner@redhat.com> | 2016-02-09 00:54:58 -0500 |
---|---|---|
committer | Dave Chinner <david@fromorbit.com> | 2016-02-09 00:54:58 -0500 |
commit | 9e9a2674e43353f650ecd19a54eba028eafff82e (patch) | |
tree | be357bc6b47f404c41acfc0d0e895622e0d89a2a | |
parent | 54d7b5c1d03e9711cce2d72237d5b3f5c87431f4 (diff) |
xfs: move inode generation count to VFS inode
Pull another 4 bytes out of the xfs_icdinode.
Signed-off-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Brian Foster <bfoster@redhat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Dave Chinner <david@fromorbit.com>
-rw-r--r-- | fs/xfs/libxfs/xfs_inode_buf.c | 8 | ||||
-rw-r--r-- | fs/xfs/libxfs/xfs_inode_buf.h | 1 | ||||
-rw-r--r-- | fs/xfs/xfs_export.c | 2 | ||||
-rw-r--r-- | fs/xfs/xfs_icache.c | 2 | ||||
-rw-r--r-- | fs/xfs/xfs_inode.c | 5 | ||||
-rw-r--r-- | fs/xfs/xfs_inode_item.c | 2 | ||||
-rw-r--r-- | fs/xfs/xfs_ioctl.c | 2 | ||||
-rw-r--r-- | fs/xfs/xfs_iops.c | 1 | ||||
-rw-r--r-- | fs/xfs/xfs_itable.c | 2 |
9 files changed, 11 insertions, 14 deletions
diff --git a/fs/xfs/libxfs/xfs_inode_buf.c b/fs/xfs/libxfs/xfs_inode_buf.c index cc509c1af75e..9113a8d0f148 100644 --- a/fs/xfs/libxfs/xfs_inode_buf.c +++ b/fs/xfs/libxfs/xfs_inode_buf.c | |||
@@ -237,6 +237,7 @@ xfs_inode_from_disk( | |||
237 | inode->i_mtime.tv_nsec = (int)be32_to_cpu(from->di_mtime.t_nsec); | 237 | inode->i_mtime.tv_nsec = (int)be32_to_cpu(from->di_mtime.t_nsec); |
238 | inode->i_ctime.tv_sec = (int)be32_to_cpu(from->di_ctime.t_sec); | 238 | inode->i_ctime.tv_sec = (int)be32_to_cpu(from->di_ctime.t_sec); |
239 | inode->i_ctime.tv_nsec = (int)be32_to_cpu(from->di_ctime.t_nsec); | 239 | inode->i_ctime.tv_nsec = (int)be32_to_cpu(from->di_ctime.t_nsec); |
240 | inode->i_generation = be32_to_cpu(from->di_gen); | ||
240 | 241 | ||
241 | to->di_size = be64_to_cpu(from->di_size); | 242 | to->di_size = be64_to_cpu(from->di_size); |
242 | to->di_nblocks = be64_to_cpu(from->di_nblocks); | 243 | to->di_nblocks = be64_to_cpu(from->di_nblocks); |
@@ -248,7 +249,6 @@ xfs_inode_from_disk( | |||
248 | to->di_dmevmask = be32_to_cpu(from->di_dmevmask); | 249 | to->di_dmevmask = be32_to_cpu(from->di_dmevmask); |
249 | to->di_dmstate = be16_to_cpu(from->di_dmstate); | 250 | to->di_dmstate = be16_to_cpu(from->di_dmstate); |
250 | to->di_flags = be16_to_cpu(from->di_flags); | 251 | to->di_flags = be16_to_cpu(from->di_flags); |
251 | to->di_gen = be32_to_cpu(from->di_gen); | ||
252 | 252 | ||
253 | if (to->di_version == 3) { | 253 | if (to->di_version == 3) { |
254 | to->di_changecount = be64_to_cpu(from->di_changecount); | 254 | to->di_changecount = be64_to_cpu(from->di_changecount); |
@@ -286,6 +286,7 @@ xfs_inode_to_disk( | |||
286 | to->di_ctime.t_sec = cpu_to_be32(inode->i_ctime.tv_sec); | 286 | to->di_ctime.t_sec = cpu_to_be32(inode->i_ctime.tv_sec); |
287 | to->di_ctime.t_nsec = cpu_to_be32(inode->i_ctime.tv_nsec); | 287 | to->di_ctime.t_nsec = cpu_to_be32(inode->i_ctime.tv_nsec); |
288 | to->di_nlink = cpu_to_be32(inode->i_nlink); | 288 | to->di_nlink = cpu_to_be32(inode->i_nlink); |
289 | to->di_gen = cpu_to_be32(inode->i_generation); | ||
289 | 290 | ||
290 | to->di_size = cpu_to_be64(from->di_size); | 291 | to->di_size = cpu_to_be64(from->di_size); |
291 | to->di_nblocks = cpu_to_be64(from->di_nblocks); | 292 | to->di_nblocks = cpu_to_be64(from->di_nblocks); |
@@ -297,7 +298,6 @@ xfs_inode_to_disk( | |||
297 | to->di_dmevmask = cpu_to_be32(from->di_dmevmask); | 298 | to->di_dmevmask = cpu_to_be32(from->di_dmevmask); |
298 | to->di_dmstate = cpu_to_be16(from->di_dmstate); | 299 | to->di_dmstate = cpu_to_be16(from->di_dmstate); |
299 | to->di_flags = cpu_to_be16(from->di_flags); | 300 | to->di_flags = cpu_to_be16(from->di_flags); |
300 | to->di_gen = cpu_to_be32(from->di_gen); | ||
301 | 301 | ||
302 | if (from->di_version == 3) { | 302 | if (from->di_version == 3) { |
303 | to->di_changecount = cpu_to_be64(from->di_changecount); | 303 | to->di_changecount = cpu_to_be64(from->di_changecount); |
@@ -443,7 +443,7 @@ xfs_iread( | |||
443 | !(mp->m_flags & XFS_MOUNT_IKEEP)) { | 443 | !(mp->m_flags & XFS_MOUNT_IKEEP)) { |
444 | /* initialise the on-disk inode core */ | 444 | /* initialise the on-disk inode core */ |
445 | memset(&ip->i_d, 0, sizeof(ip->i_d)); | 445 | memset(&ip->i_d, 0, sizeof(ip->i_d)); |
446 | ip->i_d.di_gen = prandom_u32(); | 446 | VFS_I(ip)->i_generation = prandom_u32(); |
447 | if (xfs_sb_version_hascrc(&mp->m_sb)) | 447 | if (xfs_sb_version_hascrc(&mp->m_sb)) |
448 | ip->i_d.di_version = 3; | 448 | ip->i_d.di_version = 3; |
449 | else | 449 | else |
@@ -491,7 +491,7 @@ xfs_iread( | |||
491 | * that xfs_ialloc won't overwrite or relies on being correct. | 491 | * that xfs_ialloc won't overwrite or relies on being correct. |
492 | */ | 492 | */ |
493 | ip->i_d.di_version = dip->di_version; | 493 | ip->i_d.di_version = dip->di_version; |
494 | ip->i_d.di_gen = be32_to_cpu(dip->di_gen); | 494 | VFS_I(ip)->i_generation = be32_to_cpu(dip->di_gen); |
495 | ip->i_d.di_flushiter = be16_to_cpu(dip->di_flushiter); | 495 | ip->i_d.di_flushiter = be16_to_cpu(dip->di_flushiter); |
496 | 496 | ||
497 | /* | 497 | /* |
diff --git a/fs/xfs/libxfs/xfs_inode_buf.h b/fs/xfs/libxfs/xfs_inode_buf.h index 320b72344270..29fd9f1cf54b 100644 --- a/fs/xfs/libxfs/xfs_inode_buf.h +++ b/fs/xfs/libxfs/xfs_inode_buf.h | |||
@@ -46,7 +46,6 @@ struct xfs_icdinode { | |||
46 | __uint32_t di_dmevmask; /* DMIG event mask */ | 46 | __uint32_t di_dmevmask; /* DMIG event mask */ |
47 | __uint16_t di_dmstate; /* DMIG state info */ | 47 | __uint16_t di_dmstate; /* DMIG state info */ |
48 | __uint16_t di_flags; /* random flags, XFS_DIFLAG_... */ | 48 | __uint16_t di_flags; /* random flags, XFS_DIFLAG_... */ |
49 | __uint32_t di_gen; /* generation number */ | ||
50 | 49 | ||
51 | __uint64_t di_changecount; /* number of attribute changes */ | 50 | __uint64_t di_changecount; /* number of attribute changes */ |
52 | __uint64_t di_flags2; /* more random flags */ | 51 | __uint64_t di_flags2; /* more random flags */ |
diff --git a/fs/xfs/xfs_export.c b/fs/xfs/xfs_export.c index 652cd3c5b58c..2816d42507bc 100644 --- a/fs/xfs/xfs_export.c +++ b/fs/xfs/xfs_export.c | |||
@@ -152,7 +152,7 @@ xfs_nfs_get_inode( | |||
152 | return ERR_PTR(error); | 152 | return ERR_PTR(error); |
153 | } | 153 | } |
154 | 154 | ||
155 | if (ip->i_d.di_gen != generation) { | 155 | if (VFS_I(ip)->i_generation != generation) { |
156 | IRELE(ip); | 156 | IRELE(ip); |
157 | return ERR_PTR(-ESTALE); | 157 | return ERR_PTR(-ESTALE); |
158 | } | 158 | } |
diff --git a/fs/xfs/xfs_icache.c b/fs/xfs/xfs_icache.c index 4c184f70d43c..6401e3c07d3a 100644 --- a/fs/xfs/xfs_icache.c +++ b/fs/xfs/xfs_icache.c | |||
@@ -149,10 +149,12 @@ xfs_reinit_inode( | |||
149 | { | 149 | { |
150 | int error; | 150 | int error; |
151 | uint32_t nlink = inode->i_nlink; | 151 | uint32_t nlink = inode->i_nlink; |
152 | uint32_t generation = inode->i_generation; | ||
152 | 153 | ||
153 | error = inode_init_always(mp->m_super, inode); | 154 | error = inode_init_always(mp->m_super, inode); |
154 | 155 | ||
155 | set_nlink(inode, nlink); | 156 | set_nlink(inode, nlink); |
157 | inode->i_generation = generation; | ||
156 | return error; | 158 | return error; |
157 | } | 159 | } |
158 | 160 | ||
diff --git a/fs/xfs/xfs_inode.c b/fs/xfs/xfs_inode.c index 18b3bc0c211a..dfc5b18c8cc2 100644 --- a/fs/xfs/xfs_inode.c +++ b/fs/xfs/xfs_inode.c | |||
@@ -835,9 +835,6 @@ xfs_ialloc( | |||
835 | inode->i_atime = tv; | 835 | inode->i_atime = tv; |
836 | inode->i_ctime = tv; | 836 | inode->i_ctime = tv; |
837 | 837 | ||
838 | /* | ||
839 | * di_gen will have been taken care of in xfs_iread. | ||
840 | */ | ||
841 | ip->i_d.di_extsize = 0; | 838 | ip->i_d.di_extsize = 0; |
842 | ip->i_d.di_dmevmask = 0; | 839 | ip->i_d.di_dmevmask = 0; |
843 | ip->i_d.di_dmstate = 0; | 840 | ip->i_d.di_dmstate = 0; |
@@ -2424,7 +2421,7 @@ xfs_ifree( | |||
2424 | * Bump the generation count so no one will be confused | 2421 | * Bump the generation count so no one will be confused |
2425 | * by reincarnations of this inode. | 2422 | * by reincarnations of this inode. |
2426 | */ | 2423 | */ |
2427 | ip->i_d.di_gen++; | 2424 | VFS_I(ip)->i_generation++; |
2428 | xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE); | 2425 | xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE); |
2429 | 2426 | ||
2430 | if (xic.deleted) | 2427 | if (xic.deleted) |
diff --git a/fs/xfs/xfs_inode_item.c b/fs/xfs/xfs_inode_item.c index 193e0bdec340..6367780b8abb 100644 --- a/fs/xfs/xfs_inode_item.c +++ b/fs/xfs/xfs_inode_item.c | |||
@@ -350,6 +350,7 @@ xfs_inode_to_log_dinode( | |||
350 | to->di_ctime.t_sec = inode->i_ctime.tv_sec; | 350 | to->di_ctime.t_sec = inode->i_ctime.tv_sec; |
351 | to->di_ctime.t_nsec = inode->i_ctime.tv_nsec; | 351 | to->di_ctime.t_nsec = inode->i_ctime.tv_nsec; |
352 | to->di_nlink = inode->i_nlink; | 352 | to->di_nlink = inode->i_nlink; |
353 | to->di_gen = inode->i_generation; | ||
353 | 354 | ||
354 | to->di_size = from->di_size; | 355 | to->di_size = from->di_size; |
355 | to->di_nblocks = from->di_nblocks; | 356 | to->di_nblocks = from->di_nblocks; |
@@ -361,7 +362,6 @@ xfs_inode_to_log_dinode( | |||
361 | to->di_dmevmask = from->di_dmevmask; | 362 | to->di_dmevmask = from->di_dmevmask; |
362 | to->di_dmstate = from->di_dmstate; | 363 | to->di_dmstate = from->di_dmstate; |
363 | to->di_flags = from->di_flags; | 364 | to->di_flags = from->di_flags; |
364 | to->di_gen = from->di_gen; | ||
365 | 365 | ||
366 | if (from->di_version == 3) { | 366 | if (from->di_version == 3) { |
367 | to->di_changecount = from->di_changecount; | 367 | to->di_changecount = from->di_changecount; |
diff --git a/fs/xfs/xfs_ioctl.c b/fs/xfs/xfs_ioctl.c index 478d04e07f95..cdd6c3156d53 100644 --- a/fs/xfs/xfs_ioctl.c +++ b/fs/xfs/xfs_ioctl.c | |||
@@ -114,7 +114,7 @@ xfs_find_handle( | |||
114 | handle.ha_fid.fid_len = sizeof(xfs_fid_t) - | 114 | handle.ha_fid.fid_len = sizeof(xfs_fid_t) - |
115 | sizeof(handle.ha_fid.fid_len); | 115 | sizeof(handle.ha_fid.fid_len); |
116 | handle.ha_fid.fid_pad = 0; | 116 | handle.ha_fid.fid_pad = 0; |
117 | handle.ha_fid.fid_gen = ip->i_d.di_gen; | 117 | handle.ha_fid.fid_gen = inode->i_generation; |
118 | handle.ha_fid.fid_ino = ip->i_ino; | 118 | handle.ha_fid.fid_ino = ip->i_ino; |
119 | 119 | ||
120 | hsize = XFS_HSIZE(handle); | 120 | hsize = XFS_HSIZE(handle); |
diff --git a/fs/xfs/xfs_iops.c b/fs/xfs/xfs_iops.c index 8982e56e07c4..a4daa3fd3ae9 100644 --- a/fs/xfs/xfs_iops.c +++ b/fs/xfs/xfs_iops.c | |||
@@ -1231,7 +1231,6 @@ xfs_setup_inode( | |||
1231 | break; | 1231 | break; |
1232 | } | 1232 | } |
1233 | 1233 | ||
1234 | inode->i_generation = ip->i_d.di_gen; | ||
1235 | i_size_write(inode, ip->i_d.di_size); | 1234 | i_size_write(inode, ip->i_d.di_size); |
1236 | xfs_diflags_to_iflags(inode, ip); | 1235 | xfs_diflags_to_iflags(inode, ip); |
1237 | 1236 | ||
diff --git a/fs/xfs/xfs_itable.c b/fs/xfs/xfs_itable.c index cfb65273d361..6162e65f10b6 100644 --- a/fs/xfs/xfs_itable.c +++ b/fs/xfs/xfs_itable.c | |||
@@ -100,11 +100,11 @@ xfs_bulkstat_one_int( | |||
100 | buf->bs_mtime.tv_nsec = inode->i_mtime.tv_nsec; | 100 | buf->bs_mtime.tv_nsec = inode->i_mtime.tv_nsec; |
101 | buf->bs_ctime.tv_sec = inode->i_ctime.tv_sec; | 101 | buf->bs_ctime.tv_sec = inode->i_ctime.tv_sec; |
102 | buf->bs_ctime.tv_nsec = inode->i_ctime.tv_nsec; | 102 | buf->bs_ctime.tv_nsec = inode->i_ctime.tv_nsec; |
103 | buf->bs_gen = inode->i_generation; | ||
103 | 104 | ||
104 | buf->bs_xflags = xfs_ip2xflags(ip); | 105 | buf->bs_xflags = xfs_ip2xflags(ip); |
105 | buf->bs_extsize = dic->di_extsize << mp->m_sb.sb_blocklog; | 106 | buf->bs_extsize = dic->di_extsize << mp->m_sb.sb_blocklog; |
106 | buf->bs_extents = dic->di_nextents; | 107 | buf->bs_extents = dic->di_nextents; |
107 | buf->bs_gen = dic->di_gen; | ||
108 | memset(buf->bs_pad, 0, sizeof(buf->bs_pad)); | 108 | memset(buf->bs_pad, 0, sizeof(buf->bs_pad)); |
109 | buf->bs_dmevmask = dic->di_dmevmask; | 109 | buf->bs_dmevmask = dic->di_dmevmask; |
110 | buf->bs_dmstate = dic->di_dmstate; | 110 | buf->bs_dmstate = dic->di_dmstate; |