mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-12 13:55:32 +00:00
![NeilBrown](/assets/img/avatar_default.png)
With this patch, the intent to write to some block in the array can be logged to a bitmap file. Each bit represents some number of sectors and is set before any update happens, and only cleared when all writes relating to all sectors are complete. After an unclean shutdown, information in this bitmap can be used to optimise resync - only sectors which could be out-of-sync need to be updated. Also if a drive is removed and then added back into an array, the recovery can make use of the bitmap to optimise reconstruction. This is not implemented in this patch. Currently the bitmap is stored in a file which must (obviously) be stored on a separate device. The patch only provided infrastructure. It does not update any personalities to bitmap intent logging. Md arrays can still be used with no bitmap file. This patch has minimal impact on such arrays. Signed-off-by: Neil Brown <neilb@cse.unsw.edu.au> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
108 lines
3.6 KiB
Makefile
108 lines
3.6 KiB
Makefile
#
|
|
# Makefile for the kernel software RAID and LVM drivers.
|
|
#
|
|
|
|
dm-mod-objs := dm.o dm-table.o dm-target.o dm-linear.o dm-stripe.o \
|
|
dm-ioctl.o dm-io.o kcopyd.o
|
|
dm-multipath-objs := dm-hw-handler.o dm-path-selector.o dm-mpath.o
|
|
dm-snapshot-objs := dm-snap.o dm-exception-store.o
|
|
dm-mirror-objs := dm-log.o dm-raid1.o
|
|
md-mod-objs := md.o bitmap.o
|
|
raid6-objs := raid6main.o raid6algos.o raid6recov.o raid6tables.o \
|
|
raid6int1.o raid6int2.o raid6int4.o \
|
|
raid6int8.o raid6int16.o raid6int32.o \
|
|
raid6altivec1.o raid6altivec2.o raid6altivec4.o \
|
|
raid6altivec8.o \
|
|
raid6mmx.o raid6sse1.o raid6sse2.o
|
|
hostprogs-y := mktables
|
|
|
|
# Note: link order is important. All raid personalities
|
|
# and xor.o must come before md.o, as they each initialise
|
|
# themselves, and md.o may use the personalities when it
|
|
# auto-initialised.
|
|
|
|
obj-$(CONFIG_MD_LINEAR) += linear.o
|
|
obj-$(CONFIG_MD_RAID0) += raid0.o
|
|
obj-$(CONFIG_MD_RAID1) += raid1.o
|
|
obj-$(CONFIG_MD_RAID10) += raid10.o
|
|
obj-$(CONFIG_MD_RAID5) += raid5.o xor.o
|
|
obj-$(CONFIG_MD_RAID6) += raid6.o xor.o
|
|
obj-$(CONFIG_MD_MULTIPATH) += multipath.o
|
|
obj-$(CONFIG_MD_FAULTY) += faulty.o
|
|
obj-$(CONFIG_BLK_DEV_MD) += md-mod.o
|
|
obj-$(CONFIG_BLK_DEV_DM) += dm-mod.o
|
|
obj-$(CONFIG_DM_CRYPT) += dm-crypt.o
|
|
obj-$(CONFIG_DM_MULTIPATH) += dm-multipath.o dm-round-robin.o
|
|
obj-$(CONFIG_DM_MULTIPATH_EMC) += dm-emc.o
|
|
obj-$(CONFIG_DM_SNAPSHOT) += dm-snapshot.o
|
|
obj-$(CONFIG_DM_MIRROR) += dm-mirror.o
|
|
obj-$(CONFIG_DM_ZERO) += dm-zero.o
|
|
|
|
quiet_cmd_unroll = UNROLL $@
|
|
cmd_unroll = $(PERL) $(srctree)/$(src)/unroll.pl $(UNROLL) \
|
|
< $< > $@ || ( rm -f $@ && exit 1 )
|
|
|
|
ifeq ($(CONFIG_ALTIVEC),y)
|
|
altivec_flags := -maltivec -mabi=altivec
|
|
endif
|
|
|
|
targets += raid6int1.c
|
|
$(obj)/raid6int1.c: UNROLL := 1
|
|
$(obj)/raid6int1.c: $(src)/raid6int.uc $(src)/unroll.pl FORCE
|
|
$(call if_changed,unroll)
|
|
|
|
targets += raid6int2.c
|
|
$(obj)/raid6int2.c: UNROLL := 2
|
|
$(obj)/raid6int2.c: $(src)/raid6int.uc $(src)/unroll.pl FORCE
|
|
$(call if_changed,unroll)
|
|
|
|
targets += raid6int4.c
|
|
$(obj)/raid6int4.c: UNROLL := 4
|
|
$(obj)/raid6int4.c: $(src)/raid6int.uc $(src)/unroll.pl FORCE
|
|
$(call if_changed,unroll)
|
|
|
|
targets += raid6int8.c
|
|
$(obj)/raid6int8.c: UNROLL := 8
|
|
$(obj)/raid6int8.c: $(src)/raid6int.uc $(src)/unroll.pl FORCE
|
|
$(call if_changed,unroll)
|
|
|
|
targets += raid6int16.c
|
|
$(obj)/raid6int16.c: UNROLL := 16
|
|
$(obj)/raid6int16.c: $(src)/raid6int.uc $(src)/unroll.pl FORCE
|
|
$(call if_changed,unroll)
|
|
|
|
targets += raid6int32.c
|
|
$(obj)/raid6int32.c: UNROLL := 32
|
|
$(obj)/raid6int32.c: $(src)/raid6int.uc $(src)/unroll.pl FORCE
|
|
$(call if_changed,unroll)
|
|
|
|
CFLAGS_raid6altivec1.o += $(altivec_flags)
|
|
targets += raid6altivec1.c
|
|
$(obj)/raid6altivec1.c: UNROLL := 1
|
|
$(obj)/raid6altivec1.c: $(src)/raid6altivec.uc $(src)/unroll.pl FORCE
|
|
$(call if_changed,unroll)
|
|
|
|
CFLAGS_raid6altivec2.o += $(altivec_flags)
|
|
targets += raid6altivec2.c
|
|
$(obj)/raid6altivec2.c: UNROLL := 2
|
|
$(obj)/raid6altivec2.c: $(src)/raid6altivec.uc $(src)/unroll.pl FORCE
|
|
$(call if_changed,unroll)
|
|
|
|
CFLAGS_raid6altivec4.o += $(altivec_flags)
|
|
targets += raid6altivec4.c
|
|
$(obj)/raid6altivec4.c: UNROLL := 4
|
|
$(obj)/raid6altivec4.c: $(src)/raid6altivec.uc $(src)/unroll.pl FORCE
|
|
$(call if_changed,unroll)
|
|
|
|
CFLAGS_raid6altivec8.o += $(altivec_flags)
|
|
targets += raid6altivec8.c
|
|
$(obj)/raid6altivec8.c: UNROLL := 8
|
|
$(obj)/raid6altivec8.c: $(src)/raid6altivec.uc $(src)/unroll.pl FORCE
|
|
$(call if_changed,unroll)
|
|
|
|
quiet_cmd_mktable = TABLE $@
|
|
cmd_mktable = $(obj)/mktables > $@ || ( rm -f $@ && exit 1 )
|
|
|
|
targets += raid6tables.c
|
|
$(obj)/raid6tables.c: $(obj)/mktables FORCE
|
|
$(call if_changed,mktable)
|