* Re: Using mdadm --grow to resize a RAID1
From: Ben Kamen @ 2017-01-02 17:59 UTC (permalink / raw)
To: Linux-RAID
In-Reply-To: <e37c42da-71f5-e83e-4e9f-2ec3961a14a0@gmail.com>
On Mon, Jan 2, 2017 at 10:38 AM, Benjammin2068 <benjammin2068@gmail.com> wrote:
>
>
> Yep -- sizes are off and --rereadpt returns "device busy".
>
> Be right back....
>
ok. back.
the block sizes are the same...
There's still no bitmap active (from my turning it off previously)
So I issued the command again to expand the size... and my system has
been acting weird... my access to /proc/mdstat gets stalled if I'm
watching it..
The grow command "mdadm --grow /dev/md1 --size=max" seems to be
"blocking". I don't get back a prompt to enter the --wait command (and
the final bitmap command)
I can't even CTRL-C out of it. I had to reboot once already and the
filesystem comes back up as it was. But "reboot" even gets stuck. I
have to eventually reset.
Sounds like I have to do this from single user mode or an boot disk/CD?
-Ben
^ permalink raw reply
* Re: Using mdadm --grow to resize a RAID1
From: Wols Lists @ 2017-01-02 18:17 UTC (permalink / raw)
To: Ben Kamen, Linux-RAID
In-Reply-To: <CADDTLRAY=VHydpXOUMh0OSsVYnYefKyo1vtR3hZx4vyGsSW3tQ@mail.gmail.com>
On 02/01/17 17:59, Ben Kamen wrote:
> Sounds like I have to do this from single user mode or an boot disk/CD?
Important snippet of information we should have asked and I don't
remember seeing ... what kernel and mdadm are you using?
Cheers,
Wol
^ permalink raw reply
* Re: Using mdadm --grow to resize a RAID1
From: Ben Kamen @ 2017-01-02 18:38 UTC (permalink / raw)
To: Linux-RAID
In-Reply-To: <586A993C.8010601@youngman.org.uk>
On Mon, Jan 2, 2017 at 12:17 PM, Wols Lists <antlists@youngman.org.uk> wrote:
> On 02/01/17 17:59, Ben Kamen wrote:
>> Sounds like I have to do this from single user mode or an boot disk/CD?
>
> Important snippet of information we should have asked and I don't
> remember seeing ... what kernel and mdadm are you using?
My bad...
kernel is 2.6.32-642.11.1.el6.centos.plus.x86_64
mdadm.x86_64 is 3.3.4-1.el6_8.5
-ben
^ permalink raw reply
* Re: Using mdadm --grow to resize a RAID1
From: Wols Lists @ 2017-01-02 18:52 UTC (permalink / raw)
To: Ben Kamen, Linux-RAID
In-Reply-To: <CADDTLRA2fNyKTCsxK_G-2k4p-01wn16M7T_ruRxt_Dot+6-8Aw@mail.gmail.com>
On 02/01/17 18:38, Ben Kamen wrote:
> On Mon, Jan 2, 2017 at 12:17 PM, Wols Lists <antlists@youngman.org.uk> wrote:
>> On 02/01/17 17:59, Ben Kamen wrote:
>>> Sounds like I have to do this from single user mode or an boot disk/CD?
>>
>> Important snippet of information we should have asked and I don't
>> remember seeing ... what kernel and mdadm are you using?
>
>
> My bad...
>
> kernel is 2.6.32-642.11.1.el6.centos.plus.x86_64
> mdadm.x86_64 is 3.3.4-1.el6_8.5
>
OUCH!
I don't know how far the kernel and mdadm have come since then, and what
has or has not been backported, but it sounds like you want a modern
rescue CD.
I'd be inclined to get something like SystemRescueCD
https://www.system-rescue-cd.org/SystemRescueCd_Homepage and see if the
mdadm and kernel on that work any better. It wouldn't surprise me if
they do.
Cheers,
Wol
^ permalink raw reply
* Re: Using mdadm --grow to resize a RAID1
From: Ben Kamen @ 2017-01-02 19:11 UTC (permalink / raw)
To: Linux-RAID
In-Reply-To: <586AA155.9000802@youngman.org.uk>
On Mon, Jan 2, 2017 at 12:52 PM, Wols Lists <antlists@youngman.org.uk> wrote:
>
> OUCH!
>
> I don't know how far the kernel and mdadm have come since then, and what
> has or has not been backported, but it sounds like you want a modern
> rescue CD.
>
> I'd be inclined to get something like SystemRescueCD
> https://www.system-rescue-cd.org/SystemRescueCd_Homepage and see if the
> mdadm and kernel on that work any better. It wouldn't surprise me if
> they do.
LoL... yea... Long term stability over bleeding-nose "now what broke?!?"
This server has been plodding away for (I think) over 6yrs now.
I'll download and check it out. I had a feeling I'd need to go
single-user or boot from an external source.
I'm doing the grow on that pesky raid5 (now raid6) I mentioned a while
back. Turned out it looks to be the old samsung drives that were
causing me problems with that JBOD controller. I upgraded the RAID6 to
2TB drives while I was in the midst of getting rid of the 40,000+hr
old 1TB samsungs.
So I'm doing the grow on that from 3tb to 6tb as we speak from single
user mode and that's chugging along fine.
I'll report back later..
Thanks a bunch of the insight.
-Ben
^ permalink raw reply
* Re: Using mdadm --grow to resize a RAID1
From: Ben Kamen @ 2017-01-03 1:57 UTC (permalink / raw)
To: Linux-RAID
In-Reply-To: <586AA155.9000802@youngman.org.uk>
Hey all -- just thought I'd report back.
Single User mode was enough to take care of doing the 'mdadm --grow'
and I just did everything else there too (resize2fs).
It was the block size kernel sync (or lack thereof) and then just
being up and running with alll those processes... hahaha.
Thanks everyone for the quick help!
-Ben
^ permalink raw reply
* Re: Write mostly flag
From: Guoqing Jiang @ 2017-01-03 9:38 UTC (permalink / raw)
To: Victor Garcia, linux-raid
In-Reply-To: <CACUwJN1tPMv6KcL+zASxcMWs6GXVT1jdbOYNOun9ADEYC_Mh2A@mail.gmail.com>
On 01/01/2017 03:37 PM, Victor Garcia wrote:
> Hello all
>
> I am trying to set up a raid 1 array using an SSD and a standard SAT
> HDD drives. As I read, it's better to set the write-mostly flag to the
> HDD partition of the array to keep SSD performance times.
>
> This is the command I'm using:
>
> # mdadm --create /dev/md1 -n 2 -l 1 --metadata=0.90 --bitmap=internal
> /dev/nvme0n1p5 -W /dev/sda8 --write-behind
>
> I expect seeing the (W) indicator in mdstat, but this is not showing:
>
> # cat /proc/mdstat
> Personalities : [raid1]
> md1 : active raid1 sda8[1] nvme0n1p5[0]
> 52400064 blocks [2/2] [UU]
> [>....................] resync = 0.3% (175936/52400064)
> finish=9.8min speed=87968K/sec
>
> unused devices: <none>
>
> But if I force later on the flag by means of the sys FS handle, then
> it does appear:
>
> # cat /sys/block/md1/md/dev-sda8/state
> in_sync
> # echo writemostly > /sys/block/md1/md/dev-sda8/state
> # cat /sys/block/md1/md/dev-sda8/state
> in_sync,write_mostly
> # cat /proc/mdstat
> Personalities : [raid1]
> md1 : active raid1 sda8[1](W) nvme0n1p5[0]
> 52400064 blocks [2/2] [UU]
> [==>..................] resync = 11.0% (5806336/52400064)
> finish=9.8min speed=78966K/sec
> bitmap: 1/1 pages [4KB], 65536KB chunk
>
> unused devices: <none>
>
> How is it that the (W) is not showing in the first place?
Seems only 0.9 metadata has the issue while 1.x is ok from my side,
maybe below changes could help you.
diff --git a/super0.c b/super0.c
index 938cfd95fa25..4ad591ba022e 100644
--- a/super0.c
+++ b/super0.c
@@ -915,6 +915,9 @@ static int write_init_super0(struct supertype *st)
while (Kill(di->devname, NULL, 0, -1, 1) == 0)
;
+ if (di->disk.state & (1 << MD_DISK_WRITEMOSTLY))
+ sb->disks[di->disk.number].state |=
1<<MD_DISK_WRITEMOSTLY;
+
sb->disks[di->disk.number].state &= ~(1<<MD_DISK_FAULTY);
sb->this_disk = sb->disks[di->disk.number];
Regards,
Guoqing
^ permalink raw reply related
* mdadm: no more mails during monthly scrubbing under Jessie
From: Hans Kraus @ 2017-01-03 12:55 UTC (permalink / raw)
To: Linux-RAID
Hi,
I recently upgrades my Debian sever from Wheezy to Jessie.
I have the standard configuration, especially the monthly ckeck via the
cron entry: "57 0 * * 0 root if [ -x /usr/share/mdadm/checkarray ] &&
[ $(date +\%d) -le 7 ]; then /usr/share/mdadm/checkarray --cron --all
--idle --quiet; fi".
Under Wheezy I got progress mails like:
-------------------------------------------------------------------------
MD Device: /dev/md/robbe:storage
Event: Rebuild60
/proc/mdstat:
Personalities : [raid6] [raid5] [raid4]
md127 : active raid6 sdk1[0] sde1[9] sdi1[8] sdf[7] sdj1[5] sdg1[4] sdh1[6]
19534426880 blocks super 1.2 level 6, 128k chunk, algorithm 2
[7/7] [UUUUUUU]
[============>........] check = 60.9% (2381950248/3906885376)
finish=259.5min speed=97924K/sec
Action ready: 2016-04-03 12:13:13.949761
unused devices: <none>
-------------------------------------------------------------------------
from mdadm system.
I do not get these mails any more. Extensive googling brought nothing
except some users complaining about theese mails ...
How do I enable theese mails again? I like them as security info that
all is well with my Raid.
Kind regards,
Hans
^ permalink raw reply
* [PATCH 1/1] IMSM: Fix signed/unsigned comparisons
From: Pawel Baldysiak @ 2017-01-03 14:20 UTC (permalink / raw)
To: jes.sorensen; +Cc: linux-raid, Pawel Baldysiak
Prior to this patch there was an error during compiling
on 32-bit arch. This patch fixes this issue.
Reported-by: Thomas Backlund <tmb@mageia.org>
Signed-off-by: Pawel Baldysiak <pawel.baldysiak@intel.com>
---
super-intel.c | 17 +++++++++--------
1 file changed, 9 insertions(+), 8 deletions(-)
diff --git a/super-intel.c b/super-intel.c
index 29b2163..0817a1f 100644
--- a/super-intel.c
+++ b/super-intel.c
@@ -1945,7 +1945,7 @@ static int copy_metadata_imsm(struct supertype *st, int from, int to)
if (lseek64(from, dsize-(2*sector_size), 0) < 0)
goto err;
- if (read(from, buf, sector_size) != sector_size)
+ if ((unsigned int)read(from, buf, sector_size) != sector_size)
goto err;
sb = buf;
if (strncmp((char*)sb->sig, MPB_SIGNATURE, MPB_SIG_LEN) != 0)
@@ -2816,7 +2816,7 @@ static int read_imsm_migr_rec(int fd, struct intel_super *super)
strerror(errno));
goto out;
}
- if (read(fd, super->migr_rec_buf,
+ if ((unsigned int)read(fd, super->migr_rec_buf,
MIGR_REC_BUF_SECTORS*sector_size) !=
MIGR_REC_BUF_SECTORS*sector_size) {
pr_err("Cannot read migr record block: %s\n",
@@ -3018,7 +3018,7 @@ static int write_imsm_migr_rec(struct supertype *st)
strerror(errno));
goto out;
}
- if (write(fd, super->migr_rec_buf,
+ if ((unsigned int)write(fd, super->migr_rec_buf,
MIGR_REC_BUF_SECTORS*sector_size) !=
MIGR_REC_BUF_SECTORS*sector_size) {
pr_err("Cannot write migr record block: %s\n",
@@ -4122,7 +4122,7 @@ static int load_imsm_mpb(int fd, struct intel_super *super, char *devname)
pr_err("Failed to allocate imsm anchor buffer on %s\n", devname);
return 1;
}
- if (read(fd, anchor, sector_size) != sector_size) {
+ if ((unsigned int)read(fd, anchor, sector_size) != sector_size) {
if (devname)
pr_err("Cannot read anchor block on %s: %s\n",
devname, strerror(errno));
@@ -5637,7 +5637,7 @@ static int add_to_super_imsm(struct supertype *st, mdu_disk_info_t *dk,
memset(super->migr_rec_buf, 0, MIGR_REC_BUF_SECTORS*super->sector_size);
if (lseek64(fd, size - MIGR_REC_SECTOR_POSITION*super->sector_size,
SEEK_SET) >= 0) {
- if (write(fd, super->migr_rec_buf,
+ if ((unsigned int)write(fd, super->migr_rec_buf,
MIGR_REC_BUF_SECTORS*super->sector_size) !=
MIGR_REC_BUF_SECTORS*super->sector_size)
perror("Write migr_rec failed");
@@ -5847,7 +5847,8 @@ static int write_super_imsm(struct supertype *st, int doclose)
get_dev_size(d->fd, NULL, &dsize);
if (lseek64(d->fd, dsize - sector_size,
SEEK_SET) >= 0) {
- if (write(d->fd, super->migr_rec_buf,
+ if ((unsigned int)write(d->fd,
+ super->migr_rec_buf,
MIGR_REC_BUF_SECTORS*sector_size) !=
MIGR_REC_BUF_SECTORS*sector_size)
perror("Write migr_rec failed");
@@ -8090,7 +8091,7 @@ static int store_imsm_mpb(int fd, struct imsm_super *mpb)
if (lseek64(fd, dsize - (sector_size * 2), SEEK_SET) < 0)
return 1;
- if (write(fd, buf, sector_size) != sector_size)
+ if ((unsigned int)write(fd, buf, sector_size) != sector_size)
return 1;
return 0;
@@ -11501,7 +11502,7 @@ static int imsm_manage_reshape(
get_dev_size(d->fd, NULL, &dsize);
if (lseek64(d->fd, dsize - MIGR_REC_SECTOR_POSITION*sector_size,
SEEK_SET) >= 0) {
- if (write(d->fd, super->migr_rec_buf,
+ if ((unsigned int)write(d->fd, super->migr_rec_buf,
MIGR_REC_BUF_SECTORS*sector_size) !=
MIGR_REC_BUF_SECTORS*sector_size)
perror("Write migr_rec failed");
--
2.9.3
^ permalink raw reply related
* Re: [RFC PATCH v2] crypto: Add IV generation algorithms
From: Gilad Ben-Yossef @ 2017-01-03 14:23 UTC (permalink / raw)
To: Binoy Jayan
Cc: Oded, Ofir, Herbert Xu, David S. Miller, linux-crypto, Mark Brown,
Arnd Bergmann, linux-kernel, Alasdair Kergon, Mike Snitzer,
dm-devel, Shaohua Li, linux-raid, Rajendra, gilad.benyossef
In-Reply-To: <1481618949-20086-2-git-send-email-binoy.jayan@linaro.org>
Hi Binoy,
On Tue, Dec 13, 2016 at 02:19:09PM +0530, Binoy Jayan wrote:
> Currently, the iv generation algorithms are implemented in dm-crypt.c.
> The goal is to move these algorithms from the dm layer to the kernel
> crypto layer by implementing them as template ciphers so they can be
> implemented in hardware for performance. As part of this patchset, the
> iv-generation code is moved from the dm layer to the crypto layer and
> adapt the dm-layer to send a whole 'bio' (as defined in the block layer)
> at a time. Each bio contains the in memory representation of physically
> contiguous disk blocks. The dm layer sets up a chained scatterlist of
> these blocks split into physically contiguous segments in memory so that
> DMA can be performed. The iv generation algorithms implemented in geniv.c
> include plain, plain64, essiv, benbi, null, lmk and tcw.
>
Good idea. I wanted to test the patch but alas it does not apply cleanly.
You seem to have a blank line at the end of files and other small
transgressions that makes checkpatch grumpy.
<snip>
Also...
>
> Not-signed-off-by: Binoy Jayan <binoy.jayan@linaro.org>
What is Not-signed-off-by ? :-)
Thanks,
Gilad Ben-Yossef
^ permalink raw reply
* Re: mdadm git 32bit build errors
From: Pawel Baldysiak @ 2017-01-03 14:24 UTC (permalink / raw)
To: Thomas Backlund, Linux-RAID
In-Reply-To: <77032f07-d246-ade3-a133-10ccfa43c1ad@mageia.org>
Hi,
Thanks for reporting this issue.
I've just made a patch for that and sent it here.
Thanks
Pawel Baldysiak
On 01/02/2017 05:35 PM, Thomas Backlund wrote:
>
> Trying to build current mdadm git fails on 32bit with:
>
>
>
> super-intel.c: In function 'copy_metadata_imsm':
> super-intel.c:1948:35: error: comparison between signed and unsigned
> integer expressions [-Werror=sign-compare]
> if (read(from, buf, sector_size) != sector_size)
> ^
> super-intel.c: In function 'read_imsm_migr_rec':
> super-intel.c:2820:40: error: comparison between signed and unsigned
> integer expressions [-Werror=sign-compare]
> MIGR_REC_BUF_SECTORS*sector_size) !=
> ^
> super-intel.c: In function 'write_imsm_migr_rec':
> super-intel.c:3022:41: error: comparison between signed and unsigned
> integer expressions [-Werror=sign-compare]
> MIGR_REC_BUF_SECTORS*sector_size) !=
> ^
> super-intel.c: In function 'load_imsm_mpb':
> super-intel.c:4125:36: error: comparison between signed and unsigned
> integer expressions [-Werror=sign-compare]
> if (read(fd, anchor, sector_size) != sector_size) {
> ^
> super-intel.c: In function 'add_to_super_imsm':
> super-intel.c:5641:48: error: comparison between signed and unsigned
> integer expressions [-Werror=sign-compare]
> MIGR_REC_BUF_SECTORS*super->sector_size) !=
> ^
> super-intel.c: In function 'write_super_imsm':
> super-intel.c:5851:43: error: comparison between signed and unsigned
> integer expressions [-Werror=sign-compare]
> MIGR_REC_BUF_SECTORS*sector_size) !=
> ^
> super-intel.c: In function 'store_imsm_mpb':
> super-intel.c:8093:34: error: comparison between signed and unsigned
> integer expressions [-Werror=sign-compare]
> if (write(fd, buf, sector_size) != sector_size)
> ^
> super-intel.c: In function 'imsm_manage_reshape':
> super-intel.c:11505:42: error: comparison between signed and unsigned
> integer expressions [-Werror=sign-compare]
> MIGR_REC_BUF_SECTORS*sector_size) !=
> ^
> cc1: all warnings being treated as errors
>
>
> Seems to be introduced by:
> https://git.kernel.org/cgit/utils/mdadm/mdadm.git/commit/super-intel.c?id=de44e46fd4703ea286987d1d0cf775efa62700fd
>
>
>
> 64bit build is ok.
>
> gcc is 5.4.0
>
> --
> Thomas
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-raid" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply
* [PATCH] uapi: use wildcards to list files
From: Nicolas Dichtel @ 2017-01-03 14:35 UTC (permalink / raw)
To: linux-arch, linux-kernel, dri-devel, netdev, linux-media,
linux-mmc, netfilter-devel, linux-nfs, linux-raid, linux-spi,
linux-mtd, linux-rdma, fcoe-devel, alsa-devel, linux-fbdev,
xen-devel, arnd, davem, airlied
Cc: nicolas.dichtel
In-Reply-To: <20161203.192346.1198940437155108508.davem@davemloft.net>
Regularly, when a new header is created in include/uapi/, the developer
forgets to add it in the corresponding Kbuild file. This error is usually
detected after the release is out.
In fact, all headers under include/uapi/ should be exported, so let's
use wildcards.
After this patch, the following files, which were not exported, are now
exported:
drm/vgem_drm.h
drm/armada_drm.h
drm/omap_drm.h
drm/etnaviv_drm.h
rdma/qedr-abi.h
linux/bcache.h
linux/kfd_ioctl.h
linux/cryptouser.h
linux/kcm.h
linux/kcov.h
linux/seg6_iptunnel.h
linux/stm.h
linux/seg6.h
linux/auto_dev-ioctl.h
linux/userio.h
linux/pr.h
linux/wil6210_uapi.h
linux/nilfs2_ondisk.h
linux/hash_info.h
linux/seg6_genl.h
linux/seg6_hmac.h
linux/batman_adv.h
linux/nsfs.h
linux/qrtr.h
linux/btrfs_tree.h
linux/coresight-stm.h
linux/dma-buf.h
linux/module.h
linux/lightnvm.h
linux/nilfs2_api.h
Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
---
This patch is built against linus tree. I don't know if it should be
done against antoher tree.
Comments are welcomed,
Nicolas
include/uapi/asm-generic/Kbuild | 36 +--
include/uapi/drm/Kbuild | 22 +-
include/uapi/linux/Kbuild | 463 +----------------------------
include/uapi/linux/android/Kbuild | 2 +-
include/uapi/linux/byteorder/Kbuild | 3 +-
include/uapi/linux/caif/Kbuild | 3 +-
include/uapi/linux/can/Kbuild | 6 +-
include/uapi/linux/dvb/Kbuild | 9 +-
include/uapi/linux/hdlc/Kbuild | 2 +-
include/uapi/linux/hsi/Kbuild | 2 +-
include/uapi/linux/iio/Kbuild | 3 +-
include/uapi/linux/isdn/Kbuild | 2 +-
include/uapi/linux/mmc/Kbuild | 2 +-
include/uapi/linux/netfilter/Kbuild | 88 +-----
include/uapi/linux/netfilter/ipset/Kbuild | 5 +-
include/uapi/linux/netfilter_arp/Kbuild | 3 +-
include/uapi/linux/netfilter_bridge/Kbuild | 18 +-
include/uapi/linux/netfilter_ipv4/Kbuild | 10 +-
include/uapi/linux/netfilter_ipv6/Kbuild | 13 +-
include/uapi/linux/nfsd/Kbuild | 6 +-
include/uapi/linux/raid/Kbuild | 3 +-
include/uapi/linux/spi/Kbuild | 2 +-
include/uapi/linux/sunrpc/Kbuild | 2 +-
include/uapi/linux/tc_act/Kbuild | 15 +-
include/uapi/linux/tc_ematch/Kbuild | 5 +-
include/uapi/linux/usb/Kbuild | 12 +-
include/uapi/linux/wimax/Kbuild | 2 +-
include/uapi/misc/Kbuild | 2 +-
include/uapi/mtd/Kbuild | 6 +-
include/uapi/rdma/Kbuild | 17 +-
include/uapi/rdma/hfi/Kbuild | 2 +-
include/uapi/scsi/Kbuild | 5 +-
include/uapi/scsi/fc/Kbuild | 5 +-
include/uapi/sound/Kbuild | 16 +-
include/uapi/video/Kbuild | 4 +-
include/uapi/xen/Kbuild | 5 +-
36 files changed, 47 insertions(+), 754 deletions(-)
diff --git a/include/uapi/asm-generic/Kbuild b/include/uapi/asm-generic/Kbuild
index b73de7bb7a62..8e52cdc3d941 100644
--- a/include/uapi/asm-generic/Kbuild
+++ b/include/uapi/asm-generic/Kbuild
@@ -1,36 +1,2 @@
# UAPI Header export list
-header-y += auxvec.h
-header-y += bitsperlong.h
-header-y += errno-base.h
-header-y += errno.h
-header-y += fcntl.h
-header-y += int-l64.h
-header-y += int-ll64.h
-header-y += ioctl.h
-header-y += ioctls.h
-header-y += ipcbuf.h
-header-y += kvm_para.h
-header-y += mman-common.h
-header-y += mman.h
-header-y += msgbuf.h
-header-y += param.h
-header-y += poll.h
-header-y += posix_types.h
-header-y += resource.h
-header-y += sembuf.h
-header-y += setup.h
-header-y += shmbuf.h
-header-y += shmparam.h
-header-y += siginfo.h
-header-y += signal-defs.h
-header-y += signal.h
-header-y += socket.h
-header-y += sockios.h
-header-y += stat.h
-header-y += statfs.h
-header-y += swab.h
-header-y += termbits.h
-header-y += termios.h
-header-y += types.h
-header-y += ucontext.h
-header-y += unistd.h
+header-y += $(notdir $(wildcard $(srctree)/include/uapi/asm-generic/*.h))
diff --git a/include/uapi/drm/Kbuild b/include/uapi/drm/Kbuild
index 9355dd8eff3b..75f4cde6d9ba 100644
--- a/include/uapi/drm/Kbuild
+++ b/include/uapi/drm/Kbuild
@@ -1,22 +1,2 @@
# UAPI Header export list
-header-y += drm.h
-header-y += drm_fourcc.h
-header-y += drm_mode.h
-header-y += drm_sarea.h
-header-y += amdgpu_drm.h
-header-y += exynos_drm.h
-header-y += i810_drm.h
-header-y += i915_drm.h
-header-y += mga_drm.h
-header-y += nouveau_drm.h
-header-y += qxl_drm.h
-header-y += r128_drm.h
-header-y += radeon_drm.h
-header-y += savage_drm.h
-header-y += sis_drm.h
-header-y += tegra_drm.h
-header-y += via_drm.h
-header-y += vmwgfx_drm.h
-header-y += msm_drm.h
-header-y += vc4_drm.h
-header-y += virtgpu_drm.h
+header-y += $(notdir $(wildcard $(srctree)/include/uapi/drm/*.h))
diff --git a/include/uapi/linux/Kbuild b/include/uapi/linux/Kbuild
index a8b93e685239..9d2d4ebc1e5c 100644
--- a/include/uapi/linux/Kbuild
+++ b/include/uapi/linux/Kbuild
@@ -25,458 +25,19 @@ header-y += wimax/
genhdr-y += version.h
-ifneq ($(wildcard $(srctree)/arch/$(SRCARCH)/include/uapi/asm/a.out.h \
- $(srctree)/arch/$(SRCARCH)/include/asm/a.out.h),)
-header-y += a.out.h
-endif
-
-header-y += acct.h
-header-y += adb.h
-header-y += adfs_fs.h
-header-y += affs_hardblocks.h
-header-y += agpgart.h
-header-y += aio_abi.h
-header-y += am437x-vpfe.h
-header-y += apm_bios.h
-header-y += arcfb.h
-header-y += atalk.h
-header-y += atmapi.h
-header-y += atmarp.h
-header-y += atmbr2684.h
-header-y += atmclip.h
-header-y += atmdev.h
-header-y += atm_eni.h
-header-y += atm.h
-header-y += atm_he.h
-header-y += atm_idt77105.h
-header-y += atmioc.h
-header-y += atmlec.h
-header-y += atmmpc.h
-header-y += atm_nicstar.h
-header-y += atmppp.h
-header-y += atmsap.h
-header-y += atmsvc.h
-header-y += atm_tcp.h
-header-y += atm_zatm.h
-header-y += audit.h
-header-y += auto_fs4.h
-header-y += auto_fs.h
-header-y += auxvec.h
-header-y += ax25.h
-header-y += b1lli.h
-header-y += baycom.h
-header-y += bcm933xx_hcs.h
-header-y += bfs_fs.h
-header-y += binfmts.h
-header-y += blkpg.h
-header-y += blktrace_api.h
-header-y += blkzoned.h
-header-y += bpf_common.h
-header-y += bpf_perf_event.h
-header-y += bpf.h
-header-y += bpqether.h
-header-y += bsg.h
-header-y += bt-bmc.h
-header-y += btrfs.h
-header-y += can.h
-header-y += capability.h
-header-y += capi.h
-header-y += cciss_defs.h
-header-y += cciss_ioctl.h
-header-y += cdrom.h
-header-y += cec.h
-header-y += cec-funcs.h
-header-y += cgroupstats.h
-header-y += chio.h
-header-y += cm4000_cs.h
-header-y += cn_proc.h
-header-y += coda.h
-header-y += coda_psdev.h
-header-y += coff.h
-header-y += connector.h
-header-y += const.h
-header-y += cramfs_fs.h
-header-y += cuda.h
-header-y += cyclades.h
-header-y += cycx_cfm.h
-header-y += dcbnl.h
-header-y += dccp.h
-header-y += devlink.h
-header-y += dlmconstants.h
-header-y += dlm_device.h
-header-y += dlm.h
-header-y += dlm_netlink.h
-header-y += dlm_plock.h
-header-y += dm-ioctl.h
-header-y += dm-log-userspace.h
-header-y += dn.h
-header-y += dqblk_xfs.h
-header-y += edd.h
-header-y += efs_fs_sb.h
-header-y += elfcore.h
-header-y += elf-em.h
-header-y += elf-fdpic.h
-header-y += elf.h
-header-y += errno.h
-header-y += errqueue.h
-header-y += ethtool.h
-header-y += eventpoll.h
-header-y += fadvise.h
-header-y += falloc.h
-header-y += fanotify.h
-header-y += fb.h
-header-y += fcntl.h
-header-y += fd.h
-header-y += fdreg.h
-header-y += fib_rules.h
-header-y += fiemap.h
-header-y += filter.h
-header-y += firewire-cdev.h
-header-y += firewire-constants.h
-header-y += flat.h
-header-y += fou.h
-header-y += fs.h
-header-y += fsl_hypervisor.h
-header-y += fuse.h
-header-y += futex.h
-header-y += gameport.h
-header-y += genetlink.h
-header-y += gen_stats.h
-header-y += gfs2_ondisk.h
-header-y += gigaset_dev.h
-header-y += gpio.h
-header-y += gsmmux.h
-header-y += gtp.h
-header-y += hdlcdrv.h
-header-y += hdlc.h
-header-y += hdreg.h
-header-y += hiddev.h
-header-y += hid.h
-header-y += hidraw.h
-header-y += hpet.h
-header-y += hsr_netlink.h
-header-y += hyperv.h
-header-y += hysdn_if.h
-header-y += i2c-dev.h
-header-y += i2c.h
-header-y += i2o-dev.h
-header-y += i8k.h
-header-y += icmp.h
-header-y += icmpv6.h
-header-y += if_addr.h
-header-y += if_addrlabel.h
-header-y += if_alg.h
-header-y += if_arcnet.h
-header-y += if_arp.h
-header-y += if_bonding.h
-header-y += if_bridge.h
-header-y += if_cablemodem.h
-header-y += if_eql.h
-header-y += if_ether.h
-header-y += if_fc.h
-header-y += if_fddi.h
-header-y += if_frad.h
-header-y += if.h
-header-y += if_hippi.h
-header-y += if_infiniband.h
-header-y += if_link.h
-header-y += if_ltalk.h
-header-y += if_macsec.h
-header-y += if_packet.h
-header-y += if_phonet.h
-header-y += if_plip.h
-header-y += if_ppp.h
-header-y += if_pppol2tp.h
-header-y += if_pppox.h
-header-y += if_slip.h
-header-y += if_team.h
-header-y += if_tun.h
-header-y += if_tunnel.h
-header-y += if_vlan.h
-header-y += if_x25.h
-header-y += igmp.h
-header-y += ila.h
-header-y += in6.h
-header-y += inet_diag.h
-header-y += in.h
-header-y += inotify.h
-header-y += input.h
-header-y += input-event-codes.h
-header-y += in_route.h
-header-y += ioctl.h
-header-y += ip6_tunnel.h
-header-y += ipc.h
-header-y += ip.h
-header-y += ipmi.h
-header-y += ipmi_msgdefs.h
-header-y += ipsec.h
-header-y += ipv6.h
-header-y += ipv6_route.h
-header-y += ip_vs.h
-header-y += ipx.h
-header-y += irda.h
-header-y += irqnr.h
-header-y += isdn_divertif.h
-header-y += isdn.h
-header-y += isdnif.h
-header-y += isdn_ppp.h
-header-y += iso_fs.h
-header-y += ivtvfb.h
-header-y += ivtv.h
-header-y += ixjuser.h
-header-y += jffs2.h
-header-y += joystick.h
-header-y += kcmp.h
-header-y += kdev_t.h
-header-y += kd.h
-header-y += kernelcapi.h
-header-y += kernel.h
-header-y += kernel-page-flags.h
-header-y += kexec.h
-header-y += keyboard.h
-header-y += keyctl.h
+tmphdr-y := $(notdir $(wildcard $(srctree)/include/uapi/linux/*.h))
-ifneq ($(wildcard $(srctree)/arch/$(SRCARCH)/include/uapi/asm/kvm.h \
- $(srctree)/arch/$(SRCARCH)/include/asm/kvm.h),)
-header-y += kvm.h
+ifeq ($(wildcard $(srctree)/arch/$(SRCARCH)/include/uapi/asm/a.out.h \
+ $(srctree)/arch/$(SRCARCH)/include/asm/a.out.h),)
+tmphdr-y = $(filter-out a.out.h $(tmphdr-y))
endif
-
-
-ifneq ($(wildcard $(srctree)/arch/$(SRCARCH)/include/uapi/asm/kvm_para.h \
- $(srctree)/arch/$(SRCARCH)/include/asm/kvm_para.h),)
-header-y += kvm_para.h
+ifeq ($(wildcard $(srctree)/arch/$(SRCARCH)/include/uapi/asm/kvm.h \
+ $(srctree)/arch/$(SRCARCH)/include/asm/kvm.h),)
+tmphdr-y = $(filter-out kvm.h $(tmphdr-y))
+endif
+ifeq ($(wildcard $(srctree)/arch/$(SRCARCH)/include/uapi/asm/kvm_para.h \
+ $(srctree)/arch/$(SRCARCH)/include/asm/kvm_para.h),)
+tmphdr-y = $(filter-out kvm_para.h $(tmphdr-y))
endif
-header-y += hw_breakpoint.h
-header-y += l2tp.h
-header-y += libc-compat.h
-header-y += lirc.h
-header-y += limits.h
-header-y += llc.h
-header-y += loop.h
-header-y += lp.h
-header-y += lwtunnel.h
-header-y += magic.h
-header-y += major.h
-header-y += map_to_7segment.h
-header-y += matroxfb.h
-header-y += mdio.h
-header-y += media.h
-header-y += media-bus-format.h
-header-y += mei.h
-header-y += membarrier.h
-header-y += memfd.h
-header-y += mempolicy.h
-header-y += meye.h
-header-y += mic_common.h
-header-y += mic_ioctl.h
-header-y += mii.h
-header-y += minix_fs.h
-header-y += mman.h
-header-y += mmtimer.h
-header-y += mpls.h
-header-y += mpls_iptunnel.h
-header-y += mqueue.h
-header-y += mroute6.h
-header-y += mroute.h
-header-y += msdos_fs.h
-header-y += msg.h
-header-y += mtio.h
-header-y += nbd.h
-header-y += ncp_fs.h
-header-y += ncp.h
-header-y += ncp_mount.h
-header-y += ncp_no.h
-header-y += ndctl.h
-header-y += neighbour.h
-header-y += netconf.h
-header-y += netdevice.h
-header-y += net_dropmon.h
-header-y += netfilter_arp.h
-header-y += netfilter_bridge.h
-header-y += netfilter_decnet.h
-header-y += netfilter.h
-header-y += netfilter_ipv4.h
-header-y += netfilter_ipv6.h
-header-y += net.h
-header-y += netlink_diag.h
-header-y += netlink.h
-header-y += netrom.h
-header-y += net_namespace.h
-header-y += net_tstamp.h
-header-y += nfc.h
-header-y += nfs2.h
-header-y += nfs3.h
-header-y += nfs4.h
-header-y += nfs4_mount.h
-header-y += nfsacl.h
-header-y += nfs_fs.h
-header-y += nfs.h
-header-y += nfs_idmap.h
-header-y += nfs_mount.h
-header-y += nl80211.h
-header-y += n_r3964.h
-header-y += nubus.h
-header-y += nvme_ioctl.h
-header-y += nvram.h
-header-y += omap3isp.h
-header-y += omapfb.h
-header-y += oom.h
-header-y += openvswitch.h
-header-y += packet_diag.h
-header-y += param.h
-header-y += parport.h
-header-y += patchkey.h
-header-y += pci.h
-header-y += pci_regs.h
-header-y += perf_event.h
-header-y += personality.h
-header-y += pfkeyv2.h
-header-y += pg.h
-header-y += phantom.h
-header-y += phonet.h
-header-y += pktcdvd.h
-header-y += pkt_cls.h
-header-y += pkt_sched.h
-header-y += pmu.h
-header-y += poll.h
-header-y += posix_acl.h
-header-y += posix_acl_xattr.h
-header-y += posix_types.h
-header-y += ppdev.h
-header-y += ppp-comp.h
-header-y += ppp_defs.h
-header-y += ppp-ioctl.h
-header-y += pps.h
-header-y += prctl.h
-header-y += psci.h
-header-y += ptp_clock.h
-header-y += ptrace.h
-header-y += qnx4_fs.h
-header-y += qnxtypes.h
-header-y += quota.h
-header-y += radeonfb.h
-header-y += random.h
-header-y += raw.h
-header-y += rds.h
-header-y += reboot.h
-header-y += reiserfs_fs.h
-header-y += reiserfs_xattr.h
-header-y += resource.h
-header-y += rfkill.h
-header-y += rio_cm_cdev.h
-header-y += rio_mport_cdev.h
-header-y += romfs_fs.h
-header-y += rose.h
-header-y += route.h
-header-y += rtc.h
-header-y += rtnetlink.h
-header-y += scc.h
-header-y += sched.h
-header-y += scif_ioctl.h
-header-y += screen_info.h
-header-y += sctp.h
-header-y += sdla.h
-header-y += seccomp.h
-header-y += securebits.h
-header-y += selinux_netlink.h
-header-y += sem.h
-header-y += serial_core.h
-header-y += serial.h
-header-y += serial_reg.h
-header-y += serio.h
-header-y += shm.h
-header-y += signalfd.h
-header-y += signal.h
-header-y += smiapp.h
-header-y += snmp.h
-header-y += sock_diag.h
-header-y += socket.h
-header-y += sockios.h
-header-y += sonet.h
-header-y += sonypi.h
-header-y += soundcard.h
-header-y += sound.h
-header-y += stat.h
-header-y += stddef.h
-header-y += string.h
-header-y += suspend_ioctls.h
-header-y += swab.h
-header-y += synclink.h
-header-y += sync_file.h
-header-y += sysctl.h
-header-y += sysinfo.h
-header-y += target_core_user.h
-header-y += taskstats.h
-header-y += tcp.h
-header-y += tcp_metrics.h
-header-y += telephony.h
-header-y += termios.h
-header-y += thermal.h
-header-y += time.h
-header-y += times.h
-header-y += timex.h
-header-y += tiocl.h
-header-y += tipc_config.h
-header-y += tipc_netlink.h
-header-y += tipc.h
-header-y += toshiba.h
-header-y += tty_flags.h
-header-y += tty.h
-header-y += types.h
-header-y += udf_fs_i.h
-header-y += udp.h
-header-y += uhid.h
-header-y += uinput.h
-header-y += uio.h
-header-y += uleds.h
-header-y += ultrasound.h
-header-y += un.h
-header-y += unistd.h
-header-y += unix_diag.h
-header-y += usbdevice_fs.h
-header-y += usbip.h
-header-y += utime.h
-header-y += utsname.h
-header-y += uuid.h
-header-y += uvcvideo.h
-header-y += v4l2-common.h
-header-y += v4l2-controls.h
-header-y += v4l2-dv-timings.h
-header-y += v4l2-mediabus.h
-header-y += v4l2-subdev.h
-header-y += veth.h
-header-y += vfio.h
-header-y += vhost.h
-header-y += videodev2.h
-header-y += virtio_9p.h
-header-y += virtio_balloon.h
-header-y += virtio_blk.h
-header-y += virtio_config.h
-header-y += virtio_console.h
-header-y += virtio_gpu.h
-header-y += virtio_ids.h
-header-y += virtio_input.h
-header-y += virtio_net.h
-header-y += virtio_pci.h
-header-y += virtio_ring.h
-header-y += virtio_rng.h
-header-y += virtio_scsi.h
-header-y += virtio_types.h
-header-y += virtio_vsock.h
-header-y += virtio_crypto.h
-header-y += vm_sockets.h
-header-y += vt.h
-header-y += vtpm_proxy.h
-header-y += wait.h
-header-y += wanrouter.h
-header-y += watchdog.h
-header-y += wimax.h
-header-y += wireless.h
-header-y += x25.h
-header-y += xattr.h
-header-y += xfrm.h
-header-y += xilinx-v4l2-controls.h
-header-y += zorro.h
-header-y += zorro_ids.h
-header-y += userfaultfd.h
+header-y += $(tmphdr-y)
diff --git a/include/uapi/linux/android/Kbuild b/include/uapi/linux/android/Kbuild
index ca011eec252a..37a629f4746a 100644
--- a/include/uapi/linux/android/Kbuild
+++ b/include/uapi/linux/android/Kbuild
@@ -1,2 +1,2 @@
# UAPI Header export list
-header-y += binder.h
+header-y += $(notdir $(wildcard $(srctree)/include/uapi/linux/android/*.h))
diff --git a/include/uapi/linux/byteorder/Kbuild b/include/uapi/linux/byteorder/Kbuild
index 619225b9ff2e..d6585c79597c 100644
--- a/include/uapi/linux/byteorder/Kbuild
+++ b/include/uapi/linux/byteorder/Kbuild
@@ -1,3 +1,2 @@
# UAPI Header export list
-header-y += big_endian.h
-header-y += little_endian.h
+header-y += $(notdir $(wildcard $(srctree)/include/uapi/linux/byteorder/*.h))
diff --git a/include/uapi/linux/caif/Kbuild b/include/uapi/linux/caif/Kbuild
index 43396612d3a3..0deed17a523c 100644
--- a/include/uapi/linux/caif/Kbuild
+++ b/include/uapi/linux/caif/Kbuild
@@ -1,3 +1,2 @@
# UAPI Header export list
-header-y += caif_socket.h
-header-y += if_caif.h
+header-y += $(notdir $(wildcard $(srctree)/include/uapi/linux/caif/*.h))
diff --git a/include/uapi/linux/can/Kbuild b/include/uapi/linux/can/Kbuild
index 21c91bf25a29..0b7f01ea62d6 100644
--- a/include/uapi/linux/can/Kbuild
+++ b/include/uapi/linux/can/Kbuild
@@ -1,6 +1,2 @@
# UAPI Header export list
-header-y += bcm.h
-header-y += error.h
-header-y += gw.h
-header-y += netlink.h
-header-y += raw.h
+header-y += $(notdir $(wildcard $(srctree)/include/uapi/linux/can/*.h))
diff --git a/include/uapi/linux/dvb/Kbuild b/include/uapi/linux/dvb/Kbuild
index d40942cfc627..6845c2b87161 100644
--- a/include/uapi/linux/dvb/Kbuild
+++ b/include/uapi/linux/dvb/Kbuild
@@ -1,9 +1,2 @@
# UAPI Header export list
-header-y += audio.h
-header-y += ca.h
-header-y += dmx.h
-header-y += frontend.h
-header-y += net.h
-header-y += osd.h
-header-y += version.h
-header-y += video.h
+header-y += $(notdir $(wildcard $(srctree)/include/uapi/linux/dvb/*.h))
diff --git a/include/uapi/linux/hdlc/Kbuild b/include/uapi/linux/hdlc/Kbuild
index 8c1d2cb75e33..529c2c839277 100644
--- a/include/uapi/linux/hdlc/Kbuild
+++ b/include/uapi/linux/hdlc/Kbuild
@@ -1,2 +1,2 @@
# UAPI Header export list
-header-y += ioctl.h
+header-y += $(notdir $(wildcard $(srctree)/include/uapi/linux/hdlc/*.h))
diff --git a/include/uapi/linux/hsi/Kbuild b/include/uapi/linux/hsi/Kbuild
index a16a00544258..8f59b8f5f8e5 100644
--- a/include/uapi/linux/hsi/Kbuild
+++ b/include/uapi/linux/hsi/Kbuild
@@ -1,2 +1,2 @@
# UAPI Header export list
-header-y += hsi_char.h cs-protocol.h
+header-y += $(notdir $(wildcard $(srctree)/include/uapi/linux/hsi/*.h))
diff --git a/include/uapi/linux/iio/Kbuild b/include/uapi/linux/iio/Kbuild
index 86f76d84c44f..aa6f9887cc4e 100644
--- a/include/uapi/linux/iio/Kbuild
+++ b/include/uapi/linux/iio/Kbuild
@@ -1,3 +1,2 @@
# UAPI Header export list
-header-y += events.h
-header-y += types.h
+header-y += $(notdir $(wildcard $(srctree)/include/uapi/linux/iio/*.h))
diff --git a/include/uapi/linux/isdn/Kbuild b/include/uapi/linux/isdn/Kbuild
index 89e52850bf29..1e842431b0a8 100644
--- a/include/uapi/linux/isdn/Kbuild
+++ b/include/uapi/linux/isdn/Kbuild
@@ -1,2 +1,2 @@
# UAPI Header export list
-header-y += capicmd.h
+header-y += $(notdir $(wildcard $(srctree)/include/uapi/linux/isdn/*.h))
diff --git a/include/uapi/linux/mmc/Kbuild b/include/uapi/linux/mmc/Kbuild
index 8c1d2cb75e33..02d0c0605d1a 100644
--- a/include/uapi/linux/mmc/Kbuild
+++ b/include/uapi/linux/mmc/Kbuild
@@ -1,2 +1,2 @@
# UAPI Header export list
-header-y += ioctl.h
+header-y += $(notdir $(wildcard $(srctree)/include/uapi/linux/mmc/*.h))
diff --git a/include/uapi/linux/netfilter/Kbuild b/include/uapi/linux/netfilter/Kbuild
index 03f194aeadc5..a27c332c489c 100644
--- a/include/uapi/linux/netfilter/Kbuild
+++ b/include/uapi/linux/netfilter/Kbuild
@@ -1,89 +1,3 @@
# UAPI Header export list
header-y += ipset/
-header-y += nf_conntrack_common.h
-header-y += nf_conntrack_ftp.h
-header-y += nf_conntrack_sctp.h
-header-y += nf_conntrack_tcp.h
-header-y += nf_conntrack_tuple_common.h
-header-y += nf_log.h
-header-y += nf_tables.h
-header-y += nf_tables_compat.h
-header-y += nf_nat.h
-header-y += nfnetlink.h
-header-y += nfnetlink_acct.h
-header-y += nfnetlink_compat.h
-header-y += nfnetlink_conntrack.h
-header-y += nfnetlink_cthelper.h
-header-y += nfnetlink_cttimeout.h
-header-y += nfnetlink_log.h
-header-y += nfnetlink_queue.h
-header-y += x_tables.h
-header-y += xt_AUDIT.h
-header-y += xt_CHECKSUM.h
-header-y += xt_CLASSIFY.h
-header-y += xt_CONNMARK.h
-header-y += xt_CONNSECMARK.h
-header-y += xt_CT.h
-header-y += xt_DSCP.h
-header-y += xt_HMARK.h
-header-y += xt_IDLETIMER.h
-header-y += xt_LED.h
-header-y += xt_LOG.h
-header-y += xt_MARK.h
-header-y += xt_NFLOG.h
-header-y += xt_NFQUEUE.h
-header-y += xt_RATEEST.h
-header-y += xt_SECMARK.h
-header-y += xt_SYNPROXY.h
-header-y += xt_TCPMSS.h
-header-y += xt_TCPOPTSTRIP.h
-header-y += xt_TEE.h
-header-y += xt_TPROXY.h
-header-y += xt_addrtype.h
-header-y += xt_bpf.h
-header-y += xt_cgroup.h
-header-y += xt_cluster.h
-header-y += xt_comment.h
-header-y += xt_connbytes.h
-header-y += xt_connlabel.h
-header-y += xt_connlimit.h
-header-y += xt_connmark.h
-header-y += xt_conntrack.h
-header-y += xt_cpu.h
-header-y += xt_dccp.h
-header-y += xt_devgroup.h
-header-y += xt_dscp.h
-header-y += xt_ecn.h
-header-y += xt_esp.h
-header-y += xt_hashlimit.h
-header-y += xt_helper.h
-header-y += xt_ipcomp.h
-header-y += xt_iprange.h
-header-y += xt_ipvs.h
-header-y += xt_l2tp.h
-header-y += xt_length.h
-header-y += xt_limit.h
-header-y += xt_mac.h
-header-y += xt_mark.h
-header-y += xt_multiport.h
-header-y += xt_nfacct.h
-header-y += xt_osf.h
-header-y += xt_owner.h
-header-y += xt_physdev.h
-header-y += xt_pkttype.h
-header-y += xt_policy.h
-header-y += xt_quota.h
-header-y += xt_rateest.h
-header-y += xt_realm.h
-header-y += xt_recent.h
-header-y += xt_rpfilter.h
-header-y += xt_sctp.h
-header-y += xt_set.h
-header-y += xt_socket.h
-header-y += xt_state.h
-header-y += xt_statistic.h
-header-y += xt_string.h
-header-y += xt_tcpmss.h
-header-y += xt_tcpudp.h
-header-y += xt_time.h
-header-y += xt_u32.h
+header-y += $(notdir $(wildcard $(srctree)/include/uapi/linux/netfilter/*.h))
diff --git a/include/uapi/linux/netfilter/ipset/Kbuild b/include/uapi/linux/netfilter/ipset/Kbuild
index d2680423d9ab..b6dc00483ac2 100644
--- a/include/uapi/linux/netfilter/ipset/Kbuild
+++ b/include/uapi/linux/netfilter/ipset/Kbuild
@@ -1,5 +1,2 @@
# UAPI Header export list
-header-y += ip_set.h
-header-y += ip_set_bitmap.h
-header-y += ip_set_hash.h
-header-y += ip_set_list.h
+header-y += $(notdir $(wildcard $(srctree)/include/uapi/linux/netfilter/ipset/*.h))
diff --git a/include/uapi/linux/netfilter_arp/Kbuild b/include/uapi/linux/netfilter_arp/Kbuild
index 62d5637cc0ac..63b09feaf660 100644
--- a/include/uapi/linux/netfilter_arp/Kbuild
+++ b/include/uapi/linux/netfilter_arp/Kbuild
@@ -1,3 +1,2 @@
# UAPI Header export list
-header-y += arp_tables.h
-header-y += arpt_mangle.h
+header-y += $(notdir $(wildcard $(srctree)/include/uapi/linux/netfilter_arp/*.h))
diff --git a/include/uapi/linux/netfilter_bridge/Kbuild b/include/uapi/linux/netfilter_bridge/Kbuild
index 0fbad8ef96de..6bbfc5a91965 100644
--- a/include/uapi/linux/netfilter_bridge/Kbuild
+++ b/include/uapi/linux/netfilter_bridge/Kbuild
@@ -1,18 +1,2 @@
# UAPI Header export list
-header-y += ebt_802_3.h
-header-y += ebt_among.h
-header-y += ebt_arp.h
-header-y += ebt_arpreply.h
-header-y += ebt_ip.h
-header-y += ebt_ip6.h
-header-y += ebt_limit.h
-header-y += ebt_log.h
-header-y += ebt_mark_m.h
-header-y += ebt_mark_t.h
-header-y += ebt_nat.h
-header-y += ebt_nflog.h
-header-y += ebt_pkttype.h
-header-y += ebt_redirect.h
-header-y += ebt_stp.h
-header-y += ebt_vlan.h
-header-y += ebtables.h
+header-y += $(notdir $(wildcard $(srctree)/include/uapi/linux/netfilter_bridge/*.h))
diff --git a/include/uapi/linux/netfilter_ipv4/Kbuild b/include/uapi/linux/netfilter_ipv4/Kbuild
index ecb291df390e..273777606d02 100644
--- a/include/uapi/linux/netfilter_ipv4/Kbuild
+++ b/include/uapi/linux/netfilter_ipv4/Kbuild
@@ -1,10 +1,2 @@
# UAPI Header export list
-header-y += ip_tables.h
-header-y += ipt_CLUSTERIP.h
-header-y += ipt_ECN.h
-header-y += ipt_LOG.h
-header-y += ipt_REJECT.h
-header-y += ipt_TTL.h
-header-y += ipt_ah.h
-header-y += ipt_ecn.h
-header-y += ipt_ttl.h
+header-y += $(notdir $(wildcard $(srctree)/include/uapi/linux/netfilter_ipv4/*.h))
diff --git a/include/uapi/linux/netfilter_ipv6/Kbuild b/include/uapi/linux/netfilter_ipv6/Kbuild
index 75a668ca2353..2d3507f5b0aa 100644
--- a/include/uapi/linux/netfilter_ipv6/Kbuild
+++ b/include/uapi/linux/netfilter_ipv6/Kbuild
@@ -1,13 +1,2 @@
# UAPI Header export list
-header-y += ip6_tables.h
-header-y += ip6t_HL.h
-header-y += ip6t_LOG.h
-header-y += ip6t_NPT.h
-header-y += ip6t_REJECT.h
-header-y += ip6t_ah.h
-header-y += ip6t_frag.h
-header-y += ip6t_hl.h
-header-y += ip6t_ipv6header.h
-header-y += ip6t_mh.h
-header-y += ip6t_opts.h
-header-y += ip6t_rt.h
+header-y += $(notdir $(wildcard $(srctree)/include/uapi/linux/netfilter_ipv6/*.h))
diff --git a/include/uapi/linux/nfsd/Kbuild b/include/uapi/linux/nfsd/Kbuild
index c11bc404053c..b66c1120b54f 100644
--- a/include/uapi/linux/nfsd/Kbuild
+++ b/include/uapi/linux/nfsd/Kbuild
@@ -1,6 +1,2 @@
# UAPI Header export list
-header-y += cld.h
-header-y += debug.h
-header-y += export.h
-header-y += nfsfh.h
-header-y += stats.h
+header-y += $(notdir $(wildcard $(srctree)/include/uapi/linux/nfsd/*.h))
diff --git a/include/uapi/linux/raid/Kbuild b/include/uapi/linux/raid/Kbuild
index e2c3d25405d7..409aa2ecd82f 100644
--- a/include/uapi/linux/raid/Kbuild
+++ b/include/uapi/linux/raid/Kbuild
@@ -1,3 +1,2 @@
# UAPI Header export list
-header-y += md_p.h
-header-y += md_u.h
+header-y += $(notdir $(wildcard $(srctree)/include/uapi/linux/raid/*.h))
diff --git a/include/uapi/linux/spi/Kbuild b/include/uapi/linux/spi/Kbuild
index 0cc747eff165..8d269bd5e31a 100644
--- a/include/uapi/linux/spi/Kbuild
+++ b/include/uapi/linux/spi/Kbuild
@@ -1,2 +1,2 @@
# UAPI Header export list
-header-y += spidev.h
+header-y += $(notdir $(wildcard $(srctree)/include/uapi/linux/spi/*.h))
diff --git a/include/uapi/linux/sunrpc/Kbuild b/include/uapi/linux/sunrpc/Kbuild
index 8e02e47c20fb..4a880e5aeba3 100644
--- a/include/uapi/linux/sunrpc/Kbuild
+++ b/include/uapi/linux/sunrpc/Kbuild
@@ -1,2 +1,2 @@
# UAPI Header export list
-header-y += debug.h
+header-y += $(notdir $(wildcard $(srctree)/include/uapi/linux/sunrpc/*.h))
diff --git a/include/uapi/linux/tc_act/Kbuild b/include/uapi/linux/tc_act/Kbuild
index e3db7403296f..24f8b1d9a4ed 100644
--- a/include/uapi/linux/tc_act/Kbuild
+++ b/include/uapi/linux/tc_act/Kbuild
@@ -1,15 +1,2 @@
# UAPI Header export list
-header-y += tc_csum.h
-header-y += tc_defact.h
-header-y += tc_gact.h
-header-y += tc_ipt.h
-header-y += tc_mirred.h
-header-y += tc_nat.h
-header-y += tc_pedit.h
-header-y += tc_skbedit.h
-header-y += tc_vlan.h
-header-y += tc_bpf.h
-header-y += tc_connmark.h
-header-y += tc_ife.h
-header-y += tc_tunnel_key.h
-header-y += tc_skbmod.h
+header-y += $(notdir $(wildcard $(srctree)/include/uapi/linux/tc_act/*.h))
diff --git a/include/uapi/linux/tc_ematch/Kbuild b/include/uapi/linux/tc_ematch/Kbuild
index 53fca3925535..909ef0d196b1 100644
--- a/include/uapi/linux/tc_ematch/Kbuild
+++ b/include/uapi/linux/tc_ematch/Kbuild
@@ -1,5 +1,2 @@
# UAPI Header export list
-header-y += tc_em_cmp.h
-header-y += tc_em_meta.h
-header-y += tc_em_nbyte.h
-header-y += tc_em_text.h
+header-y += $(notdir $(wildcard $(srctree)/include/uapi/linux/tc_ematch/*.h))
diff --git a/include/uapi/linux/usb/Kbuild b/include/uapi/linux/usb/Kbuild
index 4cc4d6e7e523..4a5eb3f2b704 100644
--- a/include/uapi/linux/usb/Kbuild
+++ b/include/uapi/linux/usb/Kbuild
@@ -1,12 +1,2 @@
# UAPI Header export list
-header-y += audio.h
-header-y += cdc.h
-header-y += cdc-wdm.h
-header-y += ch11.h
-header-y += ch9.h
-header-y += functionfs.h
-header-y += g_printer.h
-header-y += gadgetfs.h
-header-y += midi.h
-header-y += tmc.h
-header-y += video.h
+header-y += $(notdir $(wildcard $(srctree)/include/uapi/linux/usb/*.h))
diff --git a/include/uapi/linux/wimax/Kbuild b/include/uapi/linux/wimax/Kbuild
index 1c97be49971f..f9f41558ebbe 100644
--- a/include/uapi/linux/wimax/Kbuild
+++ b/include/uapi/linux/wimax/Kbuild
@@ -1,2 +1,2 @@
# UAPI Header export list
-header-y += i2400m.h
+header-y += $(notdir $(wildcard $(srctree)/include/uapi/linux/wimax/*.h))
diff --git a/include/uapi/misc/Kbuild b/include/uapi/misc/Kbuild
index e96cae7d58c9..c4ad43dfbcfa 100644
--- a/include/uapi/misc/Kbuild
+++ b/include/uapi/misc/Kbuild
@@ -1,2 +1,2 @@
# misc Header export list
-header-y += cxl.h
+header-y += $(notdir $(wildcard $(srctree)/include/uapi/misc/*.h))
diff --git a/include/uapi/mtd/Kbuild b/include/uapi/mtd/Kbuild
index 5a691e10cd0e..0fbbdecf0302 100644
--- a/include/uapi/mtd/Kbuild
+++ b/include/uapi/mtd/Kbuild
@@ -1,6 +1,2 @@
# UAPI Header export list
-header-y += inftl-user.h
-header-y += mtd-abi.h
-header-y += mtd-user.h
-header-y += nftl-user.h
-header-y += ubi-user.h
+header-y += $(notdir $(wildcard $(srctree)/include/uapi/mtd/*.h))
diff --git a/include/uapi/rdma/Kbuild b/include/uapi/rdma/Kbuild
index 82bdf5626859..0c51ce6905fb 100644
--- a/include/uapi/rdma/Kbuild
+++ b/include/uapi/rdma/Kbuild
@@ -1,18 +1,3 @@
# UAPI Header export list
-header-y += ib_user_cm.h
-header-y += ib_user_mad.h
-header-y += ib_user_sa.h
-header-y += ib_user_verbs.h
-header-y += rdma_netlink.h
-header-y += rdma_user_cm.h
header-y += hfi/
-header-y += rdma_user_rxe.h
-header-y += cxgb3-abi.h
-header-y += cxgb4-abi.h
-header-y += mlx4-abi.h
-header-y += mlx5-abi.h
-header-y += mthca-abi.h
-header-y += nes-abi.h
-header-y += ocrdma-abi.h
-header-y += hns-abi.h
-header-y += vmw_pvrdma-abi.h
+header-y += $(notdir $(wildcard $(srctree)/include/uapi/rdma/*.h))
diff --git a/include/uapi/rdma/hfi/Kbuild b/include/uapi/rdma/hfi/Kbuild
index ef23c294fc71..4fef4d891000 100644
--- a/include/uapi/rdma/hfi/Kbuild
+++ b/include/uapi/rdma/hfi/Kbuild
@@ -1,2 +1,2 @@
# UAPI Header export list
-header-y += hfi1_user.h
+header-y += $(notdir $(wildcard $(srctree)/include/uapi/rdma/hfi/*.h))
diff --git a/include/uapi/scsi/Kbuild b/include/uapi/scsi/Kbuild
index d791e0ad509d..f3f1df5e24dd 100644
--- a/include/uapi/scsi/Kbuild
+++ b/include/uapi/scsi/Kbuild
@@ -1,6 +1,3 @@
# UAPI Header export list
header-y += fc/
-header-y += scsi_bsg_fc.h
-header-y += scsi_netlink.h
-header-y += scsi_netlink_fc.h
-header-y += cxlflash_ioctl.h
+header-y += $(notdir $(wildcard $(srctree)/include/uapi/scsi/*.h))
diff --git a/include/uapi/scsi/fc/Kbuild b/include/uapi/scsi/fc/Kbuild
index 5ead9fac265c..1b84093983c5 100644
--- a/include/uapi/scsi/fc/Kbuild
+++ b/include/uapi/scsi/fc/Kbuild
@@ -1,5 +1,2 @@
# UAPI Header export list
-header-y += fc_els.h
-header-y += fc_fs.h
-header-y += fc_gs.h
-header-y += fc_ns.h
+header-y += $(notdir $(wildcard $(srctree)/include/uapi/scsi/fc/*.h))
diff --git a/include/uapi/sound/Kbuild b/include/uapi/sound/Kbuild
index 9578d8bdbf31..d2eb3b2aedf3 100644
--- a/include/uapi/sound/Kbuild
+++ b/include/uapi/sound/Kbuild
@@ -1,16 +1,2 @@
# UAPI Header export list
-header-y += asequencer.h
-header-y += asoc.h
-header-y += asound.h
-header-y += asound_fm.h
-header-y += compress_offload.h
-header-y += compress_params.h
-header-y += emu10k1.h
-header-y += firewire.h
-header-y += hdsp.h
-header-y += hdspm.h
-header-y += sb16_csp.h
-header-y += sfnt_info.h
-header-y += tlv.h
-header-y += usb_stream.h
-header-y += snd_sst_tokens.h
+header-y += $(notdir $(wildcard $(srctree)/include/uapi/sound/*.h))
diff --git a/include/uapi/video/Kbuild b/include/uapi/video/Kbuild
index ac7203bb32cc..cd6d03c1e7ff 100644
--- a/include/uapi/video/Kbuild
+++ b/include/uapi/video/Kbuild
@@ -1,4 +1,2 @@
# UAPI Header export list
-header-y += edid.h
-header-y += sisfb.h
-header-y += uvesafb.h
+header-y += $(notdir $(wildcard $(srctree)/include/uapi/video/*.h))
diff --git a/include/uapi/xen/Kbuild b/include/uapi/xen/Kbuild
index 5c459628e8c7..32feafaaa784 100644
--- a/include/uapi/xen/Kbuild
+++ b/include/uapi/xen/Kbuild
@@ -1,5 +1,2 @@
# UAPI Header export list
-header-y += evtchn.h
-header-y += gntalloc.h
-header-y += gntdev.h
-header-y += privcmd.h
+header-y += $(notdir $(wildcard $(srctree)/include/uapi/xen/*.h))
--
2.8.1
______________________________________________________
Linux MTD discussion mailing list
http://lists.infradead.org/mailman/listinfo/linux-mtd/
^ permalink raw reply related
* Re: [PATCH 1/1] IMSM: Fix signed/unsigned comparisons
From: Jes Sorensen @ 2017-01-03 15:34 UTC (permalink / raw)
To: Pawel Baldysiak; +Cc: linux-raid
In-Reply-To: <20170103142013.13132-1-pawel.baldysiak@intel.com>
Pawel Baldysiak <pawel.baldysiak@intel.com> writes:
> Prior to this patch there was an error during compiling
> on 32-bit arch. This patch fixes this issue.
>
> Reported-by: Thomas Backlund <tmb@mageia.org>
> Signed-off-by: Pawel Baldysiak <pawel.baldysiak@intel.com>
> ---
> super-intel.c | 17 +++++++++--------
> 1 file changed, 9 insertions(+), 8 deletions(-)
Hi Pawel,
I am not wildly in love with this approach, especially as it discards
the error code. I'll apply it for now, but I would like to see happen is
better explicit error handling throughout the code.
Cheers,
Jes
^ permalink raw reply
* Re: [PATCH v2 00/12] Partial Parity Log for MD RAID 5
From: Jes Sorensen @ 2017-01-03 15:42 UTC (permalink / raw)
To: Shaohua Li; +Cc: Artur Paszkiewicz, NeilBrown, linux-raid
In-Reply-To: <20161216232421.x6sb4goclzyasu6k@kernel.org>
Shaohua Li <shli@kernel.org> writes:
> On Thu, Dec 15, 2016 at 12:44:57PM +0100, Artur Paszkiewicz wrote:
>> On 12/14/2016 08:47 PM, Shaohua Li wrote:
>> > For the implementation, I don't understand how the ppl works much,
>> > there aren't
>> > many details there. Two things I noted:
>> >
>> > - The code skips the log for full stripe write. This isn't
>> > good. It would means
>> > after a unclean shutdown/recovery, one disk has arbitrary data,
>> > not the old
>> > data and new data. This breaks an assumption in filesystem, after a failed
>> > write to a sector, the sector has either old or new data. Thinking about a
>> > write to superblock. The data could be old or new superblock,
>> > but it's still a
>> > superblock, not something random.
>> >
>> > - From the patch 6 & 10, looks PPL only help recover unwritten disks. If one
>> > disk of a stripe is dirty (eg it's written before unclean
>> > shutdown), and it's
>> > lost in recovery, what will happen? Seems the data of lost disk
>> > will be read as
>> > 0? It will break the assumption above too. If I understand the
>> > code clearly
>> > (maybe not, need clarification), this is a design flaw.
>>
>> PPL is only used to update the parity for a stripe, data chunks are not
>> modified at all during PPL recovery. The assumption was that it would
>> protect only from silent data corruption, to eliminate the cases when
>> data that was not touched by a write request could change. So if a dirty
>> disk is lost, no recovery is performed for this stripe (parity is not
>> updated). For full stripe write we only recalculate the parity after a
>> dirty shutdown if all disks are available (like resync). So you are
>> right that it is still possible to have arbitrary data in the written
>> part of a stripe if that disk is lost. In such case the behavior is the
>> same as in plain raid5.
>
> Ok, this matches my understanding. This isn't a completed solution but does
> help a lot. If users want to use this, there is no reason to not support it.
> After you fix the alignment issue and describe the solution in details, I'll
> look at it again.
Artur,
Did you make any progress getting the alignment issue resolved?
I'd really like to get an mdadm release out the door this week, so
getting this resolved would be awesome. Hint hint ;)
Cheers,
Jes
^ permalink raw reply
* Re: [PATCH] uapi: use wildcards to list files
From: David Miller @ 2017-01-03 15:56 UTC (permalink / raw)
To: nicolas.dichtel
Cc: linux-arch, linux-nfs, arnd, alsa-devel, linux-rdma, netdev,
linux-mmc, linux-kernel, dri-devel, linux-spi, linux-raid,
airlied, netfilter-devel, linux-fbdev, xen-devel, fcoe-devel,
linux-mtd, linux-media
In-Reply-To: <1483454144-10519-1-git-send-email-nicolas.dichtel@6wind.com>
From: Nicolas Dichtel <nicolas.dichtel@6wind.com>
Date: Tue, 3 Jan 2017 15:35:44 +0100
> Regularly, when a new header is created in include/uapi/, the developer
> forgets to add it in the corresponding Kbuild file. This error is usually
> detected after the release is out.
>
> In fact, all headers under include/uapi/ should be exported, so let's
> use wildcards.
>
> After this patch, the following files, which were not exported, are now
> exported:
...
>
> Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
Acked-by: David S. Miller <davem@davemloft.net>
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel
^ permalink raw reply
* Re: [PATCH] uapi: use wildcards to list files
From: Arnd Bergmann @ 2017-01-03 21:37 UTC (permalink / raw)
To: Nicolas Dichtel
Cc: linux-arch, David Howells, linux-nfs, alsa-devel, linux-rdma,
netdev, linux-mmc, linux-kernel, dri-devel, linux-spi, linux-raid,
netfilter-devel, linux-fbdev, xen-devel, fcoe-devel, linux-mtd,
davem, linux-media
In-Reply-To: <1483454144-10519-1-git-send-email-nicolas.dichtel@6wind.com>
On Tuesday, January 3, 2017 3:35:44 PM CET Nicolas Dichtel wrote:
> Regularly, when a new header is created in include/uapi/, the developer
> forgets to add it in the corresponding Kbuild file. This error is usually
> detected after the release is out.
>
> In fact, all headers under include/uapi/ should be exported, so let's
> use wildcards.
I think the idea makes a lot of sense: if a header is in uapi, we should
really export it. However, using a wildcard expression seems a bit
backwards here, I think we should make this implicit and not have the
Kbuild file at all.
The "header-y" syntax was originally added back when the uapi headers
were mixed with the internal headers in the same directory. After
David Howells introduced the separate directory for uapi, it has
become a bit redundant.
Can you try to modify scripts/Makefile.headersinst instead so we
can simply remove the Kbuild files entirely?
Arnd
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply
* Re: mdadm: no more mails during monthly scrubbing under Jessie
From: NeilBrown @ 2017-01-04 2:14 UTC (permalink / raw)
To: Hans Kraus, Linux-RAID
In-Reply-To: <c2b5cf99-906a-acfe-1a4a-354fb740a8f9@hanswkraus.com>
[-- Attachment #1: Type: text/plain, Size: 1786 bytes --]
On Tue, Jan 03 2017, Hans Kraus wrote:
> Hi,
>
> I recently upgrades my Debian sever from Wheezy to Jessie.
>
> I have the standard configuration, especially the monthly ckeck via the
> cron entry: "57 0 * * 0 root if [ -x /usr/share/mdadm/checkarray ] &&
> [ $(date +\%d) -le 7 ]; then /usr/share/mdadm/checkarray --cron --all
> --idle --quiet; fi".
>
> Under Wheezy I got progress mails like:
> -------------------------------------------------------------------------
> MD Device: /dev/md/robbe:storage
> Event: Rebuild60
>
> /proc/mdstat:
> Personalities : [raid6] [raid5] [raid4]
> md127 : active raid6 sdk1[0] sde1[9] sdi1[8] sdf[7] sdj1[5] sdg1[4] sdh1[6]
> 19534426880 blocks super 1.2 level 6, 128k chunk, algorithm 2
> [7/7] [UUUUUUU]
> [============>........] check = 60.9% (2381950248/3906885376)
> finish=259.5min speed=97924K/sec
> Action ready: 2016-04-03 12:13:13.949761
>
> unused devices: <none>
> -------------------------------------------------------------------------
> from mdadm system.
>
> I do not get these mails any more. Extensive googling brought nothing
> except some users complaining about theese mails ...
>
> How do I enable theese mails again? I like them as security info that
> all is well with my Raid.
You would probably be better off asking on a Debian help list, or open a
Debian bug. This is a configuration specific to Debian.
I suspect the email was generated by running "mdadm --monitor" and
providing it with a program to run on every event. The program would
have sent the emails.
I only have sid installed and it doesn't seem to provide any such
script.
There is something in /usr/share/doc/mdadm/examples but the script there
doesn't send emails.
NeilBrown
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 832 bytes --]
^ permalink raw reply
* [lvm2 PATCH] Remove special-case for md in 69-dm-lvm-metadata.rules
From: NeilBrown @ 2017-01-04 3:30 UTC (permalink / raw)
To: lvm-devel, linux-raid; +Cc: GuoQing Jiang, Lidong Zhong
[-- Attachment #1: Type: text/plain, Size: 2301 bytes --]
This special casing brings no value. It appears to attempt to
determine if the array is active yet or not, and to skip
processing if the array has not yet been started.
However, if the array hasn't been started, then "blkid" will
not have been able to read a signature, so:
ENV{ID_FS_TYPE}!="LVM2_member|LVM1_member", GOTO="lvm_end"
will have caused all this code to be skipped.
Further, this code causes incorrect behaviour in at least one case.
It assumes that the first "add" event should be ignored, as it will be
followed by a "change" event which indicates the array coming on line.
This is consistent with how the kernel sends events, but not always
consistent with how this script sees event.
Specifically: if the initrd has "mdadm" support installed, but not
"lvm2" support, then the initial "add" and "change" events will
happen while the initrd is in charge and this file is not available.
Once the root filesystem is mountd, this file will be available
and "udevadm trigger --action=add" will be run.
So the first and only event seen by this script for an md device will be
"add", and it will incorrectly ignore it.
It is probable that the special handling for "loop" should be removed as
well, but I have not actually seen that cause a problem, so I'm
leaving it unchanged.
Signed-off-by: NeilBrown <neilb@suse.com>
---
udev/69-dm-lvm-metad.rules.in | 10 ----------
1 file changed, 10 deletions(-)
diff --git a/udev/69-dm-lvm-metad.rules.in b/udev/69-dm-lvm-metad.rules.in
index bd75fc8efcd5..db213ed67f21 100644
--- a/udev/69-dm-lvm-metad.rules.in
+++ b/udev/69-dm-lvm-metad.rules.in
@@ -50,16 +50,6 @@ KERNEL!="dm-[0-9]*", GOTO="next"
ENV{DM_UDEV_PRIMARY_SOURCE_FLAG}=="1", ENV{DM_ACTIVATION}=="1", GOTO="lvm_scan"
GOTO="lvm_end"
-# MD device:
-LABEL="next"
-KERNEL!="md[0-9]*", GOTO="next"
-IMPORT{db}="LVM_MD_PV_ACTIVATED"
-ACTION=="add", ENV{LVM_MD_PV_ACTIVATED}=="1", GOTO="lvm_scan"
-ACTION=="change", ENV{LVM_MD_PV_ACTIVATED}!="1", TEST=="md/array_state", ENV{LVM_MD_PV_ACTIVATED}="1", GOTO="lvm_scan"
-ACTION=="add", KERNEL=="md[0-9]*p[0-9]*", GOTO="lvm_scan"
-ENV{LVM_MD_PV_ACTIVATED}!="1", ENV{SYSTEMD_READY}="0"
-GOTO="lvm_end"
-
# Loop device:
LABEL="next"
KERNEL!="loop[0-9]*", GOTO="next"
--
2.11.0
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 832 bytes --]
^ permalink raw reply related
* Re: [PATCH 2/2] md/r5cache: enable chunk_aligned_read with write back cache
From: NeilBrown @ 2017-01-04 4:02 UTC (permalink / raw)
To: linux-raid
Cc: shli, kernel-team, dan.j.williams, hch, liuzhengyuan, liuyun01,
Song Liu, Jes.Sorensen
In-Reply-To: <20161229011802.692478-2-songliubraving@fb.com>
[-- Attachment #1: Type: text/plain, Size: 6381 bytes --]
On Thu, Dec 29 2016, Song Liu wrote:
> Chunk aligned read significantly reduces CPU usage of raid456.
> However, it is not safe to fully bypass the write back cache.
> This patch enables chunk aligned read with write back cache.
>
> For chunk aligned read, we track stripes in write back cache at
> a bigger granularity, "big_stripe". Each chunk may contain more
> than one stripe (for example, a 256kB chunk contains 64 4kB-page,
> so this chunk contain 64 stripes). For chunk_aligned_read, these
> stripes are grouped into one big_stripe, so we only need one lookup
> for the whole chunk.
>
> For each big_stripe, struct big_stripe_info tracks how many stripes of
> this big_stripe are in the write back cache. These data are tracked
> in a radix tree (big_stripe_tree). big_stripe_index() is used to
> calculate keys for the radix tree.
>
> chunk_aligned_read() calls r5c_big_stripe_cached() to look up
> big_stripe of each chunk in the tree. If this big_stripe is in the
> tree, chunk_aligned_read() aborts. This look up is protected by
> rcu_read_lock().
>
> It is necessary to remember whether a stripe is counted in
> big_stripe_tree. Instead of adding new flag, we reuses existing flags:
> STRIPE_R5C_PARTIAL_STRIPE and STRIPE_R5C_FULL_STRIPE. If either of these
> two flags are set, the stripe is counted in big_stripe_tree. This
> requires moving set_bit(STRIPE_R5C_PARTIAL_STRIPE) to
> r5c_try_caching_write().
>
> Signed-off-by: Song Liu <songliubraving@fb.com>
> ---
> drivers/md/raid5-cache.c | 146 ++++++++++++++++++++++++++++++++++++++++++++---
> drivers/md/raid5.c | 19 +++---
> drivers/md/raid5.h | 1 +
> 3 files changed, 152 insertions(+), 14 deletions(-)
>
> diff --git a/drivers/md/raid5-cache.c b/drivers/md/raid5-cache.c
> index 817b294..268dcd2 100644
> --- a/drivers/md/raid5-cache.c
> +++ b/drivers/md/raid5-cache.c
> @@ -162,9 +162,60 @@ struct r5l_log {
>
> /* to submit async io_units, to fulfill ordering of flush */
> struct work_struct deferred_io_work;
> +
> + /* to for chunk_aligned_read in writeback mode, details below */
> + spinlock_t tree_lock;
> + struct radix_tree_root big_stripe_tree;
> + struct kmem_cache *bsi_kc; /* kmem_cache for big_stripe_info */
Why use a kmem_cache. The structure you are allocating is an atomic_t,
which is 4 or 8 bytes, so kmalloc can allocate it efficiently. You only
need a kmem_cache for objects that are not a nice even size.
> + mempool_t *big_stripe_info_pool;
And why a mempool? Mempool are used when the allocation mustn't fail and
you can wait for some other users of the memory to free it. That is not
at all the case here.
As you are using a radix tree, it would probably make sense to not store
a pointer, but to store an integer directly. Use radix_tree_replace to
update.
> };
>
> /*
> + * Enable chunk_aligned_read() with write back cache.
> + *
> + * Each chunk may contain more than one stripe (for example, a 256kB
> + * chunk contains 64 4kB-page, so this chunk contain 64 stripes). For
> + * chunk_aligned_read, these stripes are grouped into one "big_stripe".
> + * For each big_stripe, struct big_stripe_info tracks how many stripes of
> + * this big_stripe are in the write back cache. These data are tracked
> + * in a radix tree (big_stripe_tree). big_stripe_index() is used to
> + * calculate keys for the radix tree.
> + *
> + * chunk_aligned_read() calls r5c_big_stripe_cached() to look up
> + * big_stripe of each chunk in the tree. If this big_stripe is in the
> + * tree, chunk_aligned_read() aborts. This look up is protected by
> + * rcu_read_lock().
> + *
> + * It is necessary to remember whether a stripe is counted in
> + * big_stripe_tree. Instead of adding new flag, we reuses existing flags:
> + * STRIPE_R5C_PARTIAL_STRIPE and STRIPE_R5C_FULL_STRIPE. If either of these
> + * two flags are set, the stripe is counted in big_stripe_tree. This
> + * requires moving set_bit(STRIPE_R5C_PARTIAL_STRIPE) to
> + * r5c_try_caching_write().
> + */
> +struct big_stripe_info {
> + atomic_t count;
> +#ifdef CONFIG_DEBUG_VM
> + void *pad; /* suppress size check error in kmem_cache_sanity_check */
There is a probably a reason for this error .....
> +#endif
> +};
> +
> +/*
> + * calculate key for big_stripe_tree
> + *
> + * sect: align_bi->bi_iter.bi_sector or sh->sector
> + */
> +static inline sector_t big_stripe_index(struct r5conf *conf,
> + sector_t sect)
> +{
> + sector_t offset;
> +
> + offset = sector_div(sect, conf->chunk_sectors *
> + (conf->raid_disks - conf->max_degraded));
This code implies that 'sect' is a sector address in the array.
However you call this function as
> + bs_index = big_stripe_index(conf, sh->sector);
and sh->sector is a sector address in each underlying device.
So something is definitely wrong.
> + return sect;
> +}
> +
> +/*
> * an IO range starts from a meta data block and end at the next meta data
> * block. The io unit's the meta data block tracks data/parity followed it. io
> * unit is written to log disk with normal write, as we always flush log disk
> @@ -2293,6 +2344,8 @@ int r5c_try_caching_write(struct r5conf *conf,
> int i;
> struct r5dev *dev;
> int to_cache = 0;
> + struct big_stripe_info *bsinfo;
> + sector_t bs_index;
>
> BUG_ON(!r5c_is_writeback(log));
>
> @@ -2327,6 +2380,37 @@ int r5c_try_caching_write(struct r5conf *conf,
> }
> }
>
> + /* if the stripe is not counted in big_stripe_tree, add it now */
> + if (!test_bit(STRIPE_R5C_PARTIAL_STRIPE, &sh->state) &&
> + !test_bit(STRIPE_R5C_FULL_STRIPE, &sh->state)) {
> + bs_index = big_stripe_index(conf, sh->sector);
> + spin_lock(&log->tree_lock);
> + bsinfo = radix_tree_lookup(&log->big_stripe_tree, bs_index);
> + if (bsinfo)
> + atomic_inc(&bsinfo->count);
> + else {
> + bsinfo = mempool_alloc(log->big_stripe_info_pool, GFP_ATOMIC);
> + if (bsinfo) {
> + atomic_set(&bsinfo->count, 1);
> + radix_tree_insert(&log->big_stripe_tree, bs_index, bsinfo);
You've declared this radix_tree as
> + INIT_RADIX_TREE(&log->big_stripe_tree, GFP_ATOMIC);
so it can be using in spinlock context, but that is only reliable if you
first call radix_tree_preload() before taking the lock.
NeilBrown
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 832 bytes --]
^ permalink raw reply
* Re: [PATCH v2 1/1] block: fix blk_queue_split() resource exhaustion
From: NeilBrown @ 2017-01-04 5:12 UTC (permalink / raw)
To: Jack Wang, Lars Ellenberg
Cc: Jens Axboe, linux-raid, Michael Wang, Mike Snitzer,
Peter Zijlstra, Jiri Kosina, Ming Lei, linux-kernel, Zheng Liu,
linux-block, Takashi Iwai, linux-bcache@vger.kernel.org,
Ingo Molnar, Alasdair Kergon, Martin K. Petersen, Keith Busch,
device-mapper development, Shaohua Li, Kent Overstreet,
Kirill A. Shutemov, R
In-Reply-To: <CA+res+SjL6FrYWMroB-xjBO5gyz9pca6FQCy-arr7+4RQHeJGw@mail.gmail.com>
[-- Attachment #1.1: Type: text/plain, Size: 4832 bytes --]
On Tue, Jan 03 2017, Jack Wang wrote:
> 2016-12-23 12:45 GMT+01:00 Lars Ellenberg <lars.ellenberg@linbit.com>:
>> On Fri, Dec 23, 2016 at 09:49:53AM +0100, Michael Wang wrote:
>>> Dear Maintainers
>>>
>>> I'd like to ask for the status of this patch since we hit the
>>> issue too during our testing on md raid1.
>>>
>>> Split remainder bio_A was queued ahead, following by bio_B for
>>> lower device, at this moment raid start freezing, the loop take
>>> out bio_A firstly and deliver it, which will hung since raid is
>>> freezing, while the freezing never end since it waiting for
>>> bio_B to finish, and bio_B is still on the queue, waiting for
>>> bio_A to finish...
>>>
>>> We're looking for a good solution and we found this patch
>>> already progressed a lot, but we can't find it on linux-next,
>>> so we'd like to ask are we still planning to have this fix
>>> in upstream?
>>
>> I don't see why not, I'd even like to have it in older kernels,
>> but did not have the time and energy to push it.
>>
>> Thanks for the bump.
>>
>> Lars
>>
> Hi folks,
>
> As Michael mentioned, we hit a bug this patch is trying to fix.
> Neil suggested another way to fix it. I attached below.
> I personal prefer Neil's version as it's less code change, and straight forward.
>
> Could you share your comments, we can get one fix into mainline.
>
> Thanks,
> Jinpu
> From 69a4829a55503e496ce9c730d2c8e3dd8a08874a Mon Sep 17 00:00:00 2001
> From: NeilBrown <neilb@suse.com>
> Date: Wed, 14 Dec 2016 16:55:52 +0100
> Subject: [PATCH] block: fix deadlock between freeze_array() and wait_barrier()
>
> When we call wait_barrier, we might have some bios waiting
> in current->bio_list, which prevents the array_freeze call to
> complete. Those can only be internal READs, which have already
> passed the wait_barrier call (thus incrementing nr_pending), but
> still were not submitted to the lower level, due to generic_make_request
> logic to avoid recursive calls. In such case, we have a deadlock:
> - array_frozen is already set to 1, so wait_barrier unconditionally waits, so
> - internal READ bios will not be submitted, thus freeze_array will
> never completes.
>
> To fix this, modify generic_make_request to always sort bio_list_on_stack
> first with lowest level, then higher, until same level.
>
> Sent to linux-raid mail list:
> https://marc.info/?l=linux-raid&m=148232453107685&w=2
>
This should probably also have
Inspired-by: Lars Ellenberg <lars.ellenberg@linbit.com>
or something that, as I was building on Lars' ideas when I wrote this.
It would also be worth noting in the description that this addresses
issues with dm and drbd as well as md.
In fact, I think that with this patch in place, much of the need for the
rescue_workqueue won't exist any more. I cannot promise it can be
removed completely, but it should be to hard to make it optional and
only enabled for those few block devices that will still need it.
The rescuer should only be needed for a bioset which can be allocated
From twice in the one call the ->make_request_fn. This would include
raid0 for example, though raid0_make_reqest could be re-written to not
use a loop and to just call generic_make_request(bio) if bio != split.
Thanks,
NeilBrown
> Suggested-by: NeilBrown <neilb@suse.com>
> Signed-off-by: Jack Wang <jinpu.wang@profitbricks.com>
> ---
> block/blk-core.c | 20 ++++++++++++++++++++
> 1 file changed, 20 insertions(+)
>
> diff --git a/block/blk-core.c b/block/blk-core.c
> index 9e3ac56..47ef373 100644
> --- a/block/blk-core.c
> +++ b/block/blk-core.c
> @@ -2138,10 +2138,30 @@ blk_qc_t generic_make_request(struct bio *bio)
> struct request_queue *q = bdev_get_queue(bio->bi_bdev);
>
> if (likely(blk_queue_enter(q, __GFP_DIRECT_RECLAIM) == 0)) {
> + struct bio_list lower, same, hold;
> +
> + /* Create a fresh bio_list for all subordinate requests */
> + bio_list_init(&hold);
> + bio_list_merge(&hold, &bio_list_on_stack);
> + bio_list_init(&bio_list_on_stack);
>
> ret = q->make_request_fn(q, bio);
>
> blk_queue_exit(q);
> + /* sort new bios into those for a lower level
> + * and those for the same level
> + */
> + bio_list_init(&lower);
> + bio_list_init(&same);
> + while ((bio = bio_list_pop(&bio_list_on_stack)) != NULL)
> + if (q == bdev_get_queue(bio->bi_bdev))
> + bio_list_add(&same, bio);
> + else
> + bio_list_add(&lower, bio);
> + /* now assemble so we handle the lowest level first */
> + bio_list_merge(&bio_list_on_stack, &lower);
> + bio_list_merge(&bio_list_on_stack, &same);
> + bio_list_merge(&bio_list_on_stack, &hold);
>
> bio = bio_list_pop(current->bio_list);
> } else {
> --
> 2.7.4
[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 832 bytes --]
[-- Attachment #2: Type: text/plain, Size: 0 bytes --]
^ permalink raw reply
* Re: [RFC PATCH v2] crypto: Add IV generation algorithms
From: Binoy Jayan @ 2017-01-04 5:20 UTC (permalink / raw)
To: Gilad Ben-Yossef
Cc: Oded, Ofir, Herbert Xu, David S. Miller, linux-crypto, Mark Brown,
Arnd Bergmann, Linux kernel mailing list, Alasdair Kergon,
Mike Snitzer, dm-devel, Shaohua Li, linux-raid, Rajendra,
gilad.benyossef
In-Reply-To: <CAOtvUMc_X1DUuR8NTvOLjW7h-p=X14tFHFqe_dB8t08-nYBPcw@mail.gmail.com>
Hi Gilad,
On 3 January 2017 at 19:53, Gilad Ben-Yossef <gilad@benyossef.com> wrote:
> Good idea. I wanted to test the patch but alas it does not apply cleanly.
> You seem to have a blank line at the end of files and other small
> transgressions that makes checkpatch grumpy.
I think that is because there were some key structure changes in dm-crypt
after I sent out v2. I have resolved them while working on v3. Please wait for
the next version of the patchset. I'll send it probably by next week.
I wanted to incorporate a few changes suggested by Herbert before sending them.
> What is Not-signed-off-by ? :-)
It was just an RFC patch, not ready for merging.
Thanks,
Binoy
^ permalink raw reply
* mdadm hangs during raid5 grow
From: Sebastian Reichel @ 2017-01-04 6:42 UTC (permalink / raw)
To: linux-raid
[-- Attachment #1: Type: text/plain, Size: 8358 bytes --]
Hi,
I have a problem with hanging mdadm reshape task at 100% CPU load
(kernel thread "md2_raid5"). Any operation on the raid (i.e. mdadm
-S) is also hanging. Rebooting worked, but after triggering the
reshape (mdadm --readwrite /dev/md2) I get the same behaviour.
dmesg has this stacktrace:
[ 1813.500745] INFO: task md2_resync:3377 blocked for more than 120 seconds.
[ 1813.500778] Not tainted 4.8.0-2-amd64 #1
[ 1813.500795] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
[ 1813.500822] md2_resync D ffff93207bc98180 0 3377 2 0x00000000
[ 1813.500827] ffff93206f46d000 ffff93207642a1c0 0000000000000246 ffff932059607bf0
[ 1813.500829] ffff932059608000 ffff93206effc400 ffff93206effc688 ffff932059607d24
[ 1813.500830] ffff932059607bf0 ffff93206e0a3000 ffffffffbc7eb6d1 ffff93206e0a3000
[ 1813.500832] Call Trace:
[ 1813.500841] [<ffffffffbc7eb6d1>] ? schedule+0x31/0x80
[ 1813.500847] [<ffffffffc0356924>] ? reshape_request+0x7b4/0x910 [raid456]
[ 1813.500851] [<ffffffffbc2bce80>] ? wake_atomic_t_function+0x60/0x60
[ 1813.500854] [<ffffffffc0356da3>] ? raid5_sync_request+0x323/0x3a0 [raid456]
[ 1813.500862] [<ffffffffc0271b50>] ? is_mddev_idle+0x98/0xf3 [md_mod]
[ 1813.500866] [<ffffffffc02649a9>] ? md_do_sync+0x959/0xed0 [md_mod]
[ 1813.500868] [<ffffffffbc2bce80>] ? wake_atomic_t_function+0x60/0x60
[ 1813.500872] [<ffffffffc0261363>] ? md_thread+0x133/0x140 [md_mod]
[ 1813.500873] [<ffffffffbc7eb1c9>] ? __schedule+0x289/0x760
[ 1813.500877] [<ffffffffc0261230>] ? find_pers+0x70/0x70 [md_mod]
[ 1813.500879] [<ffffffffbc29aecd>] ? kthread+0xcd/0xf0
[ 1813.500881] [<ffffffffbc7efcaf>] ? ret_from_fork+0x1f/0x40
[ 1813.500883] [<ffffffffbc29ae00>] ? kthread_create_on_node+0x190/0x190
Is this a known bug / some patch available?
[0] http://serverfault.com/questions/773244/mdadm-stuck-reshape-operation
[1] http://serverfault.com/questions/697193/raid-5-reshape-freeze
-- Sebastian
FWIW here are some infos about the raid:
mars# uname -a
Linux mars 4.8.0-2-amd64 #1 SMP Debian 4.8.11-1 (2016-12-02) x86_64 GNU/Linux
sre@mars ~ % cat /proc/mdstat
Personalities : [raid1] [raid6] [raid5] [raid4] [linear] [multipath] [raid0] [raid10]
md2 : active raid5 sdl[4] sdk[6] sdm[3] sdj[5]
7813774720 blocks super 1.2 level 5, 64k chunk, algorithm 2 [4/4] [UUUU]
[>....................] reshape = 0.2% (10197888/3906887360) finish=157305.2min speed=412K/sec
...
mars# for disk in /dev/sd[jmlk]; smartctl -i $disk | grep "Device Model"
Device Model: WDC WD40EFRX-68WT0N0
Device Model: WDC WD40EFRX-68WT0N0
Device Model: WDC WD40EFRX-68WT0N0
Device Model: WDC WD40EFRX-68WT0N0
mars# for disk in /dev/sd[jmlk]; if smartctl -l scterc,70,70 $disk > /dev/null ; then echo "$disk is good"; fi
/dev/sdj is good
/dev/sdk is good
/dev/sdl is good
/dev/sdm is good
mars# mdadm --detail /dev/md2
/dev/md2:
Version : 1.2
Creation Time : Wed Jan 15 12:59:19 2014
Raid Level : raid5
Array Size : 7813774720 (7451.80 GiB 8001.31 GB)
Used Dev Size : 3906887360 (3725.90 GiB 4000.65 GB)
Raid Devices : 4
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Wed Jan 4 06:09:53 2017
State : clean, reshaping
Active Devices : 4
Working Devices : 4
Failed Devices : 0
Spare Devices : 0
Layout : left-symmetric
Chunk Size : 64K
Reshape Status : 0% complete
Delta Devices : 1, (3->4)
Name : mars:2 (local to host mars)
UUID : a9946f57:e2c50b35:d192467d:fa495817
Events : 39050
Number Major Minor RaidDevice State
4 8 176 0 active sync /dev/sdl
5 8 144 1 active sync /dev/sdj
3 8 192 2 active sync /dev/sdm
6 8 160 3 active sync /dev/sdk
mars# mdadm --examine /dev/sd[jmlk]
/dev/sdj:
Magic : a92b4efc
Version : 1.2
Feature Map : 0xc
Array UUID : a9946f57:e2c50b35:d192467d:fa495817
Name : mars:2 (local to host mars)
Creation Time : Wed Jan 15 12:59:19 2014
Raid Level : raid5
Raid Devices : 4
Avail Dev Size : 7813775280 (3725.90 GiB 4000.65 GB)
Array Size : 11720662080 (11177.69 GiB 12001.96 GB)
Used Dev Size : 7813774720 (3725.90 GiB 4000.65 GB)
Data Offset : 261888 sectors
Super Offset : 8 sectors
Unused Space : before=261800 sectors, after=560 sectors
State : active
Device UUID : 94bb69dc:955c3040:5cc4ecbb:28130785
Reshape pos'n : 29073984 (27.73 GiB 29.77 GB)
Delta Devices : 1 (3->4)
Update Time : Wed Jan 4 06:09:53 2017
Bad Block Log : 512 entries available at offset 72 sectors - bad blocks present.
Checksum : ed4b675b - correct
Events : 39050
Layout : left-symmetric
Chunk Size : 64K
Device Role : Active device 1
Array State : AAAA ('A' == active, '.' == missing, 'R' == replacing)
/dev/sdk:
Magic : a92b4efc
Version : 1.2
Feature Map : 0x4
Array UUID : a9946f57:e2c50b35:d192467d:fa495817
Name : mars:2 (local to host mars)
Creation Time : Wed Jan 15 12:59:19 2014
Raid Level : raid5
Raid Devices : 4
Avail Dev Size : 7813775280 (3725.90 GiB 4000.65 GB)
Array Size : 11720662080 (11177.69 GiB 12001.96 GB)
Used Dev Size : 7813774720 (3725.90 GiB 4000.65 GB)
Data Offset : 261888 sectors
Super Offset : 8 sectors
Unused Space : before=261800 sectors, after=560 sectors
State : active
Device UUID : 213a97fc:46865f42:0e8b06be:7309eac1
Reshape pos'n : 29073984 (27.73 GiB 29.77 GB)
Delta Devices : 1 (3->4)
Update Time : Wed Jan 4 06:09:53 2017
Bad Block Log : 512 entries available at offset 72 sectors
Checksum : 4ea4cc90 - correct
Events : 39050
Layout : left-symmetric
Chunk Size : 64K
Device Role : Active device 3
Array State : AAAA ('A' == active, '.' == missing, 'R' == replacing)
/dev/sdl:
Magic : a92b4efc
Version : 1.2
Feature Map : 0xc
Array UUID : a9946f57:e2c50b35:d192467d:fa495817
Name : mars:2 (local to host mars)
Creation Time : Wed Jan 15 12:59:19 2014
Raid Level : raid5
Raid Devices : 4
Avail Dev Size : 7813775280 (3725.90 GiB 4000.65 GB)
Array Size : 11720662080 (11177.69 GiB 12001.96 GB)
Used Dev Size : 7813774720 (3725.90 GiB 4000.65 GB)
Data Offset : 261888 sectors
Super Offset : 8 sectors
Unused Space : before=261800 sectors, after=560 sectors
State : active
Device UUID : a25cccf5:d23f2274:30dc0ffa:d8a79f14
Reshape pos'n : 29073984 (27.73 GiB 29.77 GB)
Delta Devices : 1 (3->4)
Update Time : Wed Jan 4 06:09:53 2017
Bad Block Log : 512 entries available at offset 72 sectors - bad blocks present.
Checksum : 85b982a - correct
Events : 39050
Layout : left-symmetric
Chunk Size : 64K
Device Role : Active device 0
Array State : AAAA ('A' == active, '.' == missing, 'R' == replacing)
/dev/sdm:
Magic : a92b4efc
Version : 1.2
Feature Map : 0xc
Array UUID : a9946f57:e2c50b35:d192467d:fa495817
Name : mars:2 (local to host mars)
Creation Time : Wed Jan 15 12:59:19 2014
Raid Level : raid5
Raid Devices : 4
Avail Dev Size : 7813775280 (3725.90 GiB 4000.65 GB)
Array Size : 11720662080 (11177.69 GiB 12001.96 GB)
Used Dev Size : 7813774720 (3725.90 GiB 4000.65 GB)
Data Offset : 261888 sectors
Super Offset : 8 sectors
Unused Space : before=261800 sectors, after=560 sectors
State : active
Device UUID : 21517788:cdc63605:5bdc0bee:d23cc234
Reshape pos'n : 29073984 (27.73 GiB 29.77 GB)
Delta Devices : 1 (3->4)
Update Time : Wed Jan 4 06:09:53 2017
Bad Block Log : 512 entries available at offset 72 sectors - bad blocks present.
Checksum : 4039a8c7 - correct
Events : 39050
Layout : left-symmetric
Chunk Size : 64K
Device Role : Active device 2
Array State : AAAA ('A' == active, '.' == missing, 'R' == replacing)
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply
* Re: [PATCH v2 00/12] Partial Parity Log for MD RAID 5
From: Artur Paszkiewicz @ 2017-01-04 8:01 UTC (permalink / raw)
To: Jes Sorensen, Shaohua Li; +Cc: NeilBrown, linux-raid
In-Reply-To: <wrfjzij8ywtu.fsf@redhat.com>
On 01/03/2017 04:42 PM, Jes Sorensen wrote:
> Artur,
>
> Did you make any progress getting the alignment issue resolved?
>
> I'd really like to get an mdadm release out the door this week, so
> getting this resolved would be awesome. Hint hint ;)
Jes,
The alignment issue is fixed but I'm currently making changes in the
kernel part after comments from Neil. This also requires modifications
in mdadm, maybe even more than in the kernel. I need a few more days to
finish this, I'll be sending the next version of the patches probably
next week. So don't let me keep you if you want to make a release this
week.
Thanks,
Artur
^ permalink raw reply
* Re: [PATCH] uapi: use wildcards to list files
From: Nicolas Dichtel @ 2017-01-04 9:03 UTC (permalink / raw)
To: Arnd Bergmann
Cc: linux-arch, linux-kernel, dri-devel, netdev, linux-media,
linux-mmc, netfilter-devel, linux-nfs, linux-raid, linux-spi,
linux-mtd, linux-rdma, fcoe-devel, alsa-devel, linux-fbdev,
xen-devel, davem, airlied, David Howells
In-Reply-To: <2108827.WpE3IvfEdH@wuerfel>
Le 03/01/2017 à 22:37, Arnd Bergmann a écrit :
> On Tuesday, January 3, 2017 3:35:44 PM CET Nicolas Dichtel wrote:
>> Regularly, when a new header is created in include/uapi/, the developer
>> forgets to add it in the corresponding Kbuild file. This error is usually
>> detected after the release is out.
>>
>> In fact, all headers under include/uapi/ should be exported, so let's
>> use wildcards.
>
> I think the idea makes a lot of sense: if a header is in uapi, we should
> really export it. However, using a wildcard expression seems a bit
> backwards here, I think we should make this implicit and not have the
> Kbuild file at all.
>
> The "header-y" syntax was originally added back when the uapi headers
> were mixed with the internal headers in the same directory. After
> David Howells introduced the separate directory for uapi, it has
> become a bit redundant.
Ok, thank you for the explanation, I was wondering why those Kbuild files were
needed.
>
> Can you try to modify scripts/Makefile.headersinst instead so we
> can simply remove the Kbuild files entirely?
I will try something.
Regards,
Nicolas
^ permalink raw reply
* Re: [lvm2 PATCH] Remove special-case for md in 69-dm-lvm-metadata.rules
From: Peter Rajnoha @ 2017-01-04 10:27 UTC (permalink / raw)
To: LVM2 development, linux-raid; +Cc: Lidong Zhong, neilb, GuoQing Jiang
In-Reply-To: <87eg0jmrgz.fsf@notabene.neil.brown.name>
On 01/04/2017 04:30 AM, NeilBrown wrote:
>
> This special casing brings no value. It appears to attempt to
> determine if the array is active yet or not, and to skip
> processing if the array has not yet been started.
Hi Neil,
those rules also have another use which is to not trigger further
unnecessary actions if the device is already up and running, hence
avoiding useless resource consumption if it brings no new information.
Currently, this is applied only for running pvscan on top of newly
activated MD device (that's why it's part of 69-dm-lvm-metad.rules
at the moment).
So what we also need is to detect the very first CHANGE event
that makes the device active and to make a difference between this
first CHANGE event and further CHANGE events which are possibly
part of the WATCH rule and any other possible CHANGE events which
do not notify about the device switching from "not ready" to "ready"
state (of course, counting with possible coldplug events).
> However, if the array hasn't been started, then "blkid" will
> not have been able to read a signature, so:
> ENV{ID_FS_TYPE}!="LVM2_member|LVM1_member", GOTO="lvm_end"
> will have caused all this code to be skipped.
>
> Further, this code causes incorrect behaviour in at least one case.
> It assumes that the first "add" event should be ignored, as it will be
> followed by a "change" event which indicates the array coming on line.
> This is consistent with how the kernel sends events, but not always
> consistent with how this script sees event.
> Specifically: if the initrd has "mdadm" support installed, but not
> "lvm2" support, then the initial "add" and "change" events will
> happen while the initrd is in charge and this file is not available.
> Once the root filesystem is mountd, this file will be available
> and "udevadm trigger --action=add" will be run.
> So the first and only event seen by this script for an md device will be
> "add", and it will incorrectly ignore it.
>
Yes, you're right that in this case, it's not behaving correctly when
the initrd doesn't have this rule while the root FS does. To fix this
issue for now, I suggest to separate those rule out of 69-dm-lvm-metad.rules
and make it a part of MD rules so that rule is always available both in
initrd and root fs when MD is used (while LVM doesn't need to be
installed in initrd).
This comes right on time because right at this very moment, I'm working
on a design for a solution which covers this area - I'll surely pass you
the design doc once it's more complete (should be in next few days) so
you we can discuss this problem further. This will cover the *standard*
notification about when the block device is ready which provides a
standard way of letting others (rules or any uevent monitors) know when
the switch from "not ready" to "ready" state happens exactly. This should
save us lots of unnecessary work that is done at the moment - we don't
need to fire scans and further inspection of the device for all the
events all the time. This work also covers identification of spurious
events coming as a result of the WATCH rule and minimization of its
impact on uevent processing performance in userspace.
--
Peter
--
lvm-devel mailing list
lvm-devel@redhat.com
https://www.redhat.com/mailman/listinfo/lvm-devel
^ permalink raw reply
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox