mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-27 03:10:12 +00:00
![Christoph Hellwig](/assets/img/avatar_default.png)
Currently we track log item descriptor belonging to a transaction using a complex opencoded chunk allocator. This code has been there since day one and seems to work around the lack of an efficient slab allocator. This patch replaces it with dynamically allocated log item descriptors from a dedicated slab pool, linked to the transaction by a linked list. This allows to greatly simplify the log item descriptor tracking to the point where it's just a couple hundred lines in xfs_trans.c instead of a separate file. The external API has also been simplified while we're at it - the xfs_trans_add_item and xfs_trans_del_item functions to add/ delete items from a transaction have been simplified to the bare minium, and the xfs_trans_find_item function is replaced with a direct dereference of the li_desc field. All debug code walking the list of log items in a transaction is down to a simple list_for_each_entry. Note that we could easily use a singly linked list here instead of the double linked list from list.h as the fastpath only does deletion from sequential traversal. But given that we don't have one available as a library function yet I use the list.h functions for simplicity. Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Dave Chinner <dchinner@redhat.com>
114 lines
2.8 KiB
Makefile
114 lines
2.8 KiB
Makefile
#
|
|
# Copyright (c) 2000-2005 Silicon Graphics, Inc.
|
|
# All Rights Reserved.
|
|
#
|
|
# This program is free software; you can redistribute it and/or
|
|
# modify it under the terms of the GNU General Public License as
|
|
# published by the Free Software Foundation.
|
|
#
|
|
# This program is distributed in the hope that it would be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with this program; if not, write the Free Software Foundation,
|
|
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|
#
|
|
|
|
EXTRA_CFLAGS += -I$(src) -I$(src)/linux-2.6
|
|
|
|
XFS_LINUX := linux-2.6
|
|
|
|
ifeq ($(CONFIG_XFS_DEBUG),y)
|
|
EXTRA_CFLAGS += -g
|
|
endif
|
|
|
|
obj-$(CONFIG_XFS_FS) += xfs.o
|
|
|
|
xfs-y += linux-2.6/xfs_trace.o
|
|
|
|
xfs-$(CONFIG_XFS_QUOTA) += $(addprefix quota/, \
|
|
xfs_dquot.o \
|
|
xfs_dquot_item.o \
|
|
xfs_trans_dquot.o \
|
|
xfs_qm_syscalls.o \
|
|
xfs_qm_bhv.o \
|
|
xfs_qm.o)
|
|
xfs-$(CONFIG_XFS_QUOTA) += linux-2.6/xfs_quotaops.o
|
|
|
|
ifeq ($(CONFIG_XFS_QUOTA),y)
|
|
xfs-$(CONFIG_PROC_FS) += quota/xfs_qm_stats.o
|
|
endif
|
|
|
|
xfs-$(CONFIG_XFS_RT) += xfs_rtalloc.o
|
|
xfs-$(CONFIG_XFS_POSIX_ACL) += $(XFS_LINUX)/xfs_acl.o
|
|
xfs-$(CONFIG_PROC_FS) += $(XFS_LINUX)/xfs_stats.o
|
|
xfs-$(CONFIG_SYSCTL) += $(XFS_LINUX)/xfs_sysctl.o
|
|
xfs-$(CONFIG_COMPAT) += $(XFS_LINUX)/xfs_ioctl32.o
|
|
|
|
|
|
xfs-y += xfs_alloc.o \
|
|
xfs_alloc_btree.o \
|
|
xfs_attr.o \
|
|
xfs_attr_leaf.o \
|
|
xfs_bit.o \
|
|
xfs_bmap.o \
|
|
xfs_bmap_btree.o \
|
|
xfs_btree.o \
|
|
xfs_buf_item.o \
|
|
xfs_da_btree.o \
|
|
xfs_dir2.o \
|
|
xfs_dir2_block.o \
|
|
xfs_dir2_data.o \
|
|
xfs_dir2_leaf.o \
|
|
xfs_dir2_node.o \
|
|
xfs_dir2_sf.o \
|
|
xfs_error.o \
|
|
xfs_extfree_item.o \
|
|
xfs_filestream.o \
|
|
xfs_fsops.o \
|
|
xfs_ialloc.o \
|
|
xfs_ialloc_btree.o \
|
|
xfs_iget.o \
|
|
xfs_inode.o \
|
|
xfs_inode_item.o \
|
|
xfs_iomap.o \
|
|
xfs_itable.o \
|
|
xfs_dfrag.o \
|
|
xfs_log.o \
|
|
xfs_log_cil.o \
|
|
xfs_log_recover.o \
|
|
xfs_mount.o \
|
|
xfs_mru_cache.o \
|
|
xfs_rename.o \
|
|
xfs_trans.o \
|
|
xfs_trans_ail.o \
|
|
xfs_trans_buf.o \
|
|
xfs_trans_extfree.o \
|
|
xfs_trans_inode.o \
|
|
xfs_utils.o \
|
|
xfs_vnodeops.o \
|
|
xfs_rw.o
|
|
|
|
xfs-$(CONFIG_XFS_TRACE) += xfs_btree_trace.o
|
|
|
|
# Objects in linux/
|
|
xfs-y += $(addprefix $(XFS_LINUX)/, \
|
|
kmem.o \
|
|
xfs_aops.o \
|
|
xfs_buf.o \
|
|
xfs_export.o \
|
|
xfs_file.o \
|
|
xfs_fs_subr.o \
|
|
xfs_globals.o \
|
|
xfs_ioctl.o \
|
|
xfs_iops.o \
|
|
xfs_super.o \
|
|
xfs_sync.o \
|
|
xfs_xattr.o)
|
|
|
|
# Objects in support/
|
|
xfs-y += $(addprefix support/, \
|
|
debug.o \
|
|
uuid.o)
|