diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2014-01-23 12:16:20 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2014-01-23 12:16:20 -0500 |
commit | 1d32bdafaaa8bcc4c39b41ab9f674887d147f188 (patch) | |
tree | c1aae09d8b98b033fd4dd85ba3dbf97a25776e90 /fs/xfs/xfs_itable.c | |
parent | 0dc3fd0249a295863900984e02dd4bb89204205b (diff) | |
parent | bf3964c188d686424ff7b69a45941851b9f437f0 (diff) |
Merge tag 'xfs-for-linus-v3.14-rc1' of git://oss.sgi.com/xfs/xfs
Pull xfs update from Ben Myers:
"This is primarily bug fixes, many of which you already have. New
stuff includes a series to decouple the in-memory and on-disk log
format, helpers in the area of inode clusters, and i_version handling.
We decided to try to use more topic branches this release, so there
are some merge commits in there on account of that. I'm afraid I
didn't do a good job of putting meaningful comments in the first
couple of merges. Sorry about that. I think I have the hang of it
now.
For 3.14-rc1 there are fixes in the areas of remote attributes,
discard, growfs, memory leaks in recovery, directory v2, quotas, the
MAINTAINERS file, allocation alignment, extent list locking, and in
xfs_bmapi_allocate. There are cleanups in xfs_setsize_buftarg,
removing unused macros, quotas, setattr, and freeing of inode
clusters. The in-memory and on-disk log format have been decoupled, a
common helper to calculate the number of blocks in an inode cluster
has been added, and handling of i_version has been pulled into the
filesystems that use it.
- cleanup in xfs_setsize_buftarg
- removal of remaining unused flags for vop toss/flush/flushinval
- fix for memory corruption in xfs_attrlist_by_handle
- fix for out-of-date comment in xfs_trans_dqlockedjoin
- fix for discard if range length is less than one block
- fix for overrun of agfl buffer using growfs on v4 superblock
filesystems
- pull i_version handling out into the filesystems that use it
- don't leak recovery items on error
- fix for memory leak in xfs_dir2_node_removename
- several cleanups for quotas
- fix bad assertion in xfs_qm_vop_create_dqattach
- cleanup for xfs_setattr_mode, and add xfs_setattr_time
- fix quota assert in xfs_setattr_nonsize
- fix an infinite loop when turning off group/project quota before
user quota
- fix for temporary buffer allocation failure in xfs_dir2_block_to_sf
with large directory block sizes
- fix Dave's email address in MAINTAINERS
- cleanup calculation of freed inode cluster blocks
- fix alignment of initial file allocations to match filesystem
geometry
- decouple in-memory and on-disk log format
- introduce a common helper to calculate the number of filesystem
blocks in an inode cluster
- fixes for extent list locking
- fix for off-by-one in xfs_attr3_rmt_verify
- fix for missing destroy_work_on_stack in xfs_bmapi_allocate"
* tag 'xfs-for-linus-v3.14-rc1' of git://oss.sgi.com/xfs/xfs: (51 commits)
xfs: Calling destroy_work_on_stack() to pair with INIT_WORK_ONSTACK()
xfs: fix off-by-one error in xfs_attr3_rmt_verify
xfs: assert that we hold the ilock for extent map access
xfs: use xfs_ilock_attr_map_shared in xfs_attr_list_int
xfs: use xfs_ilock_attr_map_shared in xfs_attr_get
xfs: use xfs_ilock_data_map_shared in xfs_qm_dqiterate
xfs: use xfs_ilock_data_map_shared in xfs_qm_dqtobp
xfs: take the ilock around xfs_bmapi_read in xfs_zero_remaining_bytes
xfs: reinstate the ilock in xfs_readdir
xfs: add xfs_ilock_attr_map_shared
xfs: rename xfs_ilock_map_shared
xfs: remove xfs_iunlock_map_shared
xfs: no need to lock the inode in xfs_find_handle
xfs: use xfs_icluster_size_fsb in xfs_imap
xfs: use xfs_icluster_size_fsb in xfs_ifree_cluster
xfs: use xfs_icluster_size_fsb in xfs_ialloc_inode_init
xfs: use xfs_icluster_size_fsb in xfs_bulkstat
xfs: introduce a common helper xfs_icluster_size_fsb
xfs: get rid of XFS_IALLOC_BLOCKS macros
xfs: get rid of XFS_INODE_CLUSTER_SIZE macros
...
Diffstat (limited to 'fs/xfs/xfs_itable.c')
-rw-r--r-- | fs/xfs/xfs_itable.c | 22 |
1 files changed, 9 insertions, 13 deletions
diff --git a/fs/xfs/xfs_itable.c b/fs/xfs/xfs_itable.c index c237ad15d500..f46338285152 100644 --- a/fs/xfs/xfs_itable.c +++ b/fs/xfs/xfs_itable.c | |||
@@ -209,9 +209,8 @@ xfs_bulkstat( | |||
209 | xfs_inobt_rec_incore_t *irbuf; /* start of irec buffer */ | 209 | xfs_inobt_rec_incore_t *irbuf; /* start of irec buffer */ |
210 | xfs_inobt_rec_incore_t *irbufend; /* end of good irec buffer entries */ | 210 | xfs_inobt_rec_incore_t *irbufend; /* end of good irec buffer entries */ |
211 | xfs_ino_t lastino; /* last inode number returned */ | 211 | xfs_ino_t lastino; /* last inode number returned */ |
212 | int nbcluster; /* # of blocks in a cluster */ | 212 | int blks_per_cluster; /* # of blocks per cluster */ |
213 | int nicluster; /* # of inodes in a cluster */ | 213 | int inodes_per_cluster;/* # of inodes per cluster */ |
214 | int nimask; /* mask for inode clusters */ | ||
215 | int nirbuf; /* size of irbuf */ | 214 | int nirbuf; /* size of irbuf */ |
216 | int rval; /* return value error code */ | 215 | int rval; /* return value error code */ |
217 | int tmp; /* result value from btree calls */ | 216 | int tmp; /* result value from btree calls */ |
@@ -243,11 +242,8 @@ xfs_bulkstat( | |||
243 | *done = 0; | 242 | *done = 0; |
244 | fmterror = 0; | 243 | fmterror = 0; |
245 | ubufp = ubuffer; | 244 | ubufp = ubuffer; |
246 | nicluster = mp->m_sb.sb_blocksize >= XFS_INODE_CLUSTER_SIZE(mp) ? | 245 | blks_per_cluster = xfs_icluster_size_fsb(mp); |
247 | mp->m_sb.sb_inopblock : | 246 | inodes_per_cluster = blks_per_cluster << mp->m_sb.sb_inopblog; |
248 | (XFS_INODE_CLUSTER_SIZE(mp) >> mp->m_sb.sb_inodelog); | ||
249 | nimask = ~(nicluster - 1); | ||
250 | nbcluster = nicluster >> mp->m_sb.sb_inopblog; | ||
251 | irbuf = kmem_zalloc_greedy(&irbsize, PAGE_SIZE, PAGE_SIZE * 4); | 247 | irbuf = kmem_zalloc_greedy(&irbsize, PAGE_SIZE, PAGE_SIZE * 4); |
252 | if (!irbuf) | 248 | if (!irbuf) |
253 | return ENOMEM; | 249 | return ENOMEM; |
@@ -390,12 +386,12 @@ xfs_bulkstat( | |||
390 | agbno = XFS_AGINO_TO_AGBNO(mp, r.ir_startino); | 386 | agbno = XFS_AGINO_TO_AGBNO(mp, r.ir_startino); |
391 | for (chunkidx = 0; | 387 | for (chunkidx = 0; |
392 | chunkidx < XFS_INODES_PER_CHUNK; | 388 | chunkidx < XFS_INODES_PER_CHUNK; |
393 | chunkidx += nicluster, | 389 | chunkidx += inodes_per_cluster, |
394 | agbno += nbcluster) { | 390 | agbno += blks_per_cluster) { |
395 | if (xfs_inobt_maskn(chunkidx, nicluster) | 391 | if (xfs_inobt_maskn(chunkidx, |
396 | & ~r.ir_free) | 392 | inodes_per_cluster) & ~r.ir_free) |
397 | xfs_btree_reada_bufs(mp, agno, | 393 | xfs_btree_reada_bufs(mp, agno, |
398 | agbno, nbcluster, | 394 | agbno, blks_per_cluster, |
399 | &xfs_inode_buf_ops); | 395 | &xfs_inode_buf_ops); |
400 | } | 396 | } |
401 | blk_finish_plug(&plug); | 397 | blk_finish_plug(&plug); |