mirror of
https://github.com/freebsd/freebsd-src
synced 2024-09-06 17:18:32 +00:00
![Kirk McKusick](/assets/img/avatar_default.png)
Various disk controllers require their buffers to be aligned to a cache-line size (128 bytes). For buffers allocated in structures, ensure that they are 128-byte aligned. Use aligned_malloc to allocate memory to ensure that the returned memory is 128-byte aligned. While we are here, we replace the dynamically allocated inode buffer with a buffer allocated in the uufsd structure just as the superblock and cylinder group buffers do. This can be removed if/when the kernel is fixed. Because this problem has existed on one I/O subsystem or another since the 1990's, we are probably stuck with dealing with it forever. The problem most recent showed up in Azure, see: https://reviews.freebsd.org/D41728 https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=267654 Before these fixes were applied, it was confirmed that the changes in this commit also fixed the issue in Azure. Reviewed-by: Warner Losh, kib Tested-by: Souradeep Chakrabarti of Microsoft (earlier version) PR: 267654 Differential Revision: https://reviews.freebsd.org/D41724
40 lines
915 B
Makefile
40 lines
915 B
Makefile
|
|
PACKAGE= ufs
|
|
LIB= ufs
|
|
SHLIBDIR?= /lib
|
|
SHLIB_MAJOR= 8
|
|
|
|
SRCS= block.c cgroup.c gsb_crc32.c inode.c sblock.c type.c ffs_subr.c
|
|
SRCS+= ffs_tables.c
|
|
INCS= libufs.h
|
|
|
|
MAN= bread.3 cgread.3 getinode.3 libufs.3 sbread.3 ufs_disk_close.3
|
|
MLINKS+= bread.3 bwrite.3
|
|
MLINKS+= bread.3 berase.3
|
|
MLINKS+= cgread.3 cgread1.3
|
|
MLINKS+= cgread.3 cgget.3
|
|
MLINKS+= cgread.3 cgwrite.3
|
|
MLINKS+= cgread.3 cgwrite1.3
|
|
MLINKS+= cgread.3 cgput.3
|
|
MLINKS+= getinode.3 putinode.3
|
|
MLINKS+= sbread.3 sbwrite.3
|
|
MLINKS+= sbread.3 sbget.3
|
|
MLINKS+= sbread.3 sbsearch.3
|
|
MLINKS+= sbread.3 sbfind.3
|
|
MLINKS+= sbread.3 sbput.3
|
|
MLINKS+= ufs_disk_close.3 ufs_disk_fillout.3
|
|
MLINKS+= ufs_disk_close.3 ufs_disk_fillout_blank.3
|
|
MLINKS+= ufs_disk_close.3 ufs_disk_write.3
|
|
|
|
.PATH: ${SRCTOP}/sys/libkern ${SRCTOP}/sys/ufs/ffs
|
|
|
|
WARNS?= 2
|
|
|
|
CFLAGS+= -D_LIBUFS
|
|
.if defined(LIBUFS_DEBUG)
|
|
CFLAGS+= -D_LIBUFS_DEBUGGING
|
|
.endif
|
|
CFLAGS+= -I${.CURDIR}
|
|
|
|
.include <bsd.lib.mk>
|