* [PATCH 09/13] md-cluster: always setup in-memory bitmap
From: Guoqing Jiang @ 2016-04-21 5:58 UTC (permalink / raw)
To: shli; +Cc: neilb, linux-raid, Guoqing Jiang
In-Reply-To: <1461218294-4960-1-git-send-email-gqjiang@suse.com>
The in-memory bitmap for raid is allocated on demand,
then for cluster scenario, it is possible that slave
node which received RESYNCING message doesn't have the
in-memory bitmap when master node is perform resyncing,
so we can't make bitmap is match up well among each
nodes.
So for cluster scenario, we need always preserve the
bitmap, and ensure the page will not be freed. And a
no_hijack flag is introduced to both bitmap_checkpage
and bitmap_get_counter, which makes cluster raid returns
fail once allocate failed.
And the next patch is relied on this change since it
keeps sync bitmap among each nodes during resyncing
stage.
Reviewed-by: NeilBrown <neilb@suse.com>
Signed-off-by: Guoqing Jiang <gqjiang@suse.com>
---
drivers/md/bitmap.c | 59 +++++++++++++++++++++++++++++++++++++++++------------
1 file changed, 46 insertions(+), 13 deletions(-)
diff --git a/drivers/md/bitmap.c b/drivers/md/bitmap.c
index 7df6b4f..00cf1c1 100644
--- a/drivers/md/bitmap.c
+++ b/drivers/md/bitmap.c
@@ -46,7 +46,7 @@ static inline char *bmname(struct bitmap *bitmap)
* allocated while we're using it
*/
static int bitmap_checkpage(struct bitmap_counts *bitmap,
- unsigned long page, int create)
+ unsigned long page, int create, int no_hijack)
__releases(bitmap->lock)
__acquires(bitmap->lock)
{
@@ -90,6 +90,9 @@ __acquires(bitmap->lock)
if (mappage == NULL) {
pr_debug("md/bitmap: map page allocation failed, hijacking\n");
+ /* We don't support hijack for cluster raid */
+ if (no_hijack)
+ return -ENOMEM;
/* failed - set the hijacked flag so that we can use the
* pointer as a counter */
if (!bitmap->bp[page].map)
@@ -1177,7 +1180,7 @@ static void bitmap_set_pending(struct bitmap_counts *bitmap, sector_t offset)
static bitmap_counter_t *bitmap_get_counter(struct bitmap_counts *bitmap,
sector_t offset, sector_t *blocks,
- int create);
+ int create, int no_hijack);
/*
* bitmap daemon -- periodically wakes up to clean bits and flush pages
@@ -1257,7 +1260,7 @@ void bitmap_daemon_work(struct mddev *mddev)
}
bmc = bitmap_get_counter(counts,
block,
- &blocks, 0);
+ &blocks, 0, 0);
if (!bmc) {
j |= PAGE_COUNTER_MASK;
@@ -1307,7 +1310,7 @@ void bitmap_daemon_work(struct mddev *mddev)
static bitmap_counter_t *bitmap_get_counter(struct bitmap_counts *bitmap,
sector_t offset, sector_t *blocks,
- int create)
+ int create, int no_hijack)
__releases(bitmap->lock)
__acquires(bitmap->lock)
{
@@ -1321,7 +1324,7 @@ __acquires(bitmap->lock)
sector_t csize;
int err;
- err = bitmap_checkpage(bitmap, page, create);
+ err = bitmap_checkpage(bitmap, page, create, 0);
if (bitmap->bp[page].hijacked ||
bitmap->bp[page].map == NULL)
@@ -1368,7 +1371,7 @@ int bitmap_startwrite(struct bitmap *bitmap, sector_t offset, unsigned long sect
bitmap_counter_t *bmc;
spin_lock_irq(&bitmap->counts.lock);
- bmc = bitmap_get_counter(&bitmap->counts, offset, &blocks, 1);
+ bmc = bitmap_get_counter(&bitmap->counts, offset, &blocks, 1, 0);
if (!bmc) {
spin_unlock_irq(&bitmap->counts.lock);
return 0;
@@ -1430,7 +1433,7 @@ void bitmap_endwrite(struct bitmap *bitmap, sector_t offset, unsigned long secto
bitmap_counter_t *bmc;
spin_lock_irqsave(&bitmap->counts.lock, flags);
- bmc = bitmap_get_counter(&bitmap->counts, offset, &blocks, 0);
+ bmc = bitmap_get_counter(&bitmap->counts, offset, &blocks, 0, 0);
if (!bmc) {
spin_unlock_irqrestore(&bitmap->counts.lock, flags);
return;
@@ -1474,7 +1477,7 @@ static int __bitmap_start_sync(struct bitmap *bitmap, sector_t offset, sector_t
return 1; /* always resync if no bitmap */
}
spin_lock_irq(&bitmap->counts.lock);
- bmc = bitmap_get_counter(&bitmap->counts, offset, blocks, 0);
+ bmc = bitmap_get_counter(&bitmap->counts, offset, blocks, 0, 0);
rv = 0;
if (bmc) {
/* locked */
@@ -1526,7 +1529,7 @@ void bitmap_end_sync(struct bitmap *bitmap, sector_t offset, sector_t *blocks, i
return;
}
spin_lock_irqsave(&bitmap->counts.lock, flags);
- bmc = bitmap_get_counter(&bitmap->counts, offset, blocks, 0);
+ bmc = bitmap_get_counter(&bitmap->counts, offset, blocks, 0, 0);
if (bmc == NULL)
goto unlock;
/* locked */
@@ -1604,7 +1607,7 @@ static void bitmap_set_memory_bits(struct bitmap *bitmap, sector_t offset, int n
sector_t secs;
bitmap_counter_t *bmc;
spin_lock_irq(&bitmap->counts.lock);
- bmc = bitmap_get_counter(&bitmap->counts, offset, &secs, 1);
+ bmc = bitmap_get_counter(&bitmap->counts, offset, &secs, 1, 0);
if (!bmc) {
spin_unlock_irq(&bitmap->counts.lock);
return;
@@ -2029,17 +2032,47 @@ int bitmap_resize(struct bitmap *bitmap, sector_t blocks,
chunks << chunkshift);
spin_lock_irq(&bitmap->counts.lock);
+ /* For cluster raid, need to pre-allocate bitmap */
+ if (mddev_is_clustered(bitmap->mddev)) {
+ unsigned long page;
+ for (page = 0; page < pages; page++) {
+ ret = bitmap_checkpage(&bitmap->counts, page, 1, 1);
+ if (ret) {
+ unsigned long k;
+
+ /* deallocate the page memory */
+ for (k = 0; k < page; k++) {
+ if (new_bp[k].map)
+ kfree(new_bp[k].map);
+ }
+
+ /* restore some fields from old_counts */
+ bitmap->counts.bp = old_counts.bp;
+ bitmap->counts.pages = old_counts.pages;
+ bitmap->counts.missing_pages = old_counts.pages;
+ bitmap->counts.chunkshift = old_counts.chunkshift;
+ bitmap->counts.chunks = old_counts.chunks;
+ bitmap->mddev->bitmap_info.chunksize = 1 << (old_counts.chunkshift +
+ BITMAP_BLOCK_SHIFT);
+ blocks = old_counts.chunks << old_counts.chunkshift;
+ pr_err("Could not pre-allocate in-memory bitmap for cluster raid\n");
+ break;
+ } else
+ bitmap->counts.bp[page].count += 1;
+ }
+ }
+
for (block = 0; block < blocks; ) {
bitmap_counter_t *bmc_old, *bmc_new;
int set;
bmc_old = bitmap_get_counter(&old_counts, block,
- &old_blocks, 0);
+ &old_blocks, 0, 0);
set = bmc_old && NEEDED(*bmc_old);
if (set) {
bmc_new = bitmap_get_counter(&bitmap->counts, block,
- &new_blocks, 1);
+ &new_blocks, 1, 0);
if (*bmc_new == 0) {
/* need to set on-disk bits too. */
sector_t end = block + new_blocks;
@@ -2067,7 +2100,7 @@ int bitmap_resize(struct bitmap *bitmap, sector_t blocks,
while (block < (chunks << chunkshift)) {
bitmap_counter_t *bmc;
bmc = bitmap_get_counter(&bitmap->counts, block,
- &new_blocks, 1);
+ &new_blocks, 1, 0);
if (bmc) {
/* new space. It needs to be resynced, so
* we set NEEDED_MASK.
--
2.6.6
^ permalink raw reply related
* [PATCH 10/13] md-cluster: sync bitmap when node received RESYNCING msg
From: Guoqing Jiang @ 2016-04-21 5:58 UTC (permalink / raw)
To: shli; +Cc: neilb, linux-raid, Guoqing Jiang
In-Reply-To: <1461218294-4960-1-git-send-email-gqjiang@suse.com>
If the node received RESYNCING message which means
another node will perform resync with the area, then
we don't want to do it again in another node.
Let's set RESYNC_MASK and clear NEEDED_MASK for the
region from old-low to new-low which has finished
syncing, and the region from old-hi to new-hi is about
to syncing, bitmap_sync_with_cluste is introduced for
the purpose.
Reviewed-by: NeilBrown <neilb@suse.com>
Signed-off-by: Guoqing Jiang <gqjiang@suse.com>
---
drivers/md/bitmap.c | 21 +++++++++++++++++++++
drivers/md/bitmap.h | 3 +++
drivers/md/md-cluster.c | 27 +++++++++++++++++++++++++++
3 files changed, 51 insertions(+)
diff --git a/drivers/md/bitmap.c b/drivers/md/bitmap.c
index 00cf1c1..2e198f3 100644
--- a/drivers/md/bitmap.c
+++ b/drivers/md/bitmap.c
@@ -1597,6 +1597,27 @@ void bitmap_cond_end_sync(struct bitmap *bitmap, sector_t sector, bool force)
}
EXPORT_SYMBOL(bitmap_cond_end_sync);
+void bitmap_sync_with_cluster(struct mddev *mddev,
+ sector_t old_lo, sector_t old_hi,
+ sector_t new_lo, sector_t new_hi)
+{
+ struct bitmap *bitmap = mddev->bitmap;
+ sector_t sector, blocks = 0;
+
+ for (sector = old_lo; sector < new_lo; ) {
+ bitmap_end_sync(bitmap, sector, &blocks, 0);
+ sector += blocks;
+ }
+ WARN((blocks > new_lo) && old_lo, "alignment is not correct for lo\n");
+
+ for (sector = old_hi; sector < new_hi; ) {
+ bitmap_start_sync(bitmap, sector, &blocks, 0);
+ sector += blocks;
+ }
+ WARN((blocks > new_hi) && old_hi, "alignment is not correct for hi\n");
+}
+EXPORT_SYMBOL(bitmap_sync_with_cluster);
+
static void bitmap_set_memory_bits(struct bitmap *bitmap, sector_t offset, int needed)
{
/* For each chunk covered by any of these sectors, set the
diff --git a/drivers/md/bitmap.h b/drivers/md/bitmap.h
index 5e3fcd6..5b6dd63 100644
--- a/drivers/md/bitmap.h
+++ b/drivers/md/bitmap.h
@@ -258,6 +258,9 @@ int bitmap_start_sync(struct bitmap *bitmap, sector_t offset, sector_t *blocks,
void bitmap_end_sync(struct bitmap *bitmap, sector_t offset, sector_t *blocks, int aborted);
void bitmap_close_sync(struct bitmap *bitmap);
void bitmap_cond_end_sync(struct bitmap *bitmap, sector_t sector, bool force);
+void bitmap_sync_with_cluster(struct mddev *mddev,
+ sector_t old_lo, sector_t old_hi,
+ sector_t new_lo, sector_t new_hi);
void bitmap_unplug(struct bitmap *bitmap);
void bitmap_daemon_work(struct mddev *mddev);
diff --git a/drivers/md/md-cluster.c b/drivers/md/md-cluster.c
index 30f1160..a55b5f4 100644
--- a/drivers/md/md-cluster.c
+++ b/drivers/md/md-cluster.c
@@ -85,6 +85,9 @@ struct md_cluster_info {
struct completion newdisk_completion;
wait_queue_head_t wait;
unsigned long state;
+ /* record the region in RESYNCING message */
+ sector_t sync_low;
+ sector_t sync_hi;
};
enum msg_type {
@@ -411,6 +414,30 @@ static void process_suspend_info(struct mddev *mddev,
md_wakeup_thread(mddev->thread);
return;
}
+
+ /*
+ * The bitmaps are not same for different nodes
+ * if RESYNCING is happening in one node, then
+ * the node which received the RESYNCING message
+ * probably will perform resync with the region
+ * [lo, hi] again, so we could reduce resync time
+ * a lot if we can ensure that the bitmaps among
+ * different nodes are match up well.
+ *
+ * sync_low/hi is used to record the region which
+ * arrived in the previous RESYNCING message,
+ *
+ * Call bitmap_sync_with_cluster to clear
+ * NEEDED_MASK and set RESYNC_MASK since
+ * resync thread is running in another node,
+ * so we don't need to do the resync again
+ * with the same section */
+ bitmap_sync_with_cluster(mddev, cinfo->sync_low,
+ cinfo->sync_hi,
+ lo, hi);
+ cinfo->sync_low = lo;
+ cinfo->sync_hi = hi;
+
s = kzalloc(sizeof(struct suspend_info), GFP_KERNEL);
if (!s)
return;
--
2.6.6
^ permalink raw reply related
* [PATCH 11/13] md-cluster/bitmap: fix wrong calcuation of offset
From: Guoqing Jiang @ 2016-04-21 5:58 UTC (permalink / raw)
To: shli; +Cc: neilb, linux-raid, Guoqing Jiang
In-Reply-To: <1461218294-4960-1-git-send-email-gqjiang@suse.com>
The offset is wrong in bitmap_storage_alloc, we should
set it like below in bitmap_init_from_disk().
node_offset = bitmap->cluster_slot * (DIV_ROUND_UP(store->bytes, PAGE_SIZE));
Because 'offset' is only assigned to 'page->index' and
that is usually over-written by read_sb_page. So it does
not cause problem in general, but it still need to be fixed.
Reviewed-by: NeilBrown <neilb@suse.com>
Signed-off-by: Guoqing Jiang <gqjiang@suse.com>
---
drivers/md/bitmap.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/md/bitmap.c b/drivers/md/bitmap.c
index 2e198f3..bdae67a 100644
--- a/drivers/md/bitmap.c
+++ b/drivers/md/bitmap.c
@@ -759,7 +759,7 @@ static int bitmap_storage_alloc(struct bitmap_storage *store,
bytes += sizeof(bitmap_super_t);
num_pages = DIV_ROUND_UP(bytes, PAGE_SIZE);
- offset = slot_number * (num_pages - 1);
+ offset = slot_number * num_pages;
store->filemap = kmalloc(sizeof(struct page *)
* num_pages, GFP_KERNEL);
--
2.6.6
^ permalink raw reply related
* [PATCH 12/13] md-cluster/bitmap: fix wrong page num in bitmap_file_clear_bit and bitmap_file_set_bit
From: Guoqing Jiang @ 2016-04-21 5:58 UTC (permalink / raw)
To: shli; +Cc: neilb, linux-raid, Guoqing Jiang
In-Reply-To: <1461218294-4960-1-git-send-email-gqjiang@suse.com>
The pnum passed to set_page_attr and test_page_attr should from
0 to storage.file_pages - 1, but bitmap_file_set_bit and
bitmap_file_clear_bit call set_page_attr and test_page_attr with
page->index parameter while page->index has already added node_offset
before.
So we need to minus node_offset in both bitmap_file_clear_bit
and bitmap_file_set_bit.
Reviewed-by: NeilBrown <neilb@suse.com>
Signed-off-by: Guoqing Jiang <gqjiang@suse.com>
---
drivers/md/bitmap.c | 16 +++++++++++++---
1 file changed, 13 insertions(+), 3 deletions(-)
diff --git a/drivers/md/bitmap.c b/drivers/md/bitmap.c
index bdae67a..08f4c04 100644
--- a/drivers/md/bitmap.c
+++ b/drivers/md/bitmap.c
@@ -903,6 +903,11 @@ static void bitmap_file_set_bit(struct bitmap *bitmap, sector_t block)
struct page *page;
void *kaddr;
unsigned long chunk = block >> bitmap->counts.chunkshift;
+ struct bitmap_storage *store = &bitmap->storage;
+ unsigned long node_offset = 0;
+
+ if (mddev_is_clustered(bitmap->mddev))
+ node_offset = bitmap->cluster_slot * store->file_pages;
page = filemap_get_page(&bitmap->storage, chunk);
if (!page)
@@ -918,7 +923,7 @@ static void bitmap_file_set_bit(struct bitmap *bitmap, sector_t block)
kunmap_atomic(kaddr);
pr_debug("set file bit %lu page %lu\n", bit, page->index);
/* record page number so it gets flushed to disk when unplug occurs */
- set_page_attr(bitmap, page->index, BITMAP_PAGE_DIRTY);
+ set_page_attr(bitmap, page->index - node_offset, BITMAP_PAGE_DIRTY);
}
static void bitmap_file_clear_bit(struct bitmap *bitmap, sector_t block)
@@ -927,6 +932,11 @@ static void bitmap_file_clear_bit(struct bitmap *bitmap, sector_t block)
struct page *page;
void *paddr;
unsigned long chunk = block >> bitmap->counts.chunkshift;
+ struct bitmap_storage *store = &bitmap->storage;
+ unsigned long node_offset = 0;
+
+ if (mddev_is_clustered(bitmap->mddev))
+ node_offset = bitmap->cluster_slot * store->file_pages;
page = filemap_get_page(&bitmap->storage, chunk);
if (!page)
@@ -938,8 +948,8 @@ static void bitmap_file_clear_bit(struct bitmap *bitmap, sector_t block)
else
clear_bit_le(bit, paddr);
kunmap_atomic(paddr);
- if (!test_page_attr(bitmap, page->index, BITMAP_PAGE_NEEDWRITE)) {
- set_page_attr(bitmap, page->index, BITMAP_PAGE_PENDING);
+ if (!test_page_attr(bitmap, page->index - node_offset, BITMAP_PAGE_NEEDWRITE)) {
+ set_page_attr(bitmap, page->index - node_offset, BITMAP_PAGE_PENDING);
bitmap->allclean = 0;
}
}
--
2.6.6
^ permalink raw reply related
* [PATCH 13/13] md-cluster/bitmap: unplug bitmap to sync dirty pages to disk
From: Guoqing Jiang @ 2016-04-21 5:58 UTC (permalink / raw)
To: shli; +Cc: neilb, linux-raid, Guoqing Jiang
In-Reply-To: <1461218294-4960-1-git-send-email-gqjiang@suse.com>
This patch is doing two distinct but related things.
1. It adds bitmap_unplug() for the main bitmap (mddev->bitmap). As bit
have been set, BITMAP_PAGE_DIRTY is set so bitmap_deamon_work() will
not write those pages out in its regular scans, only bitmap_unplug()
will. If there are no writes to the array, bitmap_unplug() won't be
called, so we need to call it explicitly here.
2. bitmap_write_all() is a bit of a confusing interface as it doesn't
actually write anything. The current code for writing "bitmap" works
but this change makes it a bit clearer.
Reviewed-by: NeilBrown <neilb@suse.com>
Signed-off-by: Guoqing Jiang <gqjiang@suse.com>
---
drivers/md/bitmap.c | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/drivers/md/bitmap.c b/drivers/md/bitmap.c
index 08f4c04..9830dbf 100644
--- a/drivers/md/bitmap.c
+++ b/drivers/md/bitmap.c
@@ -1921,14 +1921,14 @@ int bitmap_copy_from_slot(struct mddev *mddev, int slot,
if (clear_bits) {
bitmap_update_sb(bitmap);
- /* Setting this for the ev_page should be enough.
- * And we do not require both write_all and PAGE_DIRT either
- */
+ /* BITMAP_PAGE_PENDING is set, but bitmap_unplug needs
+ * BITMAP_PAGE_DIRTY or _NEEDWRITE to write ... */
for (i = 0; i < bitmap->storage.file_pages; i++)
- set_page_attr(bitmap, i, BITMAP_PAGE_DIRTY);
- bitmap_write_all(bitmap);
+ if (test_page_attr(bitmap, i, BITMAP_PAGE_PENDING))
+ set_page_attr(bitmap, i, BITMAP_PAGE_NEEDWRITE);
bitmap_unplug(bitmap);
}
+ bitmap_unplug(mddev->bitmap);
*low = lo;
*high = hi;
err:
--
2.6.6
^ permalink raw reply related
* Re: [PATCH 01/13] md-cluster: change resync lock from asynchronous to synchronous
From: kbuild test robot @ 2016-04-21 6:20 UTC (permalink / raw)
Cc: kbuild-all, shli, neilb, linux-raid, Guoqing Jiang
In-Reply-To: <1461218294-4960-2-git-send-email-gqjiang@suse.com>
[-- Attachment #1: Type: text/plain, Size: 2879 bytes --]
Hi,
[auto build test WARNING on v4.6-rc4]
[also build test WARNING on next-20160420]
[if your patch is applied to the wrong git tree, please drop us a note to help improving the system]
url: https://github.com/0day-ci/linux/commits/Guoqing-Jiang/The-latest-patches-for-md-cluster/20160421-140507
config: x86_64-randconfig-x010-201616 (attached as .config)
reproduce:
# save the attached .config to linux build tree
make ARCH=x86_64
All warnings (new ones prefixed by >>):
drivers/md/md.c: In function 'md_start_sync':
>> drivers/md/md.c:8244:1: warning: label 'out' defined but not used [-Wunused-label]
out:
^
vim +/out +8244 drivers/md/md.c
60fc1370 NeilBrown 2011-12-23 8228 }
b4c4c7b8 NeilBrown 2007-02-28 8229 }
746d3207 NeilBrown 2013-04-24 8230 no_add:
6dafab6b NeilBrown 2012-09-19 8231 if (removed)
6dafab6b NeilBrown 2012-09-19 8232 set_bit(MD_CHANGE_DEVS, &mddev->flags);
b4c4c7b8 NeilBrown 2007-02-28 8233 return spares;
b4c4c7b8 NeilBrown 2007-02-28 8234 }
7ebc0be7 NeilBrown 2011-01-14 8235
ac05f256 NeilBrown 2014-09-30 8236 static void md_start_sync(struct work_struct *ws)
ac05f256 NeilBrown 2014-09-30 8237 {
ac05f256 NeilBrown 2014-09-30 8238 struct mddev *mddev = container_of(ws, struct mddev, del_work);
c186b128 Goldwyn Rodrigues 2015-09-30 8239 int ret = 0;
c186b128 Goldwyn Rodrigues 2015-09-30 8240
ac05f256 NeilBrown 2014-09-30 8241 mddev->sync_thread = md_register_thread(md_do_sync,
ac05f256 NeilBrown 2014-09-30 8242 mddev,
ac05f256 NeilBrown 2014-09-30 8243 "resync");
c186b128 Goldwyn Rodrigues 2015-09-30 @8244 out:
ac05f256 NeilBrown 2014-09-30 8245 if (!mddev->sync_thread) {
c186b128 Goldwyn Rodrigues 2015-09-30 8246 if (!(mddev_is_clustered(mddev) && ret == -EAGAIN))
ac05f256 NeilBrown 2014-09-30 8247 printk(KERN_ERR "%s: could not start resync"
ac05f256 NeilBrown 2014-09-30 8248 " thread...\n",
ac05f256 NeilBrown 2014-09-30 8249 mdname(mddev));
ac05f256 NeilBrown 2014-09-30 8250 /* leave the spares where they are, it shouldn't hurt */
ac05f256 NeilBrown 2014-09-30 8251 clear_bit(MD_RECOVERY_SYNC, &mddev->recovery);
ac05f256 NeilBrown 2014-09-30 8252 clear_bit(MD_RECOVERY_RESHAPE, &mddev->recovery);
:::::: The code at line 8244 was first introduced by commit
:::::: c186b128cda5a246da25f474e4689cb2bfacfcac md-cluster: Perform resync/recovery under a DLM lock
:::::: TO: Goldwyn Rodrigues <rgoldwyn@suse.com>
:::::: CC: Goldwyn Rodrigues <rgoldwyn@suse.com>
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
[-- Attachment #2: .config.gz --]
[-- Type: application/octet-stream, Size: 23720 bytes --]
^ permalink raw reply
* Re: [PATCH 08/13] md: set MD_CHANGE_PENDING in a spinlocked region
From: kbuild test robot @ 2016-04-21 6:26 UTC (permalink / raw)
Cc: kbuild-all, shli, neilb, linux-raid, Guoqing Jiang
In-Reply-To: <1461218294-4960-9-git-send-email-gqjiang@suse.com>
[-- Attachment #1: Type: text/plain, Size: 1499 bytes --]
Hi,
[auto build test ERROR on v4.6-rc4]
[also build test ERROR on next-20160420]
[if your patch is applied to the wrong git tree, please drop us a note to help improving the system]
url: https://github.com/0day-ci/linux/commits/Guoqing-Jiang/The-latest-patches-for-md-cluster/20160421-140507
config: x86_64-randconfig-x010-201616 (attached as .config)
reproduce:
# save the attached .config to linux build tree
make ARCH=x86_64
All errors (new ones prefixed by >>):
drivers/md/md.c: In function 'md_update_sb':
>> drivers/md/md.c:2303:20: error: 'struct mddev' has no member named 'write_lock'
spin_lock(&mddev->write_lock);
^
drivers/md/md.c: In function 'md_start_sync':
drivers/md/md.c:8262:1: warning: label 'out' defined but not used [-Wunused-label]
out:
^
vim +2303 drivers/md/md.c
2297 nospares = 1;
2298 ret = md_cluster_ops->metadata_update_start(mddev);
2299 /* Has someone else has updated the sb */
2300 if (!does_sb_need_changing(mddev)) {
2301 if (ret == 0)
2302 md_cluster_ops->metadata_update_cancel(mddev);
> 2303 spin_lock(&mddev->write_lock);
2304 if (!test_bit(MD_CHANGE_DEVS, &mddev->flags) &&
2305 !test_bit(MD_CHANGE_CLEAN, &mddev->flags))
2306 clear_bit(MD_CHANGE_PENDING, &mddev->flags);
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
[-- Attachment #2: .config.gz --]
[-- Type: application/octet-stream, Size: 23720 bytes --]
^ permalink raw reply
* [PATCH V2 01/13] md-cluster: change resync lock from asynchronous to synchronous
From: Guoqing Jiang @ 2016-04-21 6:55 UTC (permalink / raw)
To: shli; +Cc: neilb, linux-raid, Guoqing Jiang
In-Reply-To: <1461218294-4960-2-git-send-email-gqjiang@suse.com>
If multiple nodes choose to attempt do resync at the same time
they need to be serialized so they don't duplicate effort. This
serialization is done by locking the 'resync' DLM lock.
Currently if a node cannot get the lock immediately it doesn't
request notification when the lock becomes available (i.e.
DLM_LKF_NOQUEUE is set), so it may not reliably find out when it
is safe to try again.
Rather than trying to arrange an async wake-up when the lock
becomes available, switch to using synchronous locking - this is
a lot easier to think about. As it is not permitted to block in
the 'raid1d' thread, move the locking to the resync thread. So
the rsync thread is forked immediately, but it blocks until the
resync lock is available. Once the lock is locked it checks again
if any resync action is needed.
A particular symptom of the current problem is that a node can
get stuck with "resync=pending" indefinitely.
Reviewed-by: NeilBrown <neilb@suse.com>
Signed-off-by: Guoqing Jiang <gqjiang@suse.com>
---
Changes:
1. fix warning reported by auto build test
drivers/md/md-cluster.c | 2 --
drivers/md/md.c | 23 ++++++++++++++---------
2 files changed, 14 insertions(+), 11 deletions(-)
diff --git a/drivers/md/md-cluster.c b/drivers/md/md-cluster.c
index dd97d42..12fbfec 100644
--- a/drivers/md/md-cluster.c
+++ b/drivers/md/md-cluster.c
@@ -937,7 +937,6 @@ static void metadata_update_cancel(struct mddev *mddev)
static int resync_start(struct mddev *mddev)
{
struct md_cluster_info *cinfo = mddev->cluster_info;
- cinfo->resync_lockres->flags |= DLM_LKF_NOQUEUE;
return dlm_lock_sync(cinfo->resync_lockres, DLM_LOCK_EX);
}
@@ -967,7 +966,6 @@ static int resync_info_update(struct mddev *mddev, sector_t lo, sector_t hi)
static int resync_finish(struct mddev *mddev)
{
struct md_cluster_info *cinfo = mddev->cluster_info;
- cinfo->resync_lockres->flags &= ~DLM_LKF_NOQUEUE;
dlm_unlock_sync(cinfo->resync_lockres);
return resync_info_update(mddev, 0, 0);
}
diff --git a/drivers/md/md.c b/drivers/md/md.c
index 194580f..6a0a5b2 100644
--- a/drivers/md/md.c
+++ b/drivers/md/md.c
@@ -7784,6 +7784,7 @@ void md_do_sync(struct md_thread *thread)
char *desc, *action = NULL;
struct blk_plug plug;
bool cluster_resync_finished = false;
+ int ret;
/* just incase thread restarts... */
if (test_bit(MD_RECOVERY_DONE, &mddev->recovery))
@@ -7793,6 +7794,19 @@ void md_do_sync(struct md_thread *thread)
return;
}
+ if (mddev_is_clustered(mddev)) {
+ ret = md_cluster_ops->resync_start(mddev);
+ if (ret)
+ goto skip;
+
+ if (!(test_bit(MD_RECOVERY_SYNC, &mddev->recovery) ||
+ test_bit(MD_RECOVERY_RESHAPE, &mddev->recovery) ||
+ test_bit(MD_RECOVERY_RECOVER, &mddev->recovery))
+ && ((unsigned long long)mddev->curr_resync_completed
+ < (unsigned long long)mddev->resync_max_sectors))
+ goto skip;
+ }
+
if (test_bit(MD_RECOVERY_SYNC, &mddev->recovery)) {
if (test_bit(MD_RECOVERY_CHECK, &mddev->recovery)) {
desc = "data-check";
@@ -8224,18 +8238,9 @@ static void md_start_sync(struct work_struct *ws)
struct mddev *mddev = container_of(ws, struct mddev, del_work);
int ret = 0;
- if (mddev_is_clustered(mddev)) {
- ret = md_cluster_ops->resync_start(mddev);
- if (ret) {
- mddev->sync_thread = NULL;
- goto out;
- }
- }
-
mddev->sync_thread = md_register_thread(md_do_sync,
mddev,
"resync");
-out:
if (!mddev->sync_thread) {
if (!(mddev_is_clustered(mddev) && ret == -EAGAIN))
printk(KERN_ERR "%s: could not start resync"
--
2.6.6
^ permalink raw reply related
* [PATCH V2 08/13] md: set MD_CHANGE_PENDING in a spinlocked region
From: Guoqing Jiang @ 2016-04-21 6:58 UTC (permalink / raw)
To: shli; +Cc: neilb, linux-raid, Guoqing Jiang
In-Reply-To: <1461218294-4960-9-git-send-email-gqjiang@suse.com>
Some code waits for a metadata update by:
1. flagging that it is needed (MD_CHANGE_DEVS or MD_CHANGE_CLEAN)
2. setting MD_CHANGE_PENDING and waking the management thread
3. waiting for MD_CHANGE_PENDING to be cleared
If the first two are done without locking, the code in md_update_sb()
which checks if it needs to repeat might test if an update is needed
before step 1, then clear MD_CHANGE_PENDING after step 2, resulting
in the wait returning early.
So make sure all places that set MD_CHANGE_PENDING are protected by
mddev->lock.
Reviewed-by: NeilBrown <neilb@suse.com>
Signed-off-by: Guoqing Jiang <gqjiang@suse.com>
---
Changes:
1. s/write_lock/lock which is reported by auto build
drivers/md/md.c | 22 +++++++++++++++++-----
drivers/md/raid1.c | 2 ++
drivers/md/raid10.c | 6 +++++-
drivers/md/raid5-cache.c | 2 ++
drivers/md/raid5.c | 2 ++
5 files changed, 28 insertions(+), 6 deletions(-)
diff --git a/drivers/md/md.c b/drivers/md/md.c
index bf2b74d..e74657e 100644
--- a/drivers/md/md.c
+++ b/drivers/md/md.c
@@ -2293,12 +2293,18 @@ repeat:
if (mddev_is_clustered(mddev)) {
if (test_and_clear_bit(MD_CHANGE_DEVS, &mddev->flags))
force_change = 1;
+ if (test_and_clear_bit(MD_CHANGE_CLEAN, &mddev->flags))
+ nospares = 1;
ret = md_cluster_ops->metadata_update_start(mddev);
/* Has someone else has updated the sb */
if (!does_sb_need_changing(mddev)) {
if (ret == 0)
md_cluster_ops->metadata_update_cancel(mddev);
- clear_bit(MD_CHANGE_PENDING, &mddev->flags);
+ spin_lock(&mddev->lock);
+ if (!test_bit(MD_CHANGE_DEVS, &mddev->flags) &&
+ !test_bit(MD_CHANGE_CLEAN, &mddev->flags))
+ clear_bit(MD_CHANGE_PENDING, &mddev->flags);
+ spin_unlock(&mddev->lock);
return;
}
}
@@ -2434,7 +2440,8 @@ repeat:
spin_lock(&mddev->lock);
if (mddev->in_sync != sync_req ||
- test_bit(MD_CHANGE_DEVS, &mddev->flags)) {
+ test_bit(MD_CHANGE_DEVS, &mddev->flags) ||
+ test_bit(MD_CHANGE_CLEAN, &mddev->flags)) {
/* have to write it out again */
spin_unlock(&mddev->lock);
goto repeat;
@@ -8145,18 +8152,20 @@ void md_do_sync(struct md_thread *thread)
}
}
skip:
- set_bit(MD_CHANGE_DEVS, &mddev->flags);
-
if (mddev_is_clustered(mddev) &&
ret == 0) {
/* set CHANGE_PENDING here since maybe another
* update is needed, so other nodes are informed */
+ spin_lock(&mddev->lock);
+ set_bit(MD_CHANGE_DEVS, &mddev->flags);
set_bit(MD_CHANGE_PENDING, &mddev->flags);
+ spin_unlock(&mddev->lock);
md_wakeup_thread(mddev->thread);
wait_event(mddev->sb_wait,
!test_bit(MD_CHANGE_PENDING, &mddev->flags));
md_cluster_ops->resync_finish(mddev);
- }
+ } else
+ set_bit(MD_CHANGE_DEVS, &mddev->flags);
spin_lock(&mddev->lock);
if (!test_bit(MD_RECOVERY_INTR, &mddev->recovery)) {
@@ -8548,6 +8557,7 @@ EXPORT_SYMBOL(md_finish_reshape);
int rdev_set_badblocks(struct md_rdev *rdev, sector_t s, int sectors,
int is_new)
{
+ struct mddev *mddev = rdev->mddev;
int rv;
if (is_new)
s += rdev->new_data_offset;
@@ -8557,8 +8567,10 @@ int rdev_set_badblocks(struct md_rdev *rdev, sector_t s, int sectors,
if (rv == 0) {
/* Make sure they get written out promptly */
sysfs_notify_dirent_safe(rdev->sysfs_state);
+ spin_lock(&mddev->lock);
set_bit(MD_CHANGE_CLEAN, &rdev->mddev->flags);
set_bit(MD_CHANGE_PENDING, &rdev->mddev->flags);
+ spin_unlock(&mddev->lock);
md_wakeup_thread(rdev->mddev->thread);
return 1;
} else
diff --git a/drivers/md/raid1.c b/drivers/md/raid1.c
index a7f2b9c..985fa07 100644
--- a/drivers/md/raid1.c
+++ b/drivers/md/raid1.c
@@ -1474,8 +1474,10 @@ static void raid1_error(struct mddev *mddev, struct md_rdev *rdev)
* if recovery is running, make sure it aborts.
*/
set_bit(MD_RECOVERY_INTR, &mddev->recovery);
+ spin_lock(&mddev->lock);
set_bit(MD_CHANGE_DEVS, &mddev->flags);
set_bit(MD_CHANGE_PENDING, &mddev->flags);
+ spin_unlock(&mddev->lock);
printk(KERN_ALERT
"md/raid1:%s: Disk failure on %s, disabling device.\n"
"md/raid1:%s: Operation continuing on %d devices.\n",
diff --git a/drivers/md/raid10.c b/drivers/md/raid10.c
index e3fd725..98a4cf1 100644
--- a/drivers/md/raid10.c
+++ b/drivers/md/raid10.c
@@ -1102,8 +1102,10 @@ static void __make_request(struct mddev *mddev, struct bio *bio)
bio->bi_iter.bi_sector < conf->reshape_progress))) {
/* Need to update reshape_position in metadata */
mddev->reshape_position = conf->reshape_progress;
+ spin_lock(&mddev->lock);
set_bit(MD_CHANGE_DEVS, &mddev->flags);
set_bit(MD_CHANGE_PENDING, &mddev->flags);
+ spin_unlock(&mddev->lock);
md_wakeup_thread(mddev->thread);
wait_event(mddev->sb_wait,
!test_bit(MD_CHANGE_PENDING, &mddev->flags));
@@ -1585,15 +1587,17 @@ static void raid10_error(struct mddev *mddev, struct md_rdev *rdev)
}
if (test_and_clear_bit(In_sync, &rdev->flags))
mddev->degraded++;
+ spin_unlock_irqrestore(&conf->device_lock, flags);
/*
* If recovery is running, make sure it aborts.
*/
set_bit(MD_RECOVERY_INTR, &mddev->recovery);
set_bit(Blocked, &rdev->flags);
set_bit(Faulty, &rdev->flags);
+ spin_lock(&mddev->lock);
set_bit(MD_CHANGE_DEVS, &mddev->flags);
set_bit(MD_CHANGE_PENDING, &mddev->flags);
- spin_unlock_irqrestore(&conf->device_lock, flags);
+ spin_unlock(&mddev->lock);
printk(KERN_ALERT
"md/raid10:%s: Disk failure on %s, disabling device.\n"
"md/raid10:%s: Operation continuing on %d devices.\n",
diff --git a/drivers/md/raid5-cache.c b/drivers/md/raid5-cache.c
index 9531f5f..2ba9366 100644
--- a/drivers/md/raid5-cache.c
+++ b/drivers/md/raid5-cache.c
@@ -712,8 +712,10 @@ static void r5l_write_super_and_discard_space(struct r5l_log *log,
* in_teardown check workaround this issue.
*/
if (!log->in_teardown) {
+ spin_lock(&mddev->lock);
set_bit(MD_CHANGE_DEVS, &mddev->flags);
set_bit(MD_CHANGE_PENDING, &mddev->flags);
+ spin_unlock(&mddev->lock);
md_wakeup_thread(mddev->thread);
wait_event(mddev->sb_wait,
!test_bit(MD_CHANGE_PENDING, &mddev->flags) ||
diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c
index 8ab8b65..d4a1e37 100644
--- a/drivers/md/raid5.c
+++ b/drivers/md/raid5.c
@@ -2514,8 +2514,10 @@ static void raid5_error(struct mddev *mddev, struct md_rdev *rdev)
set_bit(Blocked, &rdev->flags);
set_bit(Faulty, &rdev->flags);
+ spin_lock(&mddev->lock);
set_bit(MD_CHANGE_DEVS, &mddev->flags);
set_bit(MD_CHANGE_PENDING, &mddev->flags);
+ spin_unlock(&mddev->lock);
printk(KERN_ALERT
"md/raid:%s: Disk failure on %s, disabling device.\n"
"md/raid:%s: Operation continuing on %d devices.\n",
--
2.6.6
^ permalink raw reply related
* Re: [PATCH 09/13] md-cluster: always setup in-memory bitmap
From: kbuild test robot @ 2016-04-21 7:00 UTC (permalink / raw)
Cc: kbuild-all, shli, neilb, linux-raid, Guoqing Jiang
In-Reply-To: <1461218294-4960-10-git-send-email-gqjiang@suse.com>
Hi,
[auto build test WARNING on v4.6-rc4]
[also build test WARNING on next-20160420]
[if your patch is applied to the wrong git tree, please drop us a note to help improving the system]
url: https://github.com/0day-ci/linux/commits/Guoqing-Jiang/The-latest-patches-for-md-cluster/20160421-140507
coccinelle warnings: (new ones prefixed by >>)
>> drivers/md/bitmap.c:2049:6-11: WARNING: NULL check before freeing functions like kfree, debugfs_remove, debugfs_remove_recursive or usb_free_urb is not needed. Maybe consider reorganizing relevant code to avoid passing NULL values.
Please review and possibly fold the followup patch.
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
^ permalink raw reply
* [PATCH] md-cluster: fix ifnullfree.cocci warnings
From: kbuild test robot @ 2016-04-21 7:00 UTC (permalink / raw)
Cc: kbuild-all, shli, neilb, linux-raid, Guoqing Jiang
In-Reply-To: <1461218294-4960-10-git-send-email-gqjiang@suse.com>
drivers/md/bitmap.c:2049:6-11: WARNING: NULL check before freeing functions like kfree, debugfs_remove, debugfs_remove_recursive or usb_free_urb is not needed. Maybe consider reorganizing relevant code to avoid passing NULL values.
NULL check before some freeing functions is not needed.
Based on checkpatch warning
"kfree(NULL) is safe this check is probably not required"
and kfreeaddr.cocci by Julia Lawall.
Generated by: scripts/coccinelle/free/ifnullfree.cocci
CC: Guoqing Jiang <gqjiang@suse.com>
Signed-off-by: Fengguang Wu <fengguang.wu@intel.com>
---
bitmap.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
--- a/drivers/md/bitmap.c
+++ b/drivers/md/bitmap.c
@@ -2045,8 +2045,7 @@ int bitmap_resize(struct bitmap *bitmap,
/* deallocate the page memory */
for (k = 0; k < page; k++) {
- if (new_bp[k].map)
- kfree(new_bp[k].map);
+ kfree(new_bp[k].map);
}
/* restore some fields from old_counts */
^ permalink raw reply
* Re: [PATCH] md-cluster: fix ifnullfree.cocci warnings
From: Guoqing Jiang @ 2016-04-21 9:10 UTC (permalink / raw)
To: kbuild test robot; +Cc: kbuild-all, shli, neilb, linux-raid
In-Reply-To: <20160421070035.GA210949@ivytown2>
On 04/21/2016 03:00 PM, kbuild test robot wrote:
> drivers/md/bitmap.c:2049:6-11: WARNING: NULL check before freeing functions like kfree, debugfs_remove, debugfs_remove_recursive or usb_free_urb is not needed. Maybe consider reorganizing relevant code to avoid passing NULL values.
>
> NULL check before some freeing functions is not needed.
>
> Based on checkpatch warning
> "kfree(NULL) is safe this check is probably not required"
> and kfreeaddr.cocci by Julia Lawall.
Oops, I missed it.
Acked-by: Guoqing Jiang <gqjiang@suse.com>
Thanks,
Guoqing
> Generated by: scripts/coccinelle/free/ifnullfree.cocci
>
> CC: Guoqing Jiang <gqjiang@suse.com>
> Signed-off-by: Fengguang Wu <fengguang.wu@intel.com>
> ---
>
> bitmap.c | 3 +--
> 1 file changed, 1 insertion(+), 2 deletions(-)
>
> --- a/drivers/md/bitmap.c
> +++ b/drivers/md/bitmap.c
> @@ -2045,8 +2045,7 @@ int bitmap_resize(struct bitmap *bitmap,
>
> /* deallocate the page memory */
> for (k = 0; k < page; k++) {
> - if (new_bp[k].map)
> - kfree(new_bp[k].map);
> + kfree(new_bp[k].map);
> }
>
> /* restore some fields from old_counts */
> --
> 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
* Re: Hard CPU Lockup when accessing MD RAID5
From: Daniel Walker @ 2016-04-21 22:47 UTC (permalink / raw)
To: linux-raid
In-Reply-To: <22295.41020.927361.583034@quad.stoffel.home>
Hi,
Well, things have gone from bad to worse in my eyes..
We have had the following hardware replaced: Chassis, Motherboard, CPUs,
RAM, SAS Cable, SAS Controller and the PSUs, basically we are down to
just the harddrives and it is still crashing..
This is a rather long one :)
Apr 21 23:55:19 [ 785.975018] NMI watchdog: Watchdog detected hard
LOCKUP on cpu 1
Apr 21 23:55:19
Apr 21 23:55:19 [ 785.975110] Modules linked in:
Apr 21 23:55:19 iptable_mangle
Apr 21 23:55:19 netconsole
Apr 21 23:55:19 configfs
Apr 21 23:55:19 tun
Apr 21 23:55:19 xt_multiport
Apr 21 23:55:19 ip6table_filter
Apr 21 23:55:19 ip6_tables
Apr 21 23:55:19 iptable_filter
Apr 21 23:55:19 ip_tables
Apr 21 23:55:19 x_tables
Apr 21 23:55:19 bridge
Apr 21 23:55:19 stp
Apr 21 23:55:19 llc
Apr 21 23:55:19 bonding
Apr 21 23:55:19 ext4
Apr 21 23:55:19 crc16
Apr 21 23:55:19 mbcache
Apr 21 23:55:19 jbd2
Apr 21 23:55:19 raid1
Apr 21 23:55:19 raid0
Apr 21 23:55:19 raid456
Apr 21 23:55:19 async_raid6_recov
Apr 21 23:55:19 async_memcpy
Apr 21 23:55:19 async_pq
Apr 21 23:55:19 async_xor
Apr 21 23:55:19 xor
Apr 21 23:55:19 async_tx
Apr 21 23:55:19 raid6_pq
Apr 21 23:55:19 md_mod
Apr 21 23:55:19 sg
Apr 21 23:55:19 sd_mod
Apr 21 23:55:19 hid_generic
Apr 21 23:55:19 usbhid
Apr 21 23:55:19 hid
Apr 21 23:55:19 iTCO_wdt
Apr 21 23:55:19 iTCO_vendor_support
Apr 21 23:55:19 x86_pkg_temp_thermal
Apr 21 23:55:19 intel_powerclamp
Apr 21 23:55:19 coretemp
Apr 21 23:55:19 crct10dif_pclmul
Apr 21 23:55:19 crc32_pclmul
Apr 21 23:55:19 crc32c_intel
Apr 21 23:55:19 ghash_clmulni_intel
Apr 21 23:55:19 cryptd
Apr 21 23:55:19 xhci_pci
Apr 21 23:55:19 ahci
Apr 21 23:55:19 igb
Apr 21 23:55:19 ehci_pci
Apr 21 23:55:19 i2c_algo_bit
Apr 21 23:55:19 xhci_hcd
Apr 21 23:55:19 ptp
Apr 21 23:55:19 ehci_hcd
Apr 21 23:55:19 libahci
Apr 21 23:55:19 mpt3sas
Apr 21 23:55:19 sb_edac
Apr 21 23:55:19 i2c_i801
Apr 21 23:55:19 pps_core
Apr 21 23:55:19 edac_core
Apr 21 23:55:19 mei_me
Apr 21 23:55:19 raid_class
Apr 21 23:55:19 lpc_ich
Apr 21 23:55:19 libata
Apr 21 23:55:19 scsi_transport_sas
Apr 21 23:55:19 usbcore
Apr 21 23:55:19 mfd_core
Apr 21 23:55:19 mei
Apr 21 23:55:19 usb_common
Apr 21 23:55:19 i2c_core
Apr 21 23:55:19 ioatdma
Apr 21 23:55:19 scsi_mod
Apr 21 23:55:19 dca
Apr 21 23:55:19 ipmi_si
Apr 21 23:55:19 ipmi_msghandler
Apr 21 23:55:19 acpi_power_meter
Apr 21 23:55:19 acpi_pad
Apr 21 23:55:19 tpm_tis
Apr 21 23:55:19 tpm
Apr 21 23:55:19 processor
Apr 21 23:55:19 button
Apr 21 23:55:19
Apr 21 23:55:19 [ 785.980450] CPU: 1 PID: 14630 Comm: kworker/u65:2
Not tainted 4.5.1 #1
Apr 21 23:55:19 [ 785.980528] Hardware name: Supermicro Super
Server/X10DRi-LN4+, BIOS 1.0b 01/29/2015
Apr 21 23:55:19 [ 785.980616] Workqueue: writeback wb_workfn
Apr 21 23:55:19 (flush-9:11)
Apr 21 23:55:19
Apr 21 23:55:19 [ 785.980818] 0000000000000000
Apr 21 23:55:19 ffff881fffc25bd0
Apr 21 23:55:19 ffffffff812e00b8
Apr 21 23:55:19 0000000000000000
Apr 21 23:55:19
Apr 21 23:55:19 [ 785.981148] 0000000000000000
Apr 21 23:55:19 ffff881fffc25be8
Apr 21 23:55:19 ffffffff810dff1d
Apr 21 23:55:19 ffff881ff2cc0000
Apr 21 23:55:19
Apr 21 23:55:19 [ 785.981479] ffff881fffc25c20
Apr 21 23:55:19 ffffffff8110f8f8
Apr 21 23:55:19 0000000000000001
Apr 21 23:55:19 ffff881fffc2af00
Apr 21 23:55:19
Apr 21 23:55:19 [ 785.981810] Call Trace:
Apr 21 23:55:19 [ 785.981897] <NMI>
Apr 21 23:55:19 [<ffffffff812e00b8>] dump_stack+0x4d/0x65
Apr 21 23:55:19 [ 785.982065] [<ffffffff810dff1d>]
watchdog_overflow_callback+0xdd/0xf0
Apr 21 23:55:19 [ 785.982165] [<ffffffff8110f8f8>]
__perf_event_overflow+0x88/0x1d0
Apr 21 23:55:19 [ 785.982261] [<ffffffff811103e4>]
perf_event_overflow+0x14/0x20
Apr 21 23:55:19 [ 785.982358] [<ffffffff8101e320>]
intel_pmu_handle_irq+0x1d0/0x4a0
Apr 21 23:55:19 [ 785.982458] [<ffffffff810162d8>]
perf_event_nmi_handler+0x28/0x50
Apr 21 23:55:19 [ 785.982554] [<ffffffff81008121>] nmi_handle+0x61/0x110
Apr 21 23:55:19 [ 785.982648] [<ffffffff810082e7>] do_nmi+0x117/0x3e0
Apr 21 23:55:19 [ 785.982746] [<ffffffff814dae97>]
end_repeat_nmi+0x1a/0x1e
Apr 21 23:55:19 [ 785.982844] [<ffffffffa01c4084>] ?
__release_stripe+0x4/0x20 [raid456]
Apr 21 23:55:19 [ 785.982941] [<ffffffffa01c4084>] ?
__release_stripe+0x4/0x20 [raid456]
Apr 21 23:55:19 [ 785.983038] [<ffffffffa01c4084>] ?
__release_stripe+0x4/0x20 [raid456]
Apr 21 23:55:19 [ 785.983134] <<EOE>>
Apr 21 23:55:19 [<ffffffffa01c560b>] ? raid5_unplug+0x8b/0x130 [raid456]
Apr 21 23:55:19 [ 785.983316] [<ffffffff812b9b98>]
blk_flush_plug_list+0xa8/0x210
Apr 21 23:55:19 [ 785.983411] [<ffffffff812ba0a4>]
blk_finish_plug+0x24/0x40
Apr 21 23:55:19 [ 785.983506] [<ffffffff811b69a2>]
wb_writeback+0x172/0x2d0
Apr 21 23:55:19 [ 785.983600] [<ffffffff811b716f>] wb_workfn+0x20f/0x3c0
Apr 21 23:55:19 [ 785.983698] [<ffffffff81067513>]
process_one_work+0x143/0x400
Apr 21 23:55:19 [ 785.983793] [<ffffffff81067cc1>]
worker_thread+0x61/0x490
Apr 21 23:55:19 [ 785.983888] [<ffffffff81067c60>] ?
max_active_store+0x60/0x60
Apr 21 23:55:19 [ 785.983983] [<ffffffff81067c60>] ?
max_active_store+0x60/0x60
Apr 21 23:55:19 [ 785.984078] [<ffffffff8106c926>] kthread+0xd6/0xf0
Apr 21 23:55:19 [ 785.984171] [<ffffffff810011f6>] ?
exit_to_usermode_loop+0x76/0xb0
Apr 21 23:55:19 [ 785.984266] [<ffffffff8106c850>] ?
kthread_park+0x50/0x50
Apr 21 23:55:19 [ 785.984361] [<ffffffff814d92af>]
ret_from_fork+0x3f/0x70
Apr 21 23:55:19 [ 785.984454] [<ffffffff8106c850>] ?
kthread_park+0x50/0x50
Apr 21 23:55:21 [ 787.840894] NMI watchdog: Watchdog detected hard
LOCKUP on cpu 13
Apr 21 23:55:21
Apr 21 23:55:21 [ 787.840993] Modules linked in:
Apr 21 23:55:21 iptable_mangle
Apr 21 23:55:21 netconsole
Apr 21 23:55:21 configfs
Apr 21 23:55:21 tun
Apr 21 23:55:21 xt_multiport
Apr 21 23:55:21 ip6table_filter
Apr 21 23:55:21 ip6_tables
Apr 21 23:55:21 iptable_filter
Apr 21 23:55:21 ip_tables
Apr 21 23:55:21 x_tables
Apr 21 23:55:21 bridge
Apr 21 23:55:21 stp
Apr 21 23:55:21 llc
Apr 21 23:55:21 bonding
Apr 21 23:55:21 ext4
Apr 21 23:55:21 crc16
Apr 21 23:55:21 mbcache
Apr 21 23:55:21 jbd2
Apr 21 23:55:21 raid1
Apr 21 23:55:21 raid0
Apr 21 23:55:21 raid456
Apr 21 23:55:21 async_raid6_recov
Apr 21 23:55:21 async_memcpy
Apr 21 23:55:21 async_pq
Apr 21 23:55:21 async_xor
Apr 21 23:55:21 xor
Apr 21 23:55:21 async_tx
Apr 21 23:55:21 raid6_pq
Apr 21 23:55:21 md_mod
Apr 21 23:55:21 sg
Apr 21 23:55:21 sd_mod
Apr 21 23:55:21 hid_generic
Apr 21 23:55:21 usbhid
Apr 21 23:55:21 hid
Apr 21 23:55:21 iTCO_wdt
Apr 21 23:55:21 iTCO_vendor_support
Apr 21 23:55:21 x86_pkg_temp_thermal
Apr 21 23:55:21 intel_powerclamp
Apr 21 23:55:21 coretemp
Apr 21 23:55:21 crct10dif_pclmul
Apr 21 23:55:21 crc32_pclmul
Apr 21 23:55:21 crc32c_intel
Apr 21 23:55:21 ghash_clmulni_intel
Apr 21 23:55:21 cryptd
Apr 21 23:55:21 xhci_pci
Apr 21 23:55:21 ahci
Apr 21 23:55:21 igb
Apr 21 23:55:21 ehci_pci
Apr 21 23:55:21 i2c_algo_bit
Apr 21 23:55:21 xhci_hcd
Apr 21 23:55:21 ptp
Apr 21 23:55:21 ehci_hcd
Apr 21 23:55:21 libahci
Apr 21 23:55:21 mpt3sas
Apr 21 23:55:21 sb_edac
Apr 21 23:55:21 i2c_i801
Apr 21 23:55:21 pps_core
Apr 21 23:55:21 edac_core
Apr 21 23:55:21 mei_me
Apr 21 23:55:21 raid_class
Apr 21 23:55:21 lpc_ich
Apr 21 23:55:21 libata
Apr 21 23:55:21 scsi_transport_sas
Apr 21 23:55:21 usbcore
Apr 21 23:55:21 mfd_core
Apr 21 23:55:21 mei
Apr 21 23:55:21 usb_common
Apr 21 23:55:21 i2c_core
Apr 21 23:55:21 ioatdma
Apr 21 23:55:21 scsi_mod
Apr 21 23:55:21 dca
Apr 21 23:55:21 ipmi_si
Apr 21 23:55:21 ipmi_msghandler
Apr 21 23:55:21 acpi_power_meter
Apr 21 23:55:21 acpi_pad
Apr 21 23:55:21 tpm_tis
Apr 21 23:55:21 tpm
Apr 21 23:55:21 processor
Apr 21 23:55:21 button
Apr 21 23:55:21
Apr 21 23:55:21 [ 787.848156] CPU: 13 PID: 16848 Comm: rtorrent main
Not tainted 4.5.1 #1
Apr 21 23:55:21 [ 787.848270] Hardware name: Supermicro Super
Server/X10DRi-LN4+, BIOS 1.0b 01/29/2015
Apr 21 23:55:21 [ 787.848403] 0000000000000000
Apr 21 23:55:21 ffff88407fca5bd0
Apr 21 23:55:21 ffffffff812e00b8
Apr 21 23:55:21 0000000000000000
Apr 21 23:55:21
Apr 21 23:55:21 [ 787.848857] 0000000000000000
Apr 21 23:55:21 ffff88407fca5be8
Apr 21 23:55:21 ffffffff810dff1d
Apr 21 23:55:21 ffff883fea688000
Apr 21 23:55:21
Apr 21 23:55:21 [ 787.849321] ffff88407fca5c20
Apr 21 23:55:21 ffffffff8110f8f8
Apr 21 23:55:21 0000000000000001
Apr 21 23:55:21 ffff88407fcaaf00
Apr 21 23:55:21
Apr 21 23:55:21 [ 787.849780] Call Trace:
Apr 21 23:55:21 [ 787.849891] <NMI>
Apr 21 23:55:21 [<ffffffff812e00b8>] dump_stack+0x4d/0x65
Apr 21 23:55:21 [ 787.850091] [<ffffffff810dff1d>]
watchdog_overflow_callback+0xdd/0xf0
Apr 21 23:55:21 [ 787.850211] [<ffffffff8110f8f8>]
__perf_event_overflow+0x88/0x1d0
Apr 21 23:55:21 [ 787.850326] [<ffffffff811103e4>]
perf_event_overflow+0x14/0x20
Apr 21 23:55:21 [ 787.850441] [<ffffffff8101e320>]
intel_pmu_handle_irq+0x1d0/0x4a0
Apr 21 23:55:21 [ 787.850564] [<ffffffff810162d8>]
perf_event_nmi_handler+0x28/0x50
Apr 21 23:55:21 [ 787.850677] [<ffffffff81008121>] nmi_handle+0x61/0x110
Apr 21 23:55:21 [ 787.850788] [<ffffffff810083d1>] do_nmi+0x201/0x3e0
Apr 21 23:55:21 [ 787.850910] [<ffffffff814dae97>]
end_repeat_nmi+0x1a/0x1e
Apr 21 23:55:21 [ 787.851024] [<ffffffff81090cc5>] ?
queued_spin_lock_slowpath+0xf5/0x170
Apr 21 23:55:21 [ 787.851142] [<ffffffff81090cc5>] ?
queued_spin_lock_slowpath+0xf5/0x170
Apr 21 23:55:21 [ 787.851255] [<ffffffff81090cc5>] ?
queued_spin_lock_slowpath+0xf5/0x170
Apr 21 23:55:21 [ 787.851367] <<EOE>>
Apr 21 23:55:21 [<ffffffff814d8c6c>] _raw_spin_lock_irq+0x1c/0x20
Apr 21 23:55:21 [ 787.851565] [<ffffffffa01cd5d4>]
raid5_make_request+0x6d4/0xce0 [raid456]
Apr 21 23:55:21 [ 787.851680] [<ffffffff812b824f>] ?
generic_make_request+0x1f/0x1c0
Apr 21 23:55:21 [ 787.851793] [<ffffffff812bdc23>] ?
blk_queue_split+0xb3/0x530
Apr 21 23:55:21 [ 787.851907] [<ffffffff8108bd90>] ? wait_woken+0x80/0x80
Apr 21 23:55:21 [ 787.852021] [<ffffffffa0110e43>]
md_make_request+0xd3/0x210 [md_mod]
Apr 21 23:55:21 [ 787.852135] [<ffffffff81244923>] ?
xfs_map_buffer.isra.15+0x33/0x60
Apr 21 23:55:21 [ 787.852248] [<ffffffff812b8319>]
generic_make_request+0xe9/0x1c0
Apr 21 23:55:21 [ 787.852365] [<ffffffff812b8452>] submit_bio+0x62/0x150
Apr 21 23:55:21 [ 787.852479] [<ffffffff811c6f41>]
do_mpage_readpage+0x2a1/0x6a0
Apr 21 23:55:21 [ 787.852593] [<ffffffff811286d9>] ?
lru_cache_add+0x9/0x10
Apr 21 23:55:21 [ 787.852704] [<ffffffff811c7450>]
mpage_readpages+0x110/0x170
Apr 21 23:55:21 [ 787.852815] [<ffffffff81246040>] ?
__xfs_get_blocks+0x810/0x810
Apr 21 23:55:21 [ 787.852927] [<ffffffff81246040>] ?
__xfs_get_blocks+0x810/0x810
Apr 21 23:55:21 [ 787.853040] [<ffffffff8116633d>] ?
alloc_pages_current+0x8d/0x110
Apr 21 23:55:21 [ 787.853152] [<ffffffff812442f3>]
xfs_vm_readpages+0x33/0x80
Apr 21 23:55:21 [ 787.853265] [<ffffffff81126585>]
__do_page_cache_readahead+0x165/0x210
Apr 21 23:55:21 [ 787.853381] [<ffffffffa02cc397>] ?
br_dev_xmit+0x137/0x1d0 [bridge]
Apr 21 23:55:21 [ 787.853496] [<ffffffff8111b1c7>]
filemap_fault+0x427/0x4d0
Apr 21 23:55:21 [ 787.853607] [<ffffffff814d756d>] ? down_read+0xd/0x20
Apr 21 23:55:21 [ 787.853719] [<ffffffff8124fe20>]
xfs_filemap_fault+0x40/0xa0
Apr 21 23:55:21 [ 787.853833] [<ffffffff81144fcd>] __do_fault+0x5d/0x110
Apr 21 23:55:21 [ 787.853945] [<ffffffff81148e34>]
handle_mm_fault+0x1154/0x1b00
Apr 21 23:55:21 [ 787.854058] [<ffffffff81042ee1>]
__do_page_fault+0x121/0x360
Apr 21 23:55:21 [ 787.854170] [<ffffffff8104315c>] do_page_fault+0xc/0x10
Apr 21 23:55:21 [ 787.854282] [<ffffffff814dab8f>] page_fault+0x1f/0x30
Apr 21 23:55:21 [ 787.854395] [<ffffffff812ec4f2>] ?
copy_user_enhanced_fast_string+0x2/0x10
Apr 21 23:55:21 [ 787.854510] [<ffffffff812f25bc>] ?
copy_from_iter+0x7c/0x260
Apr 21 23:55:21 [ 787.854622] [<ffffffff8143a448>]
tcp_sendmsg+0xaa8/0xae0
Apr 21 23:55:21 [ 787.854736] [<ffffffff814631d0>] inet_sendmsg+0x60/0x90
Apr 21 23:55:21 [ 787.854847] [<ffffffff813d4da3>] sock_sendmsg+0x33/0x40
Apr 21 23:55:21 [ 787.854959] [<ffffffff813d51cf>] SYSC_sendto+0xef/0x170
Apr 21 23:55:21 [ 787.855071] [<ffffffff811363e8>] ?
vm_mmap_pgoff+0x98/0xc0
Apr 21 23:55:21 [ 787.855185] [<ffffffff8114e075>] ?
SyS_mmap_pgoff+0xe5/0x270
Apr 21 23:55:21 [ 787.855297] [<ffffffff813d5bc9>] SyS_sendto+0x9/0x10
Apr 21 23:55:21 [ 787.855409] [<ffffffff814d8f1b>]
entry_SYSCALL_64_fastpath+0x16/0x6e
Apr 21 23:55:21 [ 788.267238] NMI watchdog: Watchdog detected hard
LOCKUP on cpu 6
Apr 21 23:55:21
Apr 21 23:55:21 [ 788.267327] Modules linked in:
Apr 21 23:55:21 iptable_mangle
Apr 21 23:55:21 netconsole
Apr 21 23:55:21 configfs
Apr 21 23:55:21 tun
Apr 21 23:55:21 xt_multiport
Apr 21 23:55:21 ip6table_filter
Apr 21 23:55:21 ip6_tables
Apr 21 23:55:21 iptable_filter
Apr 21 23:55:21 ip_tables
Apr 21 23:55:21 x_tables
Apr 21 23:55:21 bridge
Apr 21 23:55:21 stp
Apr 21 23:55:21 llc
Apr 21 23:55:21 bonding
Apr 21 23:55:21 ext4
Apr 21 23:55:21 crc16
Apr 21 23:55:21 mbcache
Apr 21 23:55:21 jbd2
Apr 21 23:55:21 raid1
Apr 21 23:55:21 raid0
Apr 21 23:55:21 raid456
Apr 21 23:55:21 async_raid6_recov
Apr 21 23:55:21 async_memcpy
Apr 21 23:55:21 async_pq
Apr 21 23:55:21 async_xor
Apr 21 23:55:21 xor
Apr 21 23:55:21 async_tx
Apr 21 23:55:21 raid6_pq
Apr 21 23:55:21 md_mod
Apr 21 23:55:21 sg
Apr 21 23:55:21 sd_mod
Apr 21 23:55:21 hid_generic
Apr 21 23:55:21 usbhid
Apr 21 23:55:21 hid
Apr 21 23:55:21 iTCO_wdt
Apr 21 23:55:21 iTCO_vendor_support
Apr 21 23:55:21 x86_pkg_temp_thermal
Apr 21 23:55:21 intel_powerclamp
Apr 21 23:55:21 coretemp
Apr 21 23:55:21 crct10dif_pclmul
Apr 21 23:55:21 crc32_pclmul
Apr 21 23:55:21 crc32c_intel
Apr 21 23:55:21 ghash_clmulni_intel
Apr 21 23:55:21 cryptd
Apr 21 23:55:21 xhci_pci
Apr 21 23:55:21 ahci
Apr 21 23:55:21 igb
Apr 21 23:55:21 ehci_pci
Apr 21 23:55:21 i2c_algo_bit
Apr 21 23:55:21 xhci_hcd
Apr 21 23:55:21 ptp
Apr 21 23:55:21 ehci_hcd
Apr 21 23:55:21 libahci
Apr 21 23:55:21 mpt3sas
Apr 21 23:55:21 sb_edac
Apr 21 23:55:21 i2c_i801
Apr 21 23:55:21 pps_core
Apr 21 23:55:21 edac_core
Apr 21 23:55:21 mei_me
Apr 21 23:55:21 raid_class
Apr 21 23:55:21 lpc_ich
Apr 21 23:55:21 libata
Apr 21 23:55:21 scsi_transport_sas
Apr 21 23:55:21 usbcore
Apr 21 23:55:21 mfd_core
Apr 21 23:55:21 mei
Apr 21 23:55:21 usb_common
Apr 21 23:55:21 i2c_core
Apr 21 23:55:21 ioatdma
Apr 21 23:55:21 scsi_mod
Apr 21 23:55:21 dca
Apr 21 23:55:21 ipmi_si
Apr 21 23:55:21 ipmi_msghandler
Apr 21 23:55:21 acpi_power_meter
Apr 21 23:55:21 acpi_pad
Apr 21 23:55:21 tpm_tis
Apr 21 23:55:21 tpm
Apr 21 23:55:21 processor
Apr 21 23:55:21 button
Apr 21 23:55:21
Apr 21 23:55:21 [ 788.273235] CPU: 6 PID: 12760 Comm: rtorrent main
Not tainted 4.5.1 #1
Apr 21 23:55:21 [ 788.273337] Hardware name: Supermicro Super
Server/X10DRi-LN4+, BIOS 1.0b 01/29/2015
Apr 21 23:55:21 [ 788.273454] 0000000000000000
Apr 21 23:55:21 ffff881fffcc5bd0
Apr 21 23:55:21 ffffffff812e00b8
Apr 21 23:55:21 0000000000000000
Apr 21 23:55:21
Apr 21 23:55:21 [ 788.273827] 0000000000000000
Apr 21 23:55:21 ffff881fffcc5be8
Apr 21 23:55:21 ffffffff810dff1d
Apr 21 23:55:21 ffff881ff2fc8000
Apr 21 23:55:21
Apr 21 23:55:21 [ 788.274193] ffff881fffcc5c20
Apr 21 23:55:21 ffffffff8110f8f8
Apr 21 23:55:21 0000000000000001
Apr 21 23:55:21 ffff881fffccaf00
Apr 21 23:55:21
Apr 21 23:55:21 [ 788.274564] Call Trace:
Apr 21 23:55:21 [ 788.274650] <NMI>
Apr 21 23:55:21 [<ffffffff812e00b8>] dump_stack+0x4d/0x65
Apr 21 23:55:21 [ 788.274815] [<ffffffff810dff1d>]
watchdog_overflow_callback+0xdd/0xf0
Apr 21 23:55:21 [ 788.274913] [<ffffffff8110f8f8>]
__perf_event_overflow+0x88/0x1d0
Apr 21 23:55:21 [ 788.275010] [<ffffffff811103e4>]
perf_event_overflow+0x14/0x20
Apr 21 23:55:21 [ 788.275106] [<ffffffff8101e320>]
intel_pmu_handle_irq+0x1d0/0x4a0
Apr 21 23:55:21 [ 788.275203] [<ffffffff810162d8>]
perf_event_nmi_handler+0x28/0x50
Apr 21 23:55:21 [ 788.275299] [<ffffffff81008121>] nmi_handle+0x61/0x110
Apr 21 23:55:21 [ 788.275392] [<ffffffff810082e7>] do_nmi+0x117/0x3e0
Apr 21 23:55:21 [ 788.275487] [<ffffffff814dae97>]
end_repeat_nmi+0x1a/0x1e
Apr 21 23:55:21 [ 788.275582] [<ffffffff81090cc5>] ?
queued_spin_lock_slowpath+0xf5/0x170
Apr 21 23:55:21 [ 788.275678] [<ffffffff81090cc5>] ?
queued_spin_lock_slowpath+0xf5/0x170
Apr 21 23:55:21 [ 788.275773] [<ffffffff81090cc5>] ?
queued_spin_lock_slowpath+0xf5/0x170
Apr 21 23:55:21 [ 788.275868] <<EOE>>
Apr 21 23:55:21 [<ffffffff814d8c6c>] _raw_spin_lock_irq+0x1c/0x20
Apr 21 23:55:21 [ 788.276030] [<ffffffffa01cd5d4>]
raid5_make_request+0x6d4/0xce0 [raid456]
Apr 21 23:55:21 [ 788.276128] [<ffffffff812b824f>] ?
generic_make_request+0x1f/0x1c0
Apr 21 23:55:21 [ 788.276225] [<ffffffff812bdc23>] ?
blk_queue_split+0xb3/0x530
Apr 21 23:55:21 [ 788.276321] [<ffffffff8108bd90>] ? wait_woken+0x80/0x80
Apr 21 23:55:21 [ 788.276416] [<ffffffffa0110e43>]
md_make_request+0xd3/0x210 [md_mod]
Apr 21 23:55:21 [ 788.276512] [<ffffffff812b8319>]
generic_make_request+0xe9/0x1c0
Apr 21 23:55:21 [ 788.276607] [<ffffffff812b8452>] submit_bio+0x62/0x150
Apr 21 23:55:21 [ 788.276702] [<ffffffff81127e05>] ?
__pagevec_lru_add_fn+0x105/0x1e0
Apr 21 23:55:21 [ 788.276798] [<ffffffff811c6f90>]
do_mpage_readpage+0x2f0/0x6a0
Apr 21 23:55:21 [ 788.276893] [<ffffffff811286d9>] ?
lru_cache_add+0x9/0x10
Apr 21 23:55:21 [ 788.276986] [<ffffffff811c7450>]
mpage_readpages+0x110/0x170
Apr 21 23:55:21 [ 788.277081] [<ffffffff81246040>] ?
__xfs_get_blocks+0x810/0x810
Apr 21 23:55:21 [ 788.277175] [<ffffffff81246040>] ?
__xfs_get_blocks+0x810/0x810
Apr 21 23:55:21 [ 788.277271] [<ffffffff8116633d>] ?
alloc_pages_current+0x8d/0x110
Apr 21 23:55:21 [ 788.277366] [<ffffffff812442f3>]
xfs_vm_readpages+0x33/0x80
Apr 21 23:55:21 [ 788.277460] [<ffffffff81126585>]
__do_page_cache_readahead+0x165/0x210
Apr 21 23:55:21 [ 788.277557] [<ffffffff8111b1c7>]
filemap_fault+0x427/0x4d0
Apr 21 23:55:21 [ 788.277651] [<ffffffff814d756d>] ? down_read+0xd/0x20
Apr 21 23:55:21 [ 788.277744] [<ffffffff8124fe20>]
xfs_filemap_fault+0x40/0xa0
Apr 21 23:55:21 [ 788.277840] [<ffffffff81144fcd>] __do_fault+0x5d/0x110
Apr 21 23:55:21 [ 788.277933] [<ffffffff81148e34>]
handle_mm_fault+0x1154/0x1b00
Apr 21 23:55:21 [ 788.278029] [<ffffffff81042ee1>]
__do_page_fault+0x121/0x360
Apr 21 23:55:21 [ 788.278123] [<ffffffff8104315c>] do_page_fault+0xc/0x10
Apr 21 23:55:21 [ 788.278216] [<ffffffff814dab8f>] page_fault+0x1f/0x30
Apr 21 23:55:21 [ 788.278311] [<ffffffff812ec4f2>] ?
copy_user_enhanced_fast_string+0x2/0x10
Apr 21 23:55:21 [ 788.278410] [<ffffffff812f25bc>] ?
copy_from_iter+0x7c/0x260
Apr 21 23:55:21 [ 788.278505] [<ffffffff81439f78>]
tcp_sendmsg+0x5d8/0xae0
Apr 21 23:55:21 [ 788.278600] [<ffffffff814631d0>] inet_sendmsg+0x60/0x90
Apr 21 23:55:21 [ 788.278694] [<ffffffff813d4da3>] sock_sendmsg+0x33/0x40
Apr 21 23:55:21 [ 788.278787] [<ffffffff813d51cf>] SYSC_sendto+0xef/0x170
Apr 21 23:55:21 [ 788.278880] [<ffffffff813d5bc9>] SyS_sendto+0x9/0x10
Apr 21 23:55:21 [ 788.278973] [<ffffffff814d8f1b>]
entry_SYSCALL_64_fastpath+0x16/0x6e
Apr 21 23:55:23 [ 790.117129] NMI watchdog: Watchdog detected hard
LOCKUP on cpu 3
Apr 21 23:55:23
Apr 21 23:55:23 [ 790.117222] Modules linked in:
Apr 21 23:55:23 iptable_mangle
Apr 21 23:55:23 netconsole
Apr 21 23:55:23 configfs
Apr 21 23:55:23 tun
Apr 21 23:55:23 xt_multiport
Apr 21 23:55:23 ip6table_filter
Apr 21 23:55:23 ip6_tables
Apr 21 23:55:23 iptable_filter
Apr 21 23:55:23 ip_tables
Apr 21 23:55:23 x_tables
Apr 21 23:55:23 bridge
Apr 21 23:55:23 stp
Apr 21 23:55:23 llc
Apr 21 23:55:23 bonding
Apr 21 23:55:23 ext4
Apr 21 23:55:23 crc16
Apr 21 23:55:23 mbcache
Apr 21 23:55:23 jbd2
Apr 21 23:55:23 raid1
Apr 21 23:55:23 raid0
Apr 21 23:55:23 raid456
Apr 21 23:55:23 async_raid6_recov
Apr 21 23:55:23 async_memcpy
Apr 21 23:55:23 async_pq
Apr 21 23:55:23 async_xor
Apr 21 23:55:23 xor
Apr 21 23:55:23 async_tx
Apr 21 23:55:23 raid6_pq
Apr 21 23:55:23 md_mod
Apr 21 23:55:23 sg
Apr 21 23:55:23 sd_mod
Apr 21 23:55:23 hid_generic
Apr 21 23:55:23 usbhid
Apr 21 23:55:23 hid
Apr 21 23:55:23 iTCO_wdt
Apr 21 23:55:23 iTCO_vendor_support
Apr 21 23:55:23 x86_pkg_temp_thermal
Apr 21 23:55:23 intel_powerclamp
Apr 21 23:55:23 coretemp
Apr 21 23:55:23 crct10dif_pclmul
Apr 21 23:55:23 crc32_pclmul
Apr 21 23:55:23 crc32c_intel
Apr 21 23:55:23 ghash_clmulni_intel
Apr 21 23:55:23 cryptd
Apr 21 23:55:23 xhci_pci
Apr 21 23:55:23 ahci
Apr 21 23:55:23 igb
Apr 21 23:55:23 ehci_pci
Apr 21 23:55:23 i2c_algo_bit
Apr 21 23:55:23 xhci_hcd
Apr 21 23:55:23 ptp
Apr 21 23:55:23 ehci_hcd
Apr 21 23:55:23 libahci
Apr 21 23:55:23 mpt3sas
Apr 21 23:55:23 sb_edac
Apr 21 23:55:23 i2c_i801
Apr 21 23:55:23 pps_core
Apr 21 23:55:23 edac_core
Apr 21 23:55:23 mei_me
Apr 21 23:55:23 raid_class
Apr 21 23:55:23 lpc_ich
Apr 21 23:55:23 libata
Apr 21 23:55:23 scsi_transport_sas
Apr 21 23:55:23 usbcore
Apr 21 23:55:23 mfd_core
Apr 21 23:55:23 mei
Apr 21 23:55:23 usb_common
Apr 21 23:55:23 i2c_core
Apr 21 23:55:23 ioatdma
Apr 21 23:55:23 scsi_mod
Apr 21 23:55:23 dca
Apr 21 23:55:23 ipmi_si
Apr 21 23:55:23 ipmi_msghandler
Apr 21 23:55:23 acpi_power_meter
Apr 21 23:55:23 acpi_pad
Apr 21 23:55:23 tpm_tis
Apr 21 23:55:23 tpm
Apr 21 23:55:23 processor
Apr 21 23:55:23 button
Apr 21 23:55:23
Apr 21 23:55:23 [ 790.127050] CPU: 3 PID: 785 Comm: md11_raid5 Not
tainted 4.5.1 #1
Apr 21 23:55:23 [ 790.127145] Hardware name: Supermicro Super
Server/X10DRi-LN4+, BIOS 1.0b 01/29/2015
Apr 21 23:55:23 [ 790.127261] 0000000000000000
Apr 21 23:55:23 ffff881fffc65bd0
Apr 21 23:55:23 ffffffff812e00b8
Apr 21 23:55:23 0000000000000000
Apr 21 23:55:23
Apr 21 23:55:23 [ 790.127630] 0000000000000000
Apr 21 23:55:23 ffff881fffc65be8
Apr 21 23:55:23 ffffffff810dff1d
Apr 21 23:55:23 ffff881ff2f10000
Apr 21 23:55:23
Apr 21 23:55:23 [ 790.127999] ffff881fffc65c20
Apr 21 23:55:23 ffffffff8110f8f8
Apr 21 23:55:23 0000000000000001
Apr 21 23:55:23 ffff881fffc6af00
Apr 21 23:55:23
Apr 21 23:55:23 [ 790.128365] Call Trace:
Apr 21 23:55:23 [ 790.128451] <NMI>
Apr 21 23:55:23 [<ffffffff812e00b8>] dump_stack+0x4d/0x65
Apr 21 23:55:23 [ 790.128620] [<ffffffff810dff1d>]
watchdog_overflow_callback+0xdd/0xf0
Apr 21 23:55:23 [ 790.128720] [<ffffffff8110f8f8>]
__perf_event_overflow+0x88/0x1d0
Apr 21 23:55:23 [ 790.128816] [<ffffffff811103e4>]
perf_event_overflow+0x14/0x20
Apr 21 23:55:23 [ 790.128912] [<ffffffff8101e320>]
intel_pmu_handle_irq+0x1d0/0x4a0
Apr 21 23:55:23 [ 790.129012] [<ffffffff810162d8>]
perf_event_nmi_handler+0x28/0x50
Apr 21 23:55:23 [ 790.129111] [<ffffffff81008121>] nmi_handle+0x61/0x110
Apr 21 23:55:23 [ 790.129211] [<ffffffff810083d1>] do_nmi+0x201/0x3e0
Apr 21 23:55:23 [ 790.129308] [<ffffffff814dae97>]
end_repeat_nmi+0x1a/0x1e
Apr 21 23:55:23 [ 790.129403] [<ffffffff81090d23>] ?
queued_spin_lock_slowpath+0x153/0x170
Apr 21 23:55:23 [ 790.129499] [<ffffffff81090d23>] ?
queued_spin_lock_slowpath+0x153/0x170
Apr 21 23:55:23 [ 790.129600] [<ffffffff81090d23>] ?
queued_spin_lock_slowpath+0x153/0x170
Apr 21 23:55:23 [ 790.129696] <<EOE>>
Apr 21 23:55:23 [<ffffffff814d8c6c>] _raw_spin_lock_irq+0x1c/0x20
Apr 21 23:55:23 [ 790.129865] [<ffffffffa01d031b>]
handle_active_stripes.isra.55+0x1ab/0x4b0 [raid456]
Apr 21 23:55:23 [ 790.129982] [<ffffffffa01d0aa9>] raid5d+0x489/0x720
[raid456]
Apr 21 23:55:23 [ 790.130081] [<ffffffff810a4830>] ?
trace_event_raw_event_tick_stop+0x100/0x100
Apr 21 23:55:23 [ 790.130200] [<ffffffffa011074b>]
md_thread+0x12b/0x130 [md_mod]
Apr 21 23:55:23 [ 790.130299] [<ffffffff8108bd90>] ? wait_woken+0x80/0x80
Apr 21 23:55:23 [ 790.130398] [<ffffffffa0110620>] ?
find_pers+0x70/0x70 [md_mod]
Apr 21 23:55:23 [ 790.130494] [<ffffffff8106c926>] kthread+0xd6/0xf0
Apr 21 23:55:23 [ 790.130586] [<ffffffff8106c850>] ?
kthread_park+0x50/0x50
Apr 21 23:55:23 [ 790.130683] [<ffffffff814d92af>]
ret_from_fork+0x3f/0x70
Apr 21 23:55:23 [ 790.130780] [<ffffffff8106c850>] ?
kthread_park+0x50/0x50
Apr 21 23:55:25 [ 791.957594] NMI watchdog: Watchdog detected hard
LOCKUP on cpu 17
Apr 21 23:55:25
Apr 21 23:55:25 [ 791.958139] Modules linked in:
Apr 21 23:55:25 iptable_mangle
Apr 21 23:55:25 netconsole
Apr 21 23:55:25 configfs
Apr 21 23:55:25 tun
Apr 21 23:55:25 xt_multiport
Apr 21 23:55:25 ip6table_filter
Apr 21 23:55:25 ip6_tables
Apr 21 23:55:25 iptable_filter
Apr 21 23:55:25 ip_tables
Apr 21 23:55:25 x_tables
Apr 21 23:55:25 bridge
Apr 21 23:55:25 stp
Apr 21 23:55:25 llc
Apr 21 23:55:25 bonding
Apr 21 23:55:25 ext4
Apr 21 23:55:25 crc16
Apr 21 23:55:25 mbcache
Apr 21 23:55:25 jbd2
Apr 21 23:55:25 raid1
Apr 21 23:55:25 raid0
Apr 21 23:55:25 raid456
Apr 21 23:55:25 async_raid6_recov
Apr 21 23:55:25 async_memcpy
Apr 21 23:55:25 async_pq
Apr 21 23:55:25 async_xor
Apr 21 23:55:25 xor
Apr 21 23:55:25 async_tx
Apr 21 23:55:25 raid6_pq
Apr 21 23:55:25 md_mod
Apr 21 23:55:25 sg
Apr 21 23:55:25 sd_mod
Apr 21 23:55:25 hid_generic
Apr 21 23:55:25 usbhid
Apr 21 23:55:25 hid
Apr 21 23:55:25 iTCO_wdt
Apr 21 23:55:25 iTCO_vendor_support
Apr 21 23:55:25 x86_pkg_temp_thermal
Apr 21 23:55:25 intel_powerclamp
Apr 21 23:55:25 coretemp
Apr 21 23:55:25 crct10dif_pclmul
Apr 21 23:55:25 crc32_pclmul
Apr 21 23:55:25 crc32c_intel
Apr 21 23:55:25 ghash_clmulni_intel
Apr 21 23:55:25 cryptd
Apr 21 23:55:25 xhci_pci
Apr 21 23:55:25 ahci
Apr 21 23:55:25 igb
Apr 21 23:55:25 ehci_pci
Apr 21 23:55:25 i2c_algo_bit
Apr 21 23:55:25 xhci_hcd
Apr 21 23:55:25 ptp
Apr 21 23:55:25 ehci_hcd
Apr 21 23:55:25 libahci
Apr 21 23:55:25 mpt3sas
Apr 21 23:55:25 sb_edac
Apr 21 23:55:25 i2c_i801
Apr 21 23:55:25 pps_core
Apr 21 23:55:25 edac_core
Apr 21 23:55:25 mei_me
Apr 21 23:55:25 raid_class
Apr 21 23:55:25 lpc_ich
Apr 21 23:55:25 libata
Apr 21 23:55:25 scsi_transport_sas
Apr 21 23:55:25 usbcore
Apr 21 23:55:25 mfd_core
Apr 21 23:55:25 mei
Apr 21 23:55:25 usb_common
Apr 21 23:55:25 i2c_core
Apr 21 23:55:25 ioatdma
Apr 21 23:55:25 scsi_mod
Apr 21 23:55:25 dca
Apr 21 23:55:25 ipmi_si
Apr 21 23:55:25 ipmi_msghandler
Apr 21 23:55:25 acpi_power_meter
Apr 21 23:55:25 acpi_pad
Apr 21 23:55:25 tpm_tis
Apr 21 23:55:25 tpm
Apr 21 23:55:25 processor
Apr 21 23:55:25 button
Apr 21 23:55:25
Apr 21 23:55:25 [ 791.964341] CPU: 17 PID: 18101 Comm: rtorrent main
Not tainted 4.5.1 #1
Apr 21 23:55:25 [ 791.964443] Hardware name: Supermicro Super
Server/X10DRi-LN4+, BIOS 1.0b 01/29/2015
Apr 21 23:55:25 [ 791.964567] 0000000000000000
Apr 21 23:55:25 ffff881fffd25bd0
Apr 21 23:55:25 ffffffff812e00b8
Apr 21 23:55:25 0000000000000000
Apr 21 23:55:25
Apr 21 23:55:25 [ 791.964968] 0000000000000000
Apr 21 23:55:25 ffff881fffd25be8
Apr 21 23:55:25 ffffffff810dff1d
Apr 21 23:55:25 ffff881ff2890000
Apr 21 23:55:25
Apr 21 23:55:25 [ 791.965369] ffff881fffd25c20
Apr 21 23:55:25 ffffffff8110f8f8
Apr 21 23:55:25 0000000000000001
Apr 21 23:55:25 ffff881fffd2af00
Apr 21 23:55:25
Apr 21 23:55:25 [ 791.965773] Call Trace:
Apr 21 23:55:25 [ 791.965867] <NMI>
Apr 21 23:55:25 [<ffffffff812e00b8>] dump_stack+0x4d/0x65
Apr 21 23:55:25 [ 791.966053] [<ffffffff810dff1d>]
watchdog_overflow_callback+0xdd/0xf0
Apr 21 23:55:25 [ 791.966161] [<ffffffff8110f8f8>]
__perf_event_overflow+0x88/0x1d0
Apr 21 23:55:25 [ 791.966264] [<ffffffff811103e4>]
perf_event_overflow+0x14/0x20
Apr 21 23:55:25 [ 791.966368] [<ffffffff8101e320>]
intel_pmu_handle_irq+0x1d0/0x4a0
Apr 21 23:55:25 [ 791.966473] [<ffffffff810162d8>]
perf_event_nmi_handler+0x28/0x50
Apr 21 23:55:25 [ 791.966577] [<ffffffff81008121>] nmi_handle+0x61/0x110
Apr 21 23:55:25 [ 791.966677] [<ffffffff810083d1>] do_nmi+0x201/0x3e0
Apr 21 23:55:25 [ 791.966778] [<ffffffff814dae97>]
end_repeat_nmi+0x1a/0x1e
Apr 21 23:55:25 [ 791.966881] [<ffffffff81090cd9>] ?
queued_spin_lock_slowpath+0x109/0x170
Apr 21 23:55:25 [ 791.966984] [<ffffffff81090cd9>] ?
queued_spin_lock_slowpath+0x109/0x170
Apr 21 23:55:25 [ 791.967088] [<ffffffff81090cd9>] ?
queued_spin_lock_slowpath+0x109/0x170
Apr 21 23:55:25 [ 791.967197] <<EOE>>
Apr 21 23:55:25 [<ffffffff814d8c6c>] _raw_spin_lock_irq+0x1c/0x20
Apr 21 23:55:25 [ 791.967376] [<ffffffffa01cd5d4>]
raid5_make_request+0x6d4/0xce0 [raid456]
Apr 21 23:55:25 [ 791.967484] [<ffffffff81217c3d>] ?
xfs_bmap_search_extents+0x7d/0x100
Apr 21 23:55:25 [ 791.967590] [<ffffffff8108bd90>] ? wait_woken+0x80/0x80
Apr 21 23:55:25 [ 791.967693] [<ffffffffa0110e43>]
md_make_request+0xd3/0x210 [md_mod]
Apr 21 23:55:25 [ 791.967799] [<ffffffff812b8319>]
generic_make_request+0xe9/0x1c0
Apr 21 23:55:25 [ 791.967903] [<ffffffff812b8452>] submit_bio+0x62/0x150
Apr 21 23:55:25 [ 791.968006] [<ffffffff81127e05>] ?
__pagevec_lru_add_fn+0x105/0x1e0
Apr 21 23:55:25 [ 791.968110] [<ffffffff811c6f90>]
do_mpage_readpage+0x2f0/0x6a0
Apr 21 23:55:25 [ 791.968213] [<ffffffff811286d9>] ?
lru_cache_add+0x9/0x10
Apr 21 23:55:25 [ 791.968314] [<ffffffff811c7450>]
mpage_readpages+0x110/0x170
Apr 21 23:55:25 [ 791.968420] [<ffffffff81246040>] ?
__xfs_get_blocks+0x810/0x810
Apr 21 23:55:25 [ 791.968522] [<ffffffff81246040>] ?
__xfs_get_blocks+0x810/0x810
Apr 21 23:55:25 [ 791.968626] [<ffffffff8116633d>] ?
alloc_pages_current+0x8d/0x110
Apr 21 23:55:25 [ 791.968912] [<ffffffff812442f3>]
xfs_vm_readpages+0x33/0x80
Apr 21 23:55:25 [ 791.969015] [<ffffffff81126585>]
__do_page_cache_readahead+0x165/0x210
Apr 21 23:55:25 [ 791.969121] [<ffffffff8111b1c7>]
filemap_fault+0x427/0x4d0
Apr 21 23:55:25 [ 791.969223] [<ffffffff814d756d>] ? down_read+0xd/0x20
Apr 21 23:55:25 [ 791.969325] [<ffffffff8124fe20>]
xfs_filemap_fault+0x40/0xa0
Apr 21 23:55:25 [ 791.969429] [<ffffffff81144fcd>] __do_fault+0x5d/0x110
Apr 21 23:55:25 [ 791.969531] [<ffffffff81148e34>]
handle_mm_fault+0x1154/0x1b00
Apr 21 23:55:25 [ 791.969635] [<ffffffff810a49bf>] ?
lock_timer_base.isra.34+0x4f/0x70
Apr 21 23:55:25 [ 791.969741] [<ffffffff81042ee1>]
__do_page_fault+0x121/0x360
Apr 21 23:55:25 [ 791.969842] [<ffffffff8104315c>] do_page_fault+0xc/0x10
Apr 21 23:55:25 [ 791.969944] [<ffffffff814dab8f>] page_fault+0x1f/0x30
Apr 21 23:55:25 [ 791.970047] [<ffffffff812ec4f2>] ?
copy_user_enhanced_fast_string+0x2/0x10
Apr 21 23:55:25 [ 791.970152] [<ffffffff812f25bc>] ?
copy_from_iter+0x7c/0x260
Apr 21 23:55:25 [ 791.970255] [<ffffffff8143a448>]
tcp_sendmsg+0xaa8/0xae0
Apr 21 23:55:25 [ 791.970359] [<ffffffff814631d0>] inet_sendmsg+0x60/0x90
Apr 21 23:55:25 [ 791.970462] [<ffffffff813d4da3>] sock_sendmsg+0x33/0x40
Apr 21 23:55:25 [ 791.970562] [<ffffffff813d51cf>] SYSC_sendto+0xef/0x170
Apr 21 23:55:25 [ 791.970664] [<ffffffff81042efe>] ?
__do_page_fault+0x13e/0x360
Apr 21 23:55:25 [ 791.970766] [<ffffffff813d5bc9>] SyS_sendto+0x9/0x10
Apr 21 23:55:25 [ 791.970868] [<ffffffff814d8f1b>]
entry_SYSCALL_64_fastpath+0x16/0x6e
Apr 21 23:55:26 [ 793.219426] NMI watchdog: Watchdog detected hard
LOCKUP on cpu 0
Apr 21 23:55:26
Apr 21 23:55:26 [ 793.219517] Modules linked in:
Apr 21 23:55:26 iptable_mangle
Apr 21 23:55:26 netconsole
Apr 21 23:55:26 configfs
Apr 21 23:55:26 tun
Apr 21 23:55:26 xt_multiport
Apr 21 23:55:26 ip6table_filter
Apr 21 23:55:26 ip6_tables
Apr 21 23:55:26 iptable_filter
Apr 21 23:55:26 ip_tables
Apr 21 23:55:26 x_tables
Apr 21 23:55:26 bridge
Apr 21 23:55:26 stp
Apr 21 23:55:26 llc
Apr 21 23:55:26 bonding
Apr 21 23:55:26 ext4
Apr 21 23:55:26 crc16
Apr 21 23:55:26 mbcache
Apr 21 23:55:26 jbd2
Apr 21 23:55:26 raid1
Apr 21 23:55:26 raid0
Apr 21 23:55:26 raid456
Apr 21 23:55:26 async_raid6_recov
Apr 21 23:55:26 async_memcpy
Apr 21 23:55:26 async_pq
Apr 21 23:55:26 async_xor
Apr 21 23:55:26 xor
Apr 21 23:55:26 async_tx
Apr 21 23:55:26 raid6_pq
Apr 21 23:55:26 md_mod
Apr 21 23:55:26 sg
Apr 21 23:55:26 sd_mod
Apr 21 23:55:26 hid_generic
Apr 21 23:55:26 usbhid
Apr 21 23:55:26 hid
Apr 21 23:55:26 iTCO_wdt
Apr 21 23:55:26 iTCO_vendor_support
Apr 21 23:55:26 x86_pkg_temp_thermal
Apr 21 23:55:26 intel_powerclamp
Apr 21 23:55:26 coretemp
Apr 21 23:55:26 crct10dif_pclmul
Apr 21 23:55:26 crc32_pclmul
Apr 21 23:55:26 crc32c_intel
Apr 21 23:55:26 ghash_clmulni_intel
Apr 21 23:55:26 cryptd
Apr 21 23:55:26 xhci_pci
Apr 21 23:55:26 ahci
Apr 21 23:55:26 igb
Apr 21 23:55:26 ehci_pci
Apr 21 23:55:26 i2c_algo_bit
Apr 21 23:55:26 xhci_hcd
Apr 21 23:55:26 ptp
Apr 21 23:55:26 ehci_hcd
Apr 21 23:55:26 libahci
Apr 21 23:55:26 mpt3sas
Apr 21 23:55:26 sb_edac
Apr 21 23:55:26 i2c_i801
Apr 21 23:55:26 pps_core
Apr 21 23:55:26 edac_core
Apr 21 23:55:26 mei_me
Apr 21 23:55:26 raid_class
Apr 21 23:55:26 lpc_ich
Apr 21 23:55:26 libata
Apr 21 23:55:26 scsi_transport_sas
Apr 21 23:55:26 usbcore
Apr 21 23:55:26 mfd_core
Apr 21 23:55:26 mei
Apr 21 23:55:26 usb_common
Apr 21 23:55:26 i2c_core
Apr 21 23:55:26 ioatdma
Apr 21 23:55:26 scsi_mod
Apr 21 23:55:26 dca
Apr 21 23:55:26 ipmi_si
Apr 21 23:55:26 ipmi_msghandler
Apr 21 23:55:26 acpi_power_meter
Apr 21 23:55:26 acpi_pad
Apr 21 23:55:26 tpm_tis
Apr 21 23:55:26 tpm
Apr 21 23:55:26 processor
Apr 21 23:55:26 button
Apr 21 23:55:26
Apr 21 23:55:26 [ 793.224979] CPU: 0 PID: 17378 Comm: rtorrent main
Not tainted 4.5.1 #1
Apr 21 23:55:26 [ 793.225075] Hardware name: Supermicro Super
Server/X10DRi-LN4+, BIOS 1.0b 01/29/2015
Apr 21 23:55:26 [ 793.225190] 0000000000000000
Apr 21 23:55:26 ffff881fffc05bd0
Apr 21 23:55:26 ffffffff812e00b8
Apr 21 23:55:26 0000000000000000
Apr 21 23:55:26
Apr 21 23:55:26 [ 793.225552] 0000000000000000
Apr 21 23:55:26 ffff881fffc05be8
Apr 21 23:55:26 ffffffff810dff1d
Apr 21 23:55:26 ffff881fff832c00
Apr 21 23:55:26
Apr 21 23:55:26 [ 793.225915] ffff881fffc05c20
Apr 21 23:55:26 ffffffff8110f8f8
Apr 21 23:55:26 0000000000000001
Apr 21 23:55:26 ffff881fffc0af00
Apr 21 23:55:26
Apr 21 23:55:26 [ 793.226277] Call Trace:
Apr 21 23:55:26 [ 793.226363] <NMI>
Apr 21 23:55:26 [<ffffffff812e00b8>] dump_stack+0x4d/0x65
Apr 21 23:55:26 [ 793.226812] [<ffffffff810dff1d>]
watchdog_overflow_callback+0xdd/0xf0
Apr 21 23:55:26 [ 793.226916] [<ffffffff8110f8f8>]
__perf_event_overflow+0x88/0x1d0
Apr 21 23:55:26 [ 793.227014] [<ffffffff811103e4>]
perf_event_overflow+0x14/0x20
Apr 21 23:55:26 [ 793.227112] [<ffffffff8101e320>]
intel_pmu_handle_irq+0x1d0/0x4a0
Apr 21 23:55:26 [ 793.227210] [<ffffffff810162d8>]
perf_event_nmi_handler+0x28/0x50
Apr 21 23:55:26 [ 793.227309] [<ffffffff81008121>] nmi_handle+0x61/0x110
Apr 21 23:55:26 [ 793.227405] [<ffffffff810082e7>] do_nmi+0x117/0x3e0
Apr 21 23:55:26 [ 793.227503] [<ffffffff814dae97>]
end_repeat_nmi+0x1a/0x1e
Apr 21 23:55:26 [ 793.227600] [<ffffffff81090cc1>] ?
queued_spin_lock_slowpath+0xf1/0x170
Apr 21 23:55:26 [ 793.227700] [<ffffffff81090cc1>] ?
queued_spin_lock_slowpath+0xf1/0x170
Apr 21 23:55:26 [ 793.227797] [<ffffffff81090cc1>] ?
queued_spin_lock_slowpath+0xf1/0x170
Apr 21 23:55:26 [ 793.227895] <<EOE>>
Apr 21 23:55:26 [<ffffffff814d8c6c>] _raw_spin_lock_irq+0x1c/0x20
Apr 21 23:55:26 [ 793.228071] [<ffffffffa01cd5d4>]
raid5_make_request+0x6d4/0xce0 [raid456]
Apr 21 23:55:26 [ 793.228171] [<ffffffff8111b520>] ?
mempool_alloc_slab+0x10/0x20
Apr 21 23:55:26 [ 793.228270] [<ffffffff8108bd90>] ? wait_woken+0x80/0x80
Apr 21 23:55:26 [ 793.228368] [<ffffffffa0110e43>]
md_make_request+0xd3/0x210 [md_mod]
Apr 21 23:55:26 [ 793.228468] [<ffffffff812b8319>]
generic_make_request+0xe9/0x1c0
Apr 21 23:55:26 [ 793.228564] [<ffffffff812b8452>] submit_bio+0x62/0x150
Apr 21 23:55:26 [ 793.228663] [<ffffffff811c6425>]
mpage_bio_submit+0x25/0x30
Apr 21 23:55:26 [ 793.228759] [<ffffffff811c7489>]
mpage_readpages+0x149/0x170
Apr 21 23:55:26 [ 793.228858] [<ffffffff81246040>] ?
__xfs_get_blocks+0x810/0x810
Apr 21 23:55:26 [ 793.228953] [<ffffffff81246040>] ?
__xfs_get_blocks+0x810/0x810
Apr 21 23:55:26 [ 793.229065] [<ffffffff8116633d>] ?
alloc_pages_current+0x8d/0x110
Apr 21 23:55:26 [ 793.229168] [<ffffffff812442f3>]
xfs_vm_readpages+0x33/0x80
Apr 21 23:55:26 [ 793.229265] [<ffffffff81126585>]
__do_page_cache_readahead+0x165/0x210
Apr 21 23:55:26 [ 793.229368] [<ffffffffa02cc397>] ?
br_dev_xmit+0x137/0x1d0 [bridge]
Apr 21 23:55:26 [ 793.229465] [<ffffffff8111b1c7>]
filemap_fault+0x427/0x4d0
Apr 21 23:55:26 [ 793.229561] [<ffffffff814d756d>] ? down_read+0xd/0x20
Apr 21 23:55:26 [ 793.229656] [<ffffffff8124fe20>]
xfs_filemap_fault+0x40/0xa0
Apr 21 23:55:26 [ 793.229754] [<ffffffff81144fcd>] __do_fault+0x5d/0x110
Apr 21 23:55:26 [ 793.229849] [<ffffffff81148e34>]
handle_mm_fault+0x1154/0x1b00
Apr 21 23:55:26 [ 793.229947] [<ffffffff81042ee1>]
__do_page_fault+0x121/0x360
Apr 21 23:55:26 [ 793.230042] [<ffffffff8104315c>] do_page_fault+0xc/0x10
Apr 21 23:55:26 [ 793.230137] [<ffffffff814dab8f>] page_fault+0x1f/0x30
Apr 21 23:55:26 [ 793.230233] [<ffffffff812ec4f2>] ?
copy_user_enhanced_fast_string+0x2/0x10
Apr 21 23:55:26 [ 793.230332] [<ffffffff812f25bc>] ?
copy_from_iter+0x7c/0x260
Apr 21 23:55:26 [ 793.230429] [<ffffffff81439f78>]
tcp_sendmsg+0x5d8/0xae0
Apr 21 23:55:26 [ 793.230524] [<ffffffff8114c8e1>] ?
__vma_link_file+0x41/0x50
Apr 21 23:55:26 [ 793.230622] [<ffffffff814631d0>] inet_sendmsg+0x60/0x90
Apr 21 23:55:26 [ 793.230717] [<ffffffff813d4da3>] sock_sendmsg+0x33/0x40
Apr 21 23:55:26 [ 793.230811] [<ffffffff813d51cf>] SYSC_sendto+0xef/0x170
Apr 21 23:55:26 [ 793.230907] [<ffffffff811363e8>] ?
vm_mmap_pgoff+0x98/0xc0
Apr 21 23:55:26 [ 793.231003] [<ffffffff8114e075>] ?
SyS_mmap_pgoff+0xe5/0x270
Apr 21 23:55:26 [ 793.231098] [<ffffffff813d5bc9>] SyS_sendto+0x9/0x10
Apr 21 23:55:26 [ 793.231192] [<ffffffff814d8f1b>]
entry_SYSCALL_64_fastpath+0x16/0x6e
Apr 21 23:55:27 [ 793.895422] NMI watchdog: Watchdog detected hard
LOCKUP on cpu 4
We are not using any additional modules for monitoring the servers other
than plain ping warnings in case a server is not responding..
We have tried loading the optimized defaults in bios, the current
motherboard is on an older bios just for testing and the problem is
identical..
I just cannot find the problem here, it appears to die constantly.
Right now, i have taken it out of production, and im moving data over
from that raids, it currently consists of 6 raid5's, i will move data
between them one at the time and re-create the mdadm raid and the
filesystem on them to see if there's a problem there.
Any other ideas?
Best regards
Daniel
Den 20-04-2016 kl. 17:29 skrev John Stoffel:
> Daniel,
>
> This is one of those hard problems to diagnose. Can you take the
> system out of production and run some stress tests on it to see how it
> does?
>
> Have you updated all the firmware on the board? Have you disabled
> hyperthreading as well? Is there any overclocking or stuff like that
> happening? If so, go back to the BIOS "safe" defaults.
>
> Do you have another system with the same hardware that's working fine
> in the same type of setup? Then that does point to hardware.
>
> Is your power supply maxed out or near the limits? Maybe you're
> getting a slight under-voltage? Not likely... but you never know.
>
> And why is the kernel tainted? Are you adding in third party modules?
> If so, remove them completely from the system. SuperMicros don't
> generally require anything like that in my experience.
>
> Is it some of the extra monitoring modules you have installed?
>
> Good luck!
> John
>
>
>
>>>>>> "Daniel" == Daniel Walker <admin@ftwinc.net> writes:
> Daniel> Hi,
>
> Daniel> I upgraded the kernel to the latest stable with debugging enabled
> Daniel> (4.5.1) without any luck, this is what is outputted in dmesg:
>
>
> Daniel> [262448.558983] INFO: task php:13376 blocked for more than 120 seconds.
> Daniel> [262448.559057] Tainted: G W 4.5.1 #1
> Daniel> [262448.559092] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs"
> Daniel> disables this message.
> Daniel> [262448.559246] php D
> Daniel> ffff88001c297a18
> Daniel> 0 13376 12277 0x00000000
> Daniel> [262448.559519] ffff88001c297a18
> Daniel> ffff881ff248c100
> Daniel> ffff880013e9b400
> Daniel> ffff881fea472000
>
> Daniel> [262448.559603] ffff88001c297ae8
> Daniel> ffff88001c298000
> Daniel> ffff881c5cac1b30
> Daniel> ffff880013e9b400
>
> Daniel> [262448.560046] 0000000000020001
> Daniel> 0000000545ea7820
> Daniel> ffff88001c297a30
> Daniel> ffffffff814d5690
>
> Daniel> [262448.560485] Call Trace:
> Daniel> [262448.560541] [<ffffffff814d5690>] schedule+0x30/0x80
> Daniel> [262448.560761] [<ffffffff814d823e>] schedule_timeout+0x21e/0x2a0
> Daniel> [262448.560828] [<ffffffff81217c3d>] ?
> Daniel> xfs_bmap_search_extents+0x7d/0x100
> Daniel> [262448.561000] [<ffffffff810902d9>] ? down_trylock+0x29/0x40
> Daniel> [262448.561135] [<ffffffff814d726f>] __down+0x5f/0xa0
> Daniel> [262448.561268] [<ffffffff8124bdd6>] ? _xfs_buf_find+0x156/0x350
> Daniel> [262448.561347] [<ffffffff8109032c>] down+0x3c/0x50
> Daniel> [262448.561390] [<ffffffff8124bbc7>] xfs_buf_lock+0x37/0xf0
> Daniel> [262448.561435] [<ffffffff8124bdd6>] _xfs_buf_find+0x156/0x350
> Daniel> [262448.561557] [<ffffffff8124bff5>] xfs_buf_get_map+0x25/0x280
> Daniel> [262448.561603] [<ffffffff81268f4b>] ? kmem_zone_alloc+0x7b/0x120
> Daniel> [262448.561666] [<ffffffff8124cbe8>] xfs_buf_read_map+0x28/0x180
> Daniel> [262448.561768] [<ffffffff8127830b>] xfs_trans_read_buf_map+0xeb/0x300
> Daniel> [262448.561809] [<ffffffff8123f7da>] xfs_imap_to_bp+0x5a/0xc0
> Daniel> [262448.561881] [<ffffffff8125b7a5>] xfs_iunlink_remove+0x275/0x3a0
> Daniel> [262448.561943] [<ffffffff81268f4b>] ? kmem_zone_alloc+0x7b/0x120
> Daniel> [262448.561988] [<ffffffff8125ec33>] xfs_ifree+0x33/0xd0
> Daniel> [262448.562033] [<ffffffff8125ed85>] xfs_inactive_ifree+0xb5/0x200
> Daniel> [262448.562109] [<ffffffff8125ef58>] xfs_inactive+0x88/0x110
> Daniel> [262448.562296] [<ffffffff81263f31>] xfs_fs_evict_inode+0xc1/0x110
> Daniel> [262448.562344] [<ffffffff811a42fb>] evict+0xbb/0x180
> Daniel> [262448.562405] [<ffffffff811a4bb3>] iput+0x193/0x200
> Daniel> [262448.562483] [<ffffffff811a08d2>] d_delete+0x122/0x160
> Daniel> [262448.562520] [<ffffffff81195b99>] vfs_rmdir+0xf9/0x120
> Daniel> [262448.562559] [<ffffffff81199d17>] do_rmdir+0x1b7/0x1d0
> Daniel> [262448.562607] [<ffffffff81001210>] ? exit_to_usermode_loop+0x90/0xb0
> Daniel> [262448.562665] [<ffffffff8119a921>] SyS_rmdir+0x11/0x20
> Daniel> [262448.562891] [<ffffffff814d8f1b>]
> Daniel> entry_SYSCALL_64_fastpath+0x16/0x6e
> Daniel> [262489.707201] NMI watchdog: Watchdog detected hard LOCKUP on cpu 15
>
> Daniel> [262489.707227] Modules linked in:
> Daniel> ipt_MASQUERADE
> Daniel> nf_nat_masquerade_ipv4
> Daniel> iptable_nat
> Daniel> nf_conntrack_ipv4
> Daniel> nf_defrag_ipv4
> Daniel> nf_nat_ipv4
> Daniel> nf_nat
> Daniel> nf_conntrack
> Daniel> ipt_REJECT
> Daniel> nf_reject_ipv4
> Daniel> iptable_mangle
> Daniel> netconsole
> Daniel> configfs
> Daniel> tun
> Daniel> xt_multiport
> Daniel> ip6table_filter
> Daniel> ip6_tables
> Daniel> iptable_filter
> Daniel> ip_tables
> Daniel> x_tables
> Daniel> bridge
> Daniel> stp
> Daniel> llc
> Daniel> bonding
> Daniel> ext4
> Daniel> crc16
> Daniel> mbcache
> Daniel> jbd2
> Daniel> raid1
> Daniel> raid0
> Daniel> raid456
> Daniel> async_raid6_recov
> Daniel> async_memcpy
> Daniel> async_pq
> Daniel> async_xor
> Daniel> xor
> Daniel> async_tx
> Daniel> raid6_pq
> Daniel> md_mod
> Daniel> sg
> Daniel> sd_mod
> Daniel> hid_generic
> Daniel> usbhid
> Daniel> hid
> Daniel> x86_pkg_temp_thermal
> Daniel> coretemp
> Daniel> crct10dif_pclmul
> Daniel> crc32_pclmul
> Daniel> crc32c_intel
> Daniel> ghash_clmulni_intel
> Daniel> jitterentropy_rng
> Daniel> sha256_ssse3
> Daniel> iTCO_wdt
> Daniel> sha256_generic
> Daniel> iTCO_vendor_support
> Daniel> hmac
> Daniel> drbg
> Daniel> xhci_pci
> Daniel> ahci
> Daniel> sb_edac
> Daniel> ehci_pci
> Daniel> ansi_cprng
> Daniel> xhci_hcd
> Daniel> ehci_hcd
> Daniel> libahci
> Daniel> i2c_i801
> Daniel> edac_core
> Daniel> lpc_ich
> Daniel> mei_me
> Daniel> mfd_core
> Daniel> libata
> Daniel> usbcore
> Daniel> igb
> Daniel> mei
> Daniel> megaraid_sas
> Daniel> i2c_algo_bit
> Daniel> usb_common
> Daniel> ptp
> Daniel> aesni_intel
> Daniel> pps_core
> Daniel> aes_x86_64
> Daniel> ioatdma
> Daniel> lrw
> Daniel> gf128mul
> Daniel> glue_helper
> Daniel> ablk_helper
> Daniel> i2c_core
> Daniel> scsi_mod
> Daniel> dca
> Daniel> cryptd
> Daniel> ipmi_si
> Daniel> ipmi_msghandler
> Daniel> acpi_power_meter
> Daniel> tpm_tis
> Daniel> tpm
> Daniel> processor
> Daniel> button
>
> Daniel> [262489.708066] CPU: 15 PID: 17535 Comm: kworker/u32:6 Tainted:
> Daniel> G W 4.5.1 #1
> Daniel> [262489.708124] Hardware name: Supermicro Super Server/X10DRi-LN4+,
> Daniel> BIOS 2.0 12/17/2015
> Daniel> [262489.708187] Workqueue: writeback wb_workfn
> Daniel> (flush-9:7)
>
> Daniel> [262489.708228] 0000000000000000
> Daniel> ffff88207fde5bd0
> Daniel> ffffffff812e00b8
> Daniel> 0000000000000000
>
> Daniel> [262489.708298] 0000000000000000
> Daniel> ffff88207fde5be8
> Daniel> ffffffff810dff1d
> Daniel> ffff881ff2270000
>
> Daniel> [262489.708368] ffff88207fde5c20
> Daniel> ffffffff8110f8f8
> Daniel> 0000000000000001
> Daniel> ffff88207fdeaf00
>
> Daniel> [262489.708438] Call Trace:
> Daniel> [262489.708467] <NMI>
> Daniel> [<ffffffff812e00b8>] dump_stack+0x4d/0x65
> Daniel> [262489.708512] [<ffffffff810dff1d>]
> Daniel> watchdog_overflow_callback+0xdd/0xf0
> Daniel> [262489.708552] [<ffffffff8110f8f8>] __perf_event_overflow+0x88/0x1d0
> Daniel> [262489.708589] [<ffffffff811103e4>] perf_event_overflow+0x14/0x20
> Daniel> [262489.708627] [<ffffffff8101e320>] intel_pmu_handle_irq+0x1d0/0x4a0
> Daniel> [262489.708666] [<ffffffff81155481>] ? vunmap_page_range+0x1a1/0x310
> Daniel> [262489.708703] [<ffffffff811555fc>] ?
> Daniel> unmap_kernel_range_noflush+0xc/0x10
> Daniel> [262489.708748] [<ffffffff8135a543>] ?
> Daniel> ghes_copy_tofrom_phys+0x113/0x1e0
> Daniel> [262489.708788] [<ffffffff810359da>] ?
> Daniel> native_apic_wait_icr_idle+0x1a/0x30
> Daniel> [262489.708827] [<ffffffff810096e0>] ? arch_irq_work_raise+0x30/0x40
> Daniel> [262489.708865] [<ffffffff810162d8>] perf_event_nmi_handler+0x28/0x50
> Daniel> [262489.708902] [<ffffffff81008121>] nmi_handle+0x61/0x110
> Daniel> [262489.708939] [<ffffffff810082e7>] do_nmi+0x117/0x3e0
> Daniel> [262489.708975] [<ffffffff814dae97>] end_repeat_nmi+0x1a/0x1e
> Daniel> [262489.709013] [<ffffffffa01d05f0>] ? raid5_unplug+0x70/0x130
> Daniel> [raid456]
> Daniel> [262489.709051] [<ffffffffa01d05f0>] ? raid5_unplug+0x70/0x130
> Daniel> [raid456]
> Daniel> [262489.709089] [<ffffffffa01d05f0>] ? raid5_unplug+0x70/0x130
> Daniel> [raid456]
> Daniel> [262489.709125] <<EOE>>
> Daniel> [<ffffffff812b9b98>] blk_flush_plug_list+0xa8/0x210
> Daniel> [262489.709169] [<ffffffff814d5de0>] ? bit_wait_timeout+0x70/0x70
> Daniel> [262489.709206] [<ffffffff814d4c04>] io_schedule_timeout+0x54/0x130
> Daniel> [262489.709242] [<ffffffff814d5df6>] bit_wait_io+0x16/0x60
> Daniel> [262489.709277] [<ffffffff814d5b59>] __wait_on_bit_lock+0x49/0xa0
> Daniel> [262489.709314] [<ffffffff81117fd0>] __lock_page+0xb0/0xc0
> Daniel> [262489.709352] [<ffffffff8108bdc0>] ?
> Daniel> autoremove_wake_function+0x30/0x30
> Daniel> [262489.709391] [<ffffffff811250f0>] write_cache_pages+0x2f0/0x4d0
> Daniel> [262489.709427] [<ffffffff81122df0>] ? wb_position_ratio+0x1f0/0x1f0
> Daniel> [262489.709465] [<ffffffff8112530e>] generic_writepages+0x3e/0x60
> Daniel> [262489.709502] [<ffffffff81244c18>] xfs_vm_writepages+0x38/0x40
> Daniel> [262489.709539] [<ffffffff81125e29>] do_writepages+0x19/0x30
> Daniel> [262489.709574] [<ffffffff811b5c50>]
> Daniel> __writeback_single_inode+0x40/0x310
> Daniel> [262489.709612] [<ffffffff811b6402>] writeback_sb_inodes+0x242/0x520
> Daniel> [262489.709649] [<ffffffff811b676a>] __writeback_inodes_wb+0x8a/0xc0
> Daniel> [262489.709686] [<ffffffff811b6a77>] wb_writeback+0x247/0x2d0
> Daniel> [262489.709721] [<ffffffff811b716f>] wb_workfn+0x20f/0x3c0
> Daniel> [262489.709758] [<ffffffff81067513>] process_one_work+0x143/0x400
> Daniel> [262489.709795] [<ffffffff81067cc1>] worker_thread+0x61/0x490
> Daniel> [262489.709831] [<ffffffff81067c60>] ? max_active_store+0x60/0x60
> Daniel> [262489.709867] [<ffffffff8106c926>] kthread+0xd6/0xf0
> Daniel> [262489.709901] [<ffffffff8106c850>] ? kthread_park+0x50/0x50
> Daniel> [262489.709937] [<ffffffff814d92af>] ret_from_fork+0x3f/0x70
> Daniel> [262489.709972] [<ffffffff8106c850>] ? kthread_park+0x50/0x50
> Daniel> [262491.022971] NMI watchdog: Watchdog detected hard LOCKUP on cpu 0
>
> Daniel> [262491.023470] Modules linked in:
> Daniel> ipt_MASQUERADE
> Daniel> nf_nat_masquerade_ipv4
> Daniel> iptable_nat
> Daniel> nf_conntrack_ipv4
> Daniel> nf_defrag_ipv4
> Daniel> nf_nat_ipv4
> Daniel> nf_nat
> Daniel> nf_conntrack
> Daniel> ipt_REJECT
> Daniel> nf_reject_ipv4
> Daniel> iptable_mangle
> Daniel> netconsole
> Daniel> configfs
> Daniel> tun
> Daniel> xt_multiport
> Daniel> ip6table_filter
> Daniel> ip6_tables
> Daniel> iptable_filter
> Daniel> ip_tables
> Daniel> x_tables
> Daniel> bridge
> Daniel> stp
> Daniel> llc
> Daniel> bonding
> Daniel> ext4
> Daniel> crc16
> Daniel> mbcache
> Daniel> jbd2
> Daniel> raid1
> Daniel> raid0
> Daniel> raid456
> Daniel> async_raid6_recov
> Daniel> async_memcpy
> Daniel> async_pq
> Daniel> async_xor
> Daniel> xor
> Daniel> async_tx
> Daniel> raid6_pq
> Daniel> md_mod
> Daniel> sg
> Daniel> sd_mod
> Daniel> hid_generic
> Daniel> usbhid
> Daniel> hid
> Daniel> x86_pkg_temp_thermal
> Daniel> coretemp
> Daniel> crct10dif_pclmul
> Daniel> crc32_pclmul
> Daniel> crc32c_intel
> Daniel> ghash_clmulni_intel
> Daniel> jitterentropy_rng
> Daniel> sha256_ssse3
> Daniel> iTCO_wdt
> Daniel> sha256_generic
> Daniel> iTCO_vendor_support
> Daniel> hmac
> Daniel> drbg
> Daniel> xhci_pci
> Daniel> ahci
> Daniel> sb_edac
> Daniel> ehci_pci
> Daniel> ansi_cprng
> Daniel> xhci_hcd
> Daniel> ehci_hcd
> Daniel> libahci
> Daniel> i2c_i801
> Daniel> edac_core
> Daniel> lpc_ich
> Daniel> mei_me
> Daniel> mfd_core
> Daniel> libata
> Daniel> usbcore
> Daniel> igb
> Daniel> mei
> Daniel> megaraid_sas
> Daniel> i2c_algo_bit
> Daniel> usb_common
> Daniel> ptp
> Daniel> aesni_intel
> Daniel> pps_core
> Daniel> aes_x86_64
> Daniel> ioatdma
> Daniel> lrw
> Daniel> gf128mul
> Daniel> glue_helper
> Daniel> ablk_helper
> Daniel> i2c_core
> Daniel> scsi_mod
> Daniel> dca
> Daniel> cryptd
> Daniel> ipmi_si
> Daniel> ipmi_msghandler
> Daniel> acpi_power_meter
> Daniel> tpm_tis
> Daniel> tpm
> Daniel> processor
> Daniel> button
>
> Daniel> [262491.029705] CPU: 0 PID: 1178 Comm: md7_raid5 Tainted: G
> Daniel> W 4.5.1 #1
> Daniel> [262491.029776] Hardware name: Supermicro Super Server/X10DRi-LN4+,
> Daniel> BIOS 2.0 12/17/2015
> Daniel> [262491.029849] 0000000000000000
> Daniel> ffff88207fc05bd0
> Daniel> ffffffff812e00b8
> Daniel> 0000000000000000
>
> Daniel> [262491.029988] 0000000000000000
> Daniel> ffff88207fc05be8
> Daniel> ffffffff810dff1d
> Daniel> ffff881fff032000
>
> Daniel> [262491.030124] ffff88207fc05c20
> Daniel> ffffffff8110f8f8
> Daniel> 0000000000000001
> Daniel> ffff88207fc0af00
>
> Daniel> [262491.030260] Call Trace:
> Daniel> [262491.030302] <NMI>
> Daniel> [<ffffffff812e00b8>] dump_stack+0x4d/0x65
> Daniel> [262491.030377] [<ffffffff810dff1d>]
> Daniel> watchdog_overflow_callback+0xdd/0xf0
> Daniel> [262491.030432] [<ffffffff8110f8f8>] __perf_event_overflow+0x88/0x1d0
> Daniel> [262491.030484] [<ffffffff811103e4>] perf_event_overflow+0x14/0x20
> Daniel> [262491.030536] [<ffffffff8101e320>] intel_pmu_handle_irq+0x1d0/0x4a0
> Daniel> [262491.030589] [<ffffffff81155481>] ? vunmap_page_range+0x1a1/0x310
> Daniel> [262491.030640] [<ffffffff811555fc>] ?
> Daniel> unmap_kernel_range_noflush+0xc/0x10
> Daniel> [262491.030693] [<ffffffff8135a543>] ?
> Daniel> ghes_copy_tofrom_phys+0x113/0x1e0
> Daniel> [262491.030745] [<ffffffff8135a681>] ? ghes_read_estatus+0x71/0x140
> Daniel> [262491.030797] [<ffffffff810162d8>] perf_event_nmi_handler+0x28/0x50
> Daniel> [262491.030849] [<ffffffff81008121>] nmi_handle+0x61/0x110
> Daniel> [262491.030898] [<ffffffff810083d1>] do_nmi+0x201/0x3e0
> Daniel> [262491.030949] [<ffffffff814dae97>] end_repeat_nmi+0x1a/0x1e
> Daniel> [262491.030998] [<ffffffff81090d23>] ?
> Daniel> queued_spin_lock_slowpath+0x153/0x170
> Daniel> [262491.031050] [<ffffffff81090d23>] ?
> Daniel> queued_spin_lock_slowpath+0x153/0x170
> Daniel> [262491.031102] [<ffffffff81090d23>] ?
> Daniel> queued_spin_lock_slowpath+0x153/0x170
> Daniel> [262491.031153] <<EOE>>
> Daniel> [<ffffffff814d8c6c>] _raw_spin_lock_irq+0x1c/0x20
> Daniel> [262491.031225] [<ffffffffa01db6b1>] raid5d+0x91/0x720 [raid456]
> Daniel> [262491.031276] [<ffffffff810a4a8a>] ? try_to_del_timer_sync+0x4a/0x60
> Daniel> [262491.031328] [<ffffffff810a4ae3>] ? del_timer_sync+0x43/0x50
> Daniel> [262491.031377] [<ffffffff814d816e>] ? schedule_timeout+0x14e/0x2a0
> Daniel> [262491.031428] [<ffffffff810a4830>] ?
> Daniel> trace_event_raw_event_tick_stop+0x100/0x100
> Daniel> [262491.031502] [<ffffffffa017874b>] md_thread+0x12b/0x130 [md_mod]
> Daniel> [262491.031555] [<ffffffff8108bd90>] ? wait_woken+0x80/0x80
> Daniel> [262491.031605] [<ffffffffa0178620>] ? find_pers+0x70/0x70 [md_mod]
> Daniel> [262491.031656] [<ffffffff8106c926>] kthread+0xd6/0xf0
> Daniel> [262491.031704] [<ffffffff8106c850>] ? kthread_park+0x50/0x50
> Daniel> [262491.031753] [<ffffffff814d92af>] ret_from_fork+0x3f/0x70
> Daniel> [262491.031802] [<ffffffff8106c850>] ? kthread_park+0x50/0x50
> Daniel> [262491.031753] [<ffffffff814d92af>] ret_from_fork+0x3f/0x70
> Daniel> [262491.031802] [<ffffffff8106c850>] ? kthread_park+0x50/0x50
>
> Daniel> The server is hosting plain VPS's, there's a few that use it for
> Daniel> rtorrent which is quite disk extenssive, but from what I can see that
> Daniel> iowait is quite low.
>
> Daniel> There's absolutely nothing logged at all before the lockups, everythings
> Daniel> running fine and then suddenly it just crashes, im beginning to think we
> Daniel> might have a hardware problem, but im having a hard time finding the
> Daniel> actual issue.
>
> Daniel> Any ideas?
>
> Daniel> Best regards
>
>
> Daniel> Den 13-04-2016 kl. 19:00 skrev Shaohua Li:
>>> Looks there is a deadlock trying to hold the device_lock or hash_lock. anything
>>> abormal print out before the NMI watchdog? What is running in the machine?
>>> Looks this is old kernel, is it possible you can try a latest kernel and report
>>> back?
>>>
>>> Thanks,
>>> Shaohua
>>>
>>> On Tue, Apr 12, 2016 at 09:54:08PM +0000, Daniel Walker wrote:
>>>> Im having some issues on a brand new Supermicro server that we have running
>>>> in production along side a few other machines which are identical to this
>>>> server..
>>>>
>>>> The output from the netconsole attached to the server is here:
>>>>
>>>> Apr 12 21:34:45 [75704.964946] NMI watchdog: Watchdog detected hard LOCKUP
>>>> on cpu 6
>>>> Apr 12 21:34:45
>>>> Apr 12 21:34:45 [75704.964973] Modules linked in:
>>>> Apr 12 21:34:45 ipt_REJECT
>>>> Apr 12 21:34:45 nf_reject_ipv4
>>>> Apr 12 21:34:45 iptable_mangle
>>>> Apr 12 21:34:45 tun
>>>> Apr 12 21:34:45 netconsole
>>>> Apr 12 21:34:45 configfs
>>>> Apr 12 21:34:45 xt_multiport
>>>> Apr 12 21:34:45 ip6table_filter
>>>> Apr 12 21:34:45 ip6_tables
>>>> Apr 12 21:34:45 iptable_filter
>>>> Apr 12 21:34:45 ip_tables
>>>> Apr 12 21:34:45 x_tables
>>>> Apr 12 21:34:45 bridge
>>>> Apr 12 21:34:45 stp
>>>> Apr 12 21:34:45 llc
>>>> Apr 12 21:34:45 bonding
>>>> Apr 12 21:34:45 ext4
>>>> Apr 12 21:34:45 crc16
>>>> Apr 12 21:34:45 mbcache
>>>> Apr 12 21:34:45 jbd2
>>>> Apr 12 21:34:45 raid1
>>>> Apr 12 21:34:45 raid0
>>>> Apr 12 21:34:45 raid456
>>>> Apr 12 21:34:45 async_raid6_recov
>>>> Apr 12 21:34:45 async_memcpy
>>>> Apr 12 21:34:45 async_pq
>>>> Apr 12 21:34:45 async_xor
>>>> Apr 12 21:34:45 xor
>>>> Apr 12 21:34:45 async_tx
>>>> Apr 12 21:34:45 raid6_pq
>>>> Apr 12 21:34:45 md_mod
>>>> Apr 12 21:34:45 sr_mod
>>>> Apr 12 21:34:45 cdrom
>>>> Apr 12 21:34:45 usb_storage
>>>> Apr 12 21:34:45 hid_generic
>>>> Apr 12 21:34:45 usbhid
>>>> Apr 12 21:34:45 hid
>>>> Apr 12 21:34:45 sg
>>>> Apr 12 21:34:45 sd_mod
>>>> Apr 12 21:34:45 x86_pkg_temp_thermal
>>>> Apr 12 21:34:45 coretemp
>>>> Apr 12 21:34:45 crct10dif_pclmul
>>>> Apr 12 21:34:45 crc32_pclmul
>>>> Apr 12 21:34:45 crc32c_intel
>>>> Apr 12 21:34:45 jitterentropy_rng
>>>> Apr 12 21:34:45 sha256_ssse3
>>>> Apr 12 21:34:45 sha256_generic
>>>> Apr 12 21:34:45 hmac
>>>> Apr 12 21:34:45 iTCO_wdt
>>>> Apr 12 21:34:45 iTCO_vendor_support
>>>> Apr 12 21:34:45 drbg
>>>> Apr 12 21:34:45 ansi_cprng
>>>> Apr 12 21:34:45 aesni_intel
>>>> Apr 12 21:34:45 aes_x86_64
>>>> Apr 12 21:34:45 lrw
>>>> Apr 12 21:34:45 gf128mul
>>>> Apr 12 21:34:45 glue_helper
>>>> Apr 12 21:34:45 ablk_helper
>>>> Apr 12 21:34:45 cryptd
>>>> Apr 12 21:34:45 ahci
>>>> Apr 12 21:34:45 libahci
>>>> Apr 12 21:34:45 sb_edac
>>>> Apr 12 21:34:45 libata
>>>> Apr 12 21:34:45 igb
>>>> Apr 12 21:34:45 megaraid_sas
>>>> Apr 12 21:34:45 xhci_pci
>>>> Apr 12 21:34:45 ehci_pci
>>>> Apr 12 21:34:45 i2c_algo_bit
>>>> Apr 12 21:34:45 xhci_hcd
>>>> Apr 12 21:34:45 ehci_hcd
>>>> Apr 12 21:34:45 edac_core
>>>> Apr 12 21:34:45 ptp
>>>> Apr 12 21:34:45 mei_me
>>>> Apr 12 21:34:45 lpc_ich
>>>> Apr 12 21:34:45 i2c_i801
>>>> Apr 12 21:34:45 usbcore
>>>> Apr 12 21:34:45 pps_core
>>>> Apr 12 21:34:45 mfd_core
>>>> Apr 12 21:34:45 mei
>>>> Apr 12 21:34:45 usb_common
>>>> Apr 12 21:34:45 i2c_core
>>>> Apr 12 21:34:45 ioatdma
>>>> Apr 12 21:34:45 scsi_mod
>>>> Apr 12 21:34:45 dca
>>>> Apr 12 21:34:45 ipmi_si
>>>> Apr 12 21:34:45 ipmi_msghandler
>>>> Apr 12 21:34:45 acpi_power_meter
>>>> Apr 12 21:34:45 tpm_tis
>>>> Apr 12 21:34:45 tpm
>>>> Apr 12 21:34:45 processor
>>>> Apr 12 21:34:45 button
>>>> Apr 12 21:34:45
>>>> Apr 12 21:34:45 [75704.965874] CPU: 6 PID: 25339 Comm: main Not tainted
>>>> 4.4.1 #2
>>>> Apr 12 21:34:45 [75704.965916] Hardware name: Supermicro Super
>>>> Server/X10DRi-LN4+, BIOS 2.0 12/17/2015
>>>> Apr 12 21:34:45 [75704.965979] 0000000000000000
>>>> Apr 12 21:34:45 ffffffff812abdf3
>>>> Apr 12 21:34:45 0000000000000000
>>>> Apr 12 21:34:45 ffffffff810cf5f5
>>>> Apr 12 21:34:45
>>>> Apr 12 21:34:45 [75704.966054] ffff881ff2870000
>>>> Apr 12 21:34:45 ffffffff810fcea2
>>>> Apr 12 21:34:45 0000000000000001
>>>> Apr 12 21:34:45 ffff881fffcc5e58
>>>> Apr 12 21:34:45
>>>> Apr 12 21:34:45 [75704.966134] ffff881fffccaf00
>>>> Apr 12 21:34:45 ffff881fffccb100
>>>> Apr 12 21:34:45 ffff881ff2870000
>>>> Apr 12 21:34:45 ffffffff8101bc63
>>>> Apr 12 21:34:45
>>>> Apr 12 21:34:45 [75704.966211] Call Trace:
>>>> Apr 12 21:34:45 [75704.966246] <NMI>
>>>> Apr 12 21:34:45 [<ffffffff812abdf3>] ? dump_stack+0x40/0x5d
>>>> Apr 12 21:34:45 [75704.966297] [<ffffffff810cf5f5>] ?
>>>> watchdog_overflow_callback+0xb5/0xd0
>>>> Apr 12 21:34:45 [75704.966339] [<ffffffff810fcea2>] ?
>>>> __perf_event_overflow+0x82/0x1c0
>>>> Apr 12 21:34:45 [75704.966384] [<ffffffff8101bc63>] ?
>>>> intel_pmu_handle_irq+0x1c3/0x3e0
>>>> Apr 12 21:34:45 [75704.966431] [<ffffffff8113b5cb>] ?
>>>> vunmap_page_range+0x1bb/0x320
>>>> Apr 12 21:34:45 [75704.966474] [<ffffffff813213e0>] ?
>>>> ghes_copy_tofrom_phys+0x110/0x1d0
>>>> Apr 12 21:34:45 [75704.966519] [<ffffffff81014f53>] ?
>>>> perf_event_nmi_handler+0x23/0x40
>>>> Apr 12 21:34:45 [75704.966560] [<ffffffff81007b85>] ?
>>>> nmi_handle+0x65/0x100
>>>> Apr 12 21:34:45 [75704.966597] [<ffffffff81007dfe>] ? do_nmi+0x1de/0x360
>>>> Apr 12 21:34:45 [75704.970603] [<ffffffff8148f957>] ?
>>>> end_repeat_nmi+0x1a/0x1e
>>>> Apr 12 21:34:45 [75704.970644] [<ffffffff810862ca>] ?
>>>> queued_spin_lock_slowpath+0xea/0x150
>>>> Apr 12 21:34:45 [75704.970685] [<ffffffff810862ca>] ?
>>>> queued_spin_lock_slowpath+0xea/0x150
>>>> Apr 12 21:34:45 [75704.970728] [<ffffffff810862ca>] ?
>>>> queued_spin_lock_slowpath+0xea/0x150
>>>> Apr 12 21:34:45 [75704.970768] <<EOE>>
>>>> Apr 12 21:34:45 [<ffffffffa01b413b>] ? make_request+0x60b/0xbd0 [raid456]
>>>> Apr 12 21:34:45 [75704.970838] [<ffffffff810815c0>] ? wait_woken+0x80/0x80
>>>> Apr 12 21:34:45 [75704.970878] [<ffffffff81151ec4>] ?
>>>> kmem_cache_alloc+0xf4/0x120
>>>> Apr 12 21:34:45 [75704.970922] [<ffffffffa017632d>] ?
>>>> md_make_request+0xdd/0x220 [md_mod]
>>>> Apr 12 21:34:45 [75704.970969] [<ffffffff81219fde>] ?
>>>> xfs_map_buffer.isra.12+0x2e/0x60
>>>> Apr 12 21:34:45 [75704.971012] [<ffffffff8128691d>] ?
>>>> generic_make_request+0xed/0x1d0
>>>> Apr 12 21:34:45 [75704.971052] [<ffffffff81286a5a>] ?
>>>> submit_bio+0x5a/0x140
>>>> Apr 12 21:34:45 [75704.971098] [<ffffffff81113379>] ?
>>>> release_pages+0xc9/0x270
>>>> Apr 12 21:34:45 [75704.971145] [<ffffffff811a2c01>] ?
>>>> do_mpage_readpage+0x2d1/0x640
>>>> Apr 12 21:34:45 [75704.971187] [<ffffffff811a304d>] ?
>>>> mpage_readpages+0xdd/0x130
>>>> Apr 12 21:34:45 [75704.971226] [<ffffffff8121b510>] ?
>>>> __xfs_get_blocks+0x750/0x750
>>>> Apr 12 21:34:45 [75704.971267] [<ffffffff8121b510>] ?
>>>> __xfs_get_blocks+0x750/0x750
>>>> Apr 12 21:34:45 [75704.971313] [<ffffffff8114ad45>] ?
>>>> alloc_pages_current+0x85/0x110
>>>> Apr 12 21:34:45 [75704.971354] [<ffffffff81111d25>] ?
>>>> __do_page_cache_readahead+0x165/0x1f0
>>>> Apr 12 21:34:45 [75704.971399] [<ffffffff81105902>] ?
>>>> pagecache_get_page+0x22/0x1a0
>>>> Apr 12 21:34:45 [75704.971441] [<ffffffff8110768c>] ?
>>>> filemap_fault+0x37c/0x400
>>>> Apr 12 21:34:45 [75704.971481] [<ffffffff8122474b>] ?
>>>> xfs_filemap_fault+0x3b/0x80
>>>> Apr 12 21:34:45 [75704.971526] [<ffffffff8112d2da>] ? __do_fault+0x3a/0xc0
>>>> Apr 12 21:34:45 [75704.971564] [<ffffffff81130883>] ?
>>>> handle_mm_fault+0x1063/0x1650
>>>> Apr 12 21:34:45 [75704.971614] [<ffffffff8103bdae>] ?
>>>> __do_page_fault+0x11e/0x370
>>>> Apr 12 21:34:45 [75704.971653] [<ffffffff811aa4ff>] ?
>>>> SyS_epoll_wait+0x8f/0xd0
>>>> Apr 12 21:34:45 [75704.971694] [<ffffffff8148f64f>] ? page_fault+0x1f/0x30
>>>> Apr 12 21:34:45 [75705.493640] NMI watchdog: Watchdog detected hard LOCKUP
>>>> on cpu 12
>>>> Apr 12 21:34:45
>>>> Apr 12 21:34:45 [75705.493668] Modules linked in:
>>>> Apr 12 21:34:45 ipt_REJECT
>>>> Apr 12 21:34:45 nf_reject_ipv4
>>>> Apr 12 21:34:45 iptable_mangle
>>>> Apr 12 21:34:45 tun
>>>> Apr 12 21:34:45 netconsole
>>>> Apr 12 21:34:45 configfs
>>>> Apr 12 21:34:45 xt_multiport
>>>> Apr 12 21:34:45 ip6table_filter
>>>> Apr 12 21:34:45 ip6_tables
>>>> Apr 12 21:34:45 iptable_filter
>>>> Apr 12 21:34:45 ip_tables
>>>> Apr 12 21:34:45 x_tables
>>>> Apr 12 21:34:45 bridge
>>>> Apr 12 21:34:45 stp
>>>> Apr 12 21:34:45 llc
>>>> Apr 12 21:34:45 bonding
>>>> Apr 12 21:34:45 ext4
>>>> Apr 12 21:34:45 crc16
>>>> Apr 12 21:34:45 mbcache
>>>> Apr 12 21:34:45 jbd2
>>>> Apr 12 21:34:45 raid1
>>>> Apr 12 21:34:45 raid0
>>>> Apr 12 21:34:45 raid456
>>>> Apr 12 21:34:45 async_raid6_recov
>>>> Apr 12 21:34:45 async_memcpy
>>>> Apr 12 21:34:45 async_pq
>>>> Apr 12 21:34:45 async_xor
>>>> Apr 12 21:34:45 xor
>>>> Apr 12 21:34:45 async_tx
>>>> Apr 12 21:34:45 raid6_pq
>>>> Apr 12 21:34:45 md_mod
>>>> Apr 12 21:34:45 sr_mod
>>>> Apr 12 21:34:45 cdrom
>>>> Apr 12 21:34:45 usb_storage
>>>> Apr 12 21:34:45 hid_generic
>>>> Apr 12 21:34:45 usbhid
>>>> Apr 12 21:34:45 hid
>>>> Apr 12 21:34:45 sg
>>>> Apr 12 21:34:45 sd_mod
>>>> Apr 12 21:34:45 x86_pkg_temp_thermal
>>>> Apr 12 21:34:45 coretemp
>>>> Apr 12 21:34:45 crct10dif_pclmul
>>>> Apr 12 21:34:45 crc32_pclmul
>>>> Apr 12 21:34:45 crc32c_intel
>>>> Apr 12 21:34:45 jitterentropy_rng
>>>> Apr 12 21:34:45 sha256_ssse3
>>>> Apr 12 21:34:45 sha256_generic
>>>> Apr 12 21:34:45 hmac
>>>> Apr 12 21:34:45 iTCO_wdt
>>>> Apr 12 21:34:45 iTCO_vendor_support
>>>> Apr 12 21:34:45 drbg
>>>> Apr 12 21:34:45 ansi_cprng
>>>> Apr 12 21:34:45 aesni_intel
>>>> Apr 12 21:34:45 aes_x86_64
>>>> Apr 12 21:34:45 lrw
>>>> Apr 12 21:34:45 gf128mul
>>>> Apr 12 21:34:45 glue_helper
>>>> Apr 12 21:34:45 ablk_helper
>>>> Apr 12 21:34:45 cryptd
>>>> Apr 12 21:34:45 ahci
>>>> Apr 12 21:34:45 libahci
>>>> Apr 12 21:34:45 sb_edac
>>>> Apr 12 21:34:45 libata
>>>> Apr 12 21:34:45 igb
>>>> Apr 12 21:34:45 megaraid_sas
>>>> Apr 12 21:34:45 xhci_pci
>>>> Apr 12 21:34:45 ehci_pci
>>>> Apr 12 21:34:45 i2c_algo_bit
>>>> Apr 12 21:34:45 xhci_hcd
>>>> Apr 12 21:34:45 ehci_hcd
>>>> Apr 12 21:34:45 edac_core
>>>> Apr 12 21:34:45 ptp
>>>> Apr 12 21:34:45 mei_me
>>>> Apr 12 21:34:45 lpc_ich
>>>> Apr 12 21:34:45 i2c_i801
>>>> Apr 12 21:34:45 usbcore
>>>> Apr 12 21:34:45 pps_core
>>>> Apr 12 21:34:45 mfd_core
>>>> Apr 12 21:34:45 mei
>>>> Apr 12 21:34:45 usb_common
>>>> Apr 12 21:34:45 i2c_core
>>>> Apr 12 21:34:45 ioatdma
>>>> Apr 12 21:34:45 scsi_mod
>>>> Apr 12 21:34:45 dca
>>>> Apr 12 21:34:45 ipmi_si
>>>> Apr 12 21:34:45 ipmi_msghandler
>>>> Apr 12 21:34:45 acpi_power_meter
>>>> Apr 12 21:34:45 tpm_tis
>>>> Apr 12 21:34:45 tpm
>>>> Apr 12 21:34:45 processor
>>>> Apr 12 21:34:45 button
>>>> Apr 12 21:34:45
>>>> Apr 12 21:34:45 [75705.494688] CPU: 12 PID: 32350 Comm: main Not tainted
>>>> 4.4.1 #2
>>>> Apr 12 21:34:45 [75705.494728] Hardware name: Supermicro Super
>>>> Server/X10DRi-LN4+, BIOS 2.0 12/17/2015
>>>> Apr 12 21:34:45 [75705.494790] 0000000000000000
>>>> Apr 12 21:34:45 ffffffff812abdf3
>>>> Apr 12 21:34:45 0000000000000000
>>>> Apr 12 21:34:45 ffffffff810cf5f5
>>>> Apr 12 21:34:45
>>>> Apr 12 21:34:45 [75705.494886] ffff883ff29a0000
>>>> Apr 12 21:34:45 ffffffff810fcea2
>>>> Apr 12 21:34:45 0000000000000001
>>>> Apr 12 21:34:45 ffff88407fc85e58
>>>> Apr 12 21:34:45
>>>> Apr 12 21:34:45 [75705.494976] ffff88407fc8af00
>>>> Apr 12 21:34:45 ffff88407fc8b100
>>>> Apr 12 21:34:45 ffff883ff29a0000
>>>> Apr 12 21:34:45 ffffffff8101bc63
>>>> Apr 12 21:34:45
>>>> Apr 12 21:34:45 [75705.495064] Call Trace:
>>>> Apr 12 21:34:45 [75705.495094] <NMI>
>>>> Apr 12 21:34:45 [<ffffffff812abdf3>] ? dump_stack+0x40/0x5d
>>>> Apr 12 21:34:45 [75705.495150] [<ffffffff810cf5f5>] ?
>>>> watchdog_overflow_callback+0xb5/0xd0
>>>> Apr 12 21:34:45 [75705.495193] [<ffffffff810fcea2>] ?
>>>> __perf_event_overflow+0x82/0x1c0
>>>> Apr 12 21:34:45 [75705.495237] [<ffffffff8101bc63>] ?
>>>> intel_pmu_handle_irq+0x1c3/0x3e0
>>>> Apr 12 21:34:45 [75705.495284] [<ffffffff8113b5cb>] ?
>>>> vunmap_page_range+0x1bb/0x320
>>>> Apr 12 21:34:45 [75705.495330] [<ffffffff813213e0>] ?
>>>> ghes_copy_tofrom_phys+0x110/0x1d0
>>>> Apr 12 21:34:45 [75705.495373] [<ffffffff81014f53>] ?
>>>> perf_event_nmi_handler+0x23/0x40
>>>> Apr 12 21:34:45 [75705.495418] [<ffffffff81007b85>] ?
>>>> nmi_handle+0x65/0x100
>>>> Apr 12 21:34:45 [75705.495458] [<ffffffff81007d2e>] ? do_nmi+0x10e/0x360
>>>> Apr 12 21:34:45 [75705.495497] [<ffffffff8148f957>] ?
>>>> end_repeat_nmi+0x1a/0x1e
>>>> Apr 12 21:34:45 [75705.495540] [<ffffffff810862ca>] ?
>>>> queued_spin_lock_slowpath+0xea/0x150
>>>> Apr 12 21:34:45 [75705.495581] [<ffffffff810862ca>] ?
>>>> queued_spin_lock_slowpath+0xea/0x150
>>>> Apr 12 21:34:45 [75705.495621] [<ffffffff810862ca>] ?
>>>> queued_spin_lock_slowpath+0xea/0x150
>>>> Apr 12 21:34:45 [75705.495661] <<EOE>>
>>>> Apr 12 21:34:45 [<ffffffffa01b413b>] ? make_request+0x60b/0xbd0 [raid456]
>>>> Apr 12 21:34:45 [75705.495733] [<ffffffff81282d87>] ?
>>>> blk_rq_init+0x87/0xa0
>>>> Apr 12 21:34:45 [75705.495771] [<ffffffff81283e3c>] ?
>>>> get_request+0x29c/0x6e0
>>>> Apr 12 21:34:45 [75705.495812] [<ffffffff810815c0>] ? wait_woken+0x80/0x80
>>>> Apr 12 21:34:45 [75705.495853] [<ffffffffa017632d>] ?
>>>> md_make_request+0xdd/0x220 [md_mod]
>>>> Apr 12 21:34:45 [75705.495898] [<ffffffff8128829e>] ?
>>>> blk_queue_bio+0x15e/0x350
>>>> Apr 12 21:34:45 [75705.495937] [<ffffffff8128691d>] ?
>>>> generic_make_request+0xed/0x1d0
>>>> Apr 12 21:34:45 [75705.495978] [<ffffffff81286a5a>] ?
>>>> submit_bio+0x5a/0x140
>>>> Apr 12 21:34:45 [75705.496018] [<ffffffff811a215e>] ?
>>>> mpage_bio_submit+0x1e/0x30
>>>> Apr 12 21:34:45 [75705.496057] [<ffffffff811a3076>] ?
>>>> mpage_readpages+0x106/0x130
>>>> Apr 12 21:34:45 [75705.496102] [<ffffffff8121b510>] ?
>>>> __xfs_get_blocks+0x750/0x750
>>>> Apr 12 21:34:45 [75705.496144] [<ffffffff8121b510>] ?
>>>> __xfs_get_blocks+0x750/0x750
>>>> Apr 12 21:34:45 [75705.496185] [<ffffffff8114ad45>] ?
>>>> alloc_pages_current+0x85/0x110
>>>> Apr 12 21:34:45 [75705.496227] [<ffffffff81111d25>] ?
>>>> __do_page_cache_readahead+0x165/0x1f0
>>>> Apr 12 21:34:45 [75705.496268] [<ffffffff811344f5>] ? vma_link+0x75/0xb0
>>>> Apr 12 21:34:45 [75705.496307] [<ffffffff811120eb>] ?
>>>> force_page_cache_readahead+0x9b/0xe0
>>>> Apr 12 21:34:45 [75705.496352] [<ffffffff8113f876>] ?
>>>> madvise_willneed+0x76/0x140
>>>> Apr 12 21:34:45 [75705.496395] [<ffffffff811301ce>] ?
>>>> handle_mm_fault+0x9ae/0x1650
>>>> Apr 12 21:34:45 [75705.496437] [<ffffffff81133dcb>] ? find_vma+0x5b/0x70
>>>> Apr 12 21:34:45 [75705.496476] [<ffffffff8113fc52>] ?
>>>> SyS_madvise+0x312/0x6f0
>>>> Apr 12 21:34:45 [75705.496515] [<ffffffff8148d9db>] ?
>>>> entry_SYSCALL_64_fastpath+0x16/0x6e
>>>> Apr 12 21:34:47 [75707.118049] NMI watchdog: Watchdog detected hard LOCKUP
>>>> on cpu 15
>>>> Apr 12 21:34:47
>>>> Apr 12 21:34:47 [75707.118078] Modules linked in:
>>>> Apr 12 21:34:47 ipt_REJECT
>>>> Apr 12 21:34:47 nf_reject_ipv4
>>>> Apr 12 21:34:47 iptable_mangle
>>>> Apr 12 21:34:47 tun
>>>> Apr 12 21:34:47 netconsole
>>>> Apr 12 21:34:47 configfs
>>>> Apr 12 21:34:47 xt_multiport
>>>> Apr 12 21:34:47 ip6table_filter
>>>> Apr 12 21:34:47 ip6_tables
>>>> Apr 12 21:34:47 iptable_filter
>>>> Apr 12 21:34:47 ip_tables
>>>> Apr 12 21:34:47 x_tables
>>>> Apr 12 21:34:47 bridge
>>>> Apr 12 21:34:47 stp
>>>> Apr 12 21:34:47 llc
>>>> Apr 12 21:34:47 bonding
>>>> Apr 12 21:34:47 ext4
>>>> Apr 12 21:34:47 crc16
>>>> Apr 12 21:34:47 mbcache
>>>> Apr 12 21:34:47 jbd2
>>>> Apr 12 21:34:47 raid1
>>>> Apr 12 21:34:47 raid0
>>>> Apr 12 21:34:47 raid456
>>>> Apr 12 21:34:47 async_raid6_recov
>>>> Apr 12 21:34:47 async_memcpy
>>>> Apr 12 21:34:47 async_pq
>>>> Apr 12 21:34:47 async_xor
>>>> Apr 12 21:34:47 xor
>>>> Apr 12 21:34:47 async_tx
>>>> Apr 12 21:34:47 raid6_pq
>>>> Apr 12 21:34:47 md_mod
>>>> Apr 12 21:34:47 sr_mod
>>>> Apr 12 21:34:47 cdrom
>>>> Apr 12 21:34:47 usb_storage
>>>> Apr 12 21:34:47 hid_generic
>>>> Apr 12 21:34:47 usbhid
>>>> Apr 12 21:34:47 hid
>>>> Apr 12 21:34:47 sg
>>>> Apr 12 21:34:47 sd_mod
>>>> Apr 12 21:34:47 x86_pkg_temp_thermal
>>>> Apr 12 21:34:47 coretemp
>>>> Apr 12 21:34:47 crct10dif_pclmul
>>>> Apr 12 21:34:47 crc32_pclmul
>>>> Apr 12 21:34:47 crc32c_intel
>>>> Apr 12 21:34:47 jitterentropy_rng
>>>> Apr 12 21:34:47 sha256_ssse3
>>>> Apr 12 21:34:47 sha256_generic
>>>> Apr 12 21:34:47 hmac
>>>> Apr 12 21:34:47 iTCO_wdt
>>>> Apr 12 21:34:47 iTCO_vendor_support
>>>> Apr 12 21:34:47 drbg
>>>> Apr 12 21:34:47 ansi_cprng
>>>> Apr 12 21:34:47 aesni_intel
>>>> Apr 12 21:34:47 aes_x86_64
>>>> Apr 12 21:34:47 lrw
>>>> Apr 12 21:34:47 gf128mul
>>>> Apr 12 21:34:47 glue_helper
>>>> Apr 12 21:34:47 ablk_helper
>>>> Apr 12 21:34:47 cryptd
>>>> Apr 12 21:34:47 ahci
>>>> Apr 12 21:34:47 libahci
>>>> Apr 12 21:34:47 sb_edac
>>>> Apr 12 21:34:47 libata
>>>> Apr 12 21:34:47 igb
>>>> Apr 12 21:34:47 megaraid_sas
>>>> Apr 12 21:34:47 xhci_pci
>>>> Apr 12 21:34:47 ehci_pci
>>>> Apr 12 21:34:47 i2c_algo_bit
>>>> Apr 12 21:34:47 xhci_hcd
>>>> Apr 12 21:34:47 ehci_hcd
>>>> Apr 12 21:34:47 edac_core
>>>> Apr 12 21:34:47 ptp
>>>> Apr 12 21:34:47 mei_me
>>>> Apr 12 21:34:47 lpc_ich
>>>> Apr 12 21:34:47 i2c_i801
>>>> Apr 12 21:34:47 usbcore
>>>> Apr 12 21:34:47 pps_core
>>>> Apr 12 21:34:47 mfd_core
>>>> Apr 12 21:34:47 mei
>>>> Apr 12 21:34:47 usb_common
>>>> Apr 12 21:34:47 i2c_core
>>>> Apr 12 21:34:47 ioatdma
>>>> Apr 12 21:34:47 scsi_mod
>>>> Apr 12 21:34:47 dca
>>>> Apr 12 21:34:47 ipmi_si
>>>> Apr 12 21:34:47 ipmi_msghandler
>>>> Apr 12 21:34:47 acpi_power_meter
>>>> Apr 12 21:34:47 tpm_tis
>>>> Apr 12 21:34:47 tpm
>>>> Apr 12 21:34:47 processor
>>>> Apr 12 21:34:47 button
>>>> Apr 12 21:34:47
>>>> Apr 12 21:34:47 [75707.119088] CPU: 15 PID: 31940 Comm: main Not tainted
>>>> 4.4.1 #2
>>>> Apr 12 21:34:47 [75707.119134] Hardware name: Supermicro Super
>>>> Server/X10DRi-LN4+, BIOS 2.0 12/17/2015
>>>> Apr 12 21:34:47 [75707.119196] 0000000000000000
>>>> Apr 12 21:34:47 ffffffff812abdf3
>>>> Apr 12 21:34:47 0000000000000000
>>>> Apr 12 21:34:47 ffffffff810cf5f5
>>>> Apr 12 21:34:47
>>>> Apr 12 21:34:47 [75707.119277] ffff883ff2a20000
>>>> Apr 12 21:34:47 ffffffff810fcea2
>>>> Apr 12 21:34:47 0000000000000001
>>>> Apr 12 21:34:47 ffff88407fce5e58
>>>> Apr 12 21:34:47
>>>> Apr 12 21:34:47 [75707.119360] ffff88407fceaf00
>>>> Apr 12 21:34:47 ffff88407fceb100
>>>> Apr 12 21:34:47 ffff883ff2a20000
>>>> Apr 12 21:34:47 ffffffff8101bc63
>>>> Apr 12 21:34:47
>>>> Apr 12 21:34:47 [75707.119439] Call Trace:
>>>> Apr 12 21:34:47 [75707.119471] <NMI>
>>>> Apr 12 21:34:47 [<ffffffff812abdf3>] ? dump_stack+0x40/0x5d
>>>> Apr 12 21:34:47 [75707.119527] [<ffffffff810cf5f5>] ?
>>>> watchdog_overflow_callback+0xb5/0xd0
>>>> Apr 12 21:34:47 [75707.119571] [<ffffffff810fcea2>] ?
>>>> __perf_event_overflow+0x82/0x1c0
>>>> Apr 12 21:34:47 [75707.119614] [<ffffffff8101bc63>] ?
>>>> intel_pmu_handle_irq+0x1c3/0x3e0
>>>> Apr 12 21:34:47 [75707.119657] [<ffffffff8113b5cb>] ?
>>>> vunmap_page_range+0x1bb/0x320
>>>> Apr 12 21:34:47 [75707.119703] [<ffffffff813213e0>] ?
>>>> ghes_copy_tofrom_phys+0x110/0x1d0
>>>> Apr 12 21:34:47 [75707.119758] [<ffffffff81014f53>] ?
>>>> perf_event_nmi_handler+0x23/0x40
>>>> Apr 12 21:34:47 [75707.119800] [<ffffffff81007b85>] ?
>>>> nmi_handle+0x65/0x100
>>>> Apr 12 21:34:47 [75707.119838] [<ffffffff81007d2e>] ? do_nmi+0x10e/0x360
>>>> Apr 12 21:34:47 [75707.119878] [<ffffffff8148f957>] ?
>>>> end_repeat_nmi+0x1a/0x1e
>>>> Apr 12 21:34:47 [75707.119920] [<ffffffff810862ca>] ?
>>>> queued_spin_lock_slowpath+0xea/0x150
>>>> Apr 12 21:34:47 [75707.119962] [<ffffffff810862ca>] ?
>>>> queued_spin_lock_slowpath+0xea/0x150
>>>> Apr 12 21:34:47 [75707.120002] [<ffffffff810862ca>] ?
>>>> queued_spin_lock_slowpath+0xea/0x150
>>>> Apr 12 21:34:47 [75707.120042] <<EOE>>
>>>> Apr 12 21:34:47 [<ffffffffa01b413b>] ? make_request+0x60b/0xbd0 [raid456]
>>>> Apr 12 21:34:47 [75707.120113] [<ffffffff810815c0>] ? wait_woken+0x80/0x80
>>>> Apr 12 21:34:47 [75707.120152] [<ffffffffa017632d>] ?
>>>> md_make_request+0xdd/0x220 [md_mod]
>>>> Apr 12 21:34:47 [75707.120195] [<ffffffff8128691d>] ?
>>>> generic_make_request+0xed/0x1d0
>>>> Apr 12 21:34:47 [75707.120236] [<ffffffff81286a5a>] ?
>>>> submit_bio+0x5a/0x140
>>>> Apr 12 21:34:47 [75707.120277] [<ffffffff8112afaf>] ?
>>>> workingset_refault+0x4f/0xa0
>>>> Apr 12 21:34:47 [75707.120320] [<ffffffff811a215e>] ?
>>>> mpage_bio_submit+0x1e/0x30
>>>> Apr 12 21:34:47 [75707.120359] [<ffffffff811a3076>] ?
>>>> mpage_readpages+0x106/0x130
>>>> Apr 12 21:34:47 [75707.120401] [<ffffffff8121b510>] ?
>>>> __xfs_get_blocks+0x750/0x750
>>>> Apr 12 21:34:47 [75707.120439] [<ffffffff8121b510>] ?
>>>> __xfs_get_blocks+0x750/0x750
>>>> Apr 12 21:34:47 [75707.120481] [<ffffffff8114ad45>] ?
>>>> alloc_pages_current+0x85/0x110
>>>> Apr 12 21:34:47 [75707.120523] [<ffffffff81111d25>] ?
>>>> __do_page_cache_readahead+0x165/0x1f0
>>>> Apr 12 21:34:47 [75707.120564] [<ffffffff811344f5>] ? vma_link+0x75/0xb0
>>>> Apr 12 21:34:47 [75707.120602] [<ffffffff811120c7>] ?
>>>> force_page_cache_readahead+0x77/0xe0
>>>> Apr 12 21:34:47 [75707.120644] [<ffffffff8113f876>] ?
>>>> madvise_willneed+0x76/0x140
>>>> Apr 12 21:34:47 [75707.120683] [<ffffffff811301ce>] ?
>>>> handle_mm_fault+0x9ae/0x1650
>>>> Apr 12 21:34:47 [75707.120722] [<ffffffff81133dcb>] ? find_vma+0x5b/0x70
>>>> Apr 12 21:34:47 [75707.120760] [<ffffffff8113fc52>] ?
>>>> SyS_madvise+0x312/0x6f0
>>>> Apr 12 21:34:47 [75707.120799] [<ffffffff8148d9db>] ?
>>>> entry_SYSCALL_64_fastpath+0x16/0x6e
>>>>
>>>> Once this starts, a couple of minutes goes by and the machine locks up
>>>> completely.
>>>>
>>>> I have been unable to locate the problem here, anyone that can point me in
>>>> the right direction?
>>>>
>>>> Best regards
>>>> --
>>>> 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
> Daniel> --
> Daniel> To unsubscribe from this list: send the line "unsubscribe linux-raid" in
> Daniel> the body of a message to majordomo@vger.kernel.org
> Daniel> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
^ permalink raw reply
* [PATCH v3 00/21] Support fuse mounts in user namespaces
From: Seth Forshee @ 2016-04-22 15:38 UTC (permalink / raw)
To: Eric W. Biederman, linux-bcache, dm-devel, linux-raid, linux-mtd,
linux-fsdevel, fuse-devel, cgroups, linux-security-module,
selinux
Cc: Alexander Viro, Serge Hallyn, Richard Weinberger,
Austin S Hemmelgarn, Miklos Szeredi, Pavel Tikhomirov,
linux-kernel, Seth Forshee
Hi Eric,
Sorry that it's taken a while to get this update sent out. In part
that's because of a few problems I found, which resulted in some new
patches.
I wanted to point out one problem in particular because I'm not fully
settled on the solution. It turns out that for the sysfs and cgroup
filesystems we already have use cases where a super block is mounted
from multiple user namespaces. With sysfs this is done when criu is used
to snapshot a container; it will mount sysfs in the container's network
namespace but the host's user namespace. cgroup fs uses the same super
block for all mounts of a given hierarchy, and the addition of cgroup
namespaces makes this possible from within non-init user namepsaces. So
the check in sget_userns() which forbids mounting an existing super
block in a different user namespace causes regressions, and really it's
not necessary for these filesystems since ids in the inodes aren't
subect to translation relative to s_user_ns.
I've tried several ways to fix this. The one I'm sending here is to
exempt these filesystems from this requirement, which is the simplest
solution. The down side is that I couldn't find any existing property of
these file systems to use for excluding them, so I'm using a new file
system flag. My second-best option was to change kernfs_test_super() to
return false if the existing super block is in a different user
namespace. This is also pretty simple and works fine for sysfs, but
cgroups require some updating in order to get its internal reference
counting to work out.
These patches are based on the for-testing branch of
git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/user-namespace.git
with everything rebased onto 4.6-rc4. I've also pushed everything to:
git://git.kernel.org/pub/scm/linux/kernel/git/sforshee/linux.git fuse-userns
Changes since v2:
- Add patch from Pavel Tikhomirov to fix a potential memory leak in
sget_userns().
- Add a patch to fix a bug in the fs_fully_visible() MNT_LOCK_NODEV
handling which was introduced by "userns: Simpilify MNT_NODEV
handling."
- Drop patch to make root in s_user_ns capable towards that superblock
and replace it with a patch to allow root in s_user_ns to change
ownership of inodes with invalid ids.
- Use make_k[ug]id() in fuse_fillattr() instead of copying ids from
inode.
- Remove unnecessary initialization of user_id and group_id in fuse
mount options.
- Add a comment to get_file_caps() to indicate that the duplicate
in_userns() check is intentional.
- Fix incorrect statements in commit message of "fuse: Add support for
pid namespaces"
- Added acks.
Thanks,
Seth
---
Andy Lutomirski (1):
fs: Treat foreign mounts as nosuid
Pavel Tikhomirov (1):
fs: fix a posible leak of allocated superblock
Seth Forshee (19):
fs: Remove check of s_user_ns for existing mounts in
fs_fully_visible()
fs: Allow sysfs and cgroupfs to share super blocks between user
namespaces
block_dev: Support checking inode permissions in lookup_bdev()
block_dev: Check permissions towards block device inode when mounting
selinux: Add support for unprivileged mounts from user namespaces
userns: Replace in_userns with current_in_userns
Smack: Handle labels consistently in untrusted mounts
fs: Check for invalid i_uid in may_follow_link()
cred: Reject inodes with invalid ids in set_create_file_as()
fs: Refuse uid/gid changes which don't map into s_user_ns
fs: Update posix_acl support to handle user namespace mounts
fs: Allow superblock owner to change ownership of inodes with
unmappable ids
fs: Don't remove suid for CAP_FSETID in s_user_ns
fs: Allow superblock owner to access do_remount_sb()
capabilities: Allow privileged user in s_user_ns to set security.*
xattrs
fuse: Add support for pid namespaces
fuse: Support fuse filesystems outside of init_user_ns
fuse: Restrict allow_other to the superblock's namespace or a
descendant
fuse: Allow user namespace mounts
drivers/md/bcache/super.c | 2 +-
drivers/md/dm-table.c | 2 +-
drivers/mtd/mtdsuper.c | 2 +-
fs/attr.c | 58 ++++++++++++++++++++++++++++++-----
fs/block_dev.c | 18 +++++++++--
fs/exec.c | 2 +-
fs/fuse/cuse.c | 3 +-
fs/fuse/dev.c | 26 ++++++++++++----
fs/fuse/dir.c | 16 +++++-----
fs/fuse/file.c | 22 +++++++++++---
fs/fuse/fuse_i.h | 10 +++++-
fs/fuse/inode.c | 40 +++++++++++++++---------
fs/inode.c | 3 +-
fs/kernfs/inode.c | 2 ++
fs/namei.c | 2 +-
fs/namespace.c | 20 +++++++++---
fs/posix_acl.c | 67 ++++++++++++++++++++++++++---------------
fs/proc/base.c | 2 ++
fs/proc/generic.c | 3 ++
fs/proc/proc_sysctl.c | 2 ++
fs/quota/quota.c | 2 +-
fs/super.c | 7 ++++-
fs/sysfs/mount.c | 3 +-
fs/xattr.c | 19 +++++++++---
include/linux/fs.h | 3 +-
include/linux/mount.h | 1 +
include/linux/posix_acl_xattr.h | 17 ++++++++---
include/linux/uidgid.h | 10 ++++++
include/linux/user_namespace.h | 6 ++--
kernel/cgroup.c | 4 +--
kernel/cred.c | 2 ++
kernel/user_namespace.c | 6 ++--
security/commoncap.c | 22 ++++++++++----
security/selinux/hooks.c | 25 ++++++++++++++-
security/smack/smack_lsm.c | 29 ++++++++++++------
35 files changed, 339 insertions(+), 119 deletions(-)
^ permalink raw reply
* [PATCH v3 01/21] fs: fix a posible leak of allocated superblock
From: Seth Forshee @ 2016-04-22 15:38 UTC (permalink / raw)
To: Eric W. Biederman, Alexander Viro
Cc: Serge Hallyn, Richard Weinberger, Austin S Hemmelgarn,
Miklos Szeredi, Pavel Tikhomirov, linux-kernel, linux-bcache,
dm-devel, linux-raid, linux-mtd, linux-fsdevel, fuse-devel,
linux-security-module, selinux, cgroups, Seth Forshee
In-Reply-To: <1461339521-123191-1-git-send-email-seth.forshee@canonical.com>
From: Pavel Tikhomirov <ptikhomirov@virtuozzo.com>
We probably need to fix superblock leak in patch (v4 "fs: Add user
namesapace member to struct super_block"):
Imagine posible code path in sget_userns: we iterate through
type->fs_supers and do not find suitable sb, we drop sb_lock to
allocate s and go to retry. After we dropped sb_lock some other
task from different userns takes sb_lock, it is already in retry
stage and has s allocated, so it puts its s in type->fs_supers
list. So in retry we will find these sb in list and check it has
a different userns, and finally we will return without freeing s.
Signed-off-by: Pavel Tikhomirov <ptikhomirov@virtuozzo.com>
Acked-by: Seth Forshee <seth.forshee@canonical.com>
---
fs/super.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/fs/super.c b/fs/super.c
index 829841e0ae7e..092a7828442e 100644
--- a/fs/super.c
+++ b/fs/super.c
@@ -474,6 +474,10 @@ retry:
continue;
if (user_ns != old->s_user_ns) {
spin_unlock(&sb_lock);
+ if (s) {
+ up_write(&s->s_umount);
+ destroy_super(s);
+ }
return ERR_PTR(-EBUSY);
}
if (!grab_super(old))
--
1.9.1
^ permalink raw reply related
* [PATCH v3 02/21] fs: Remove check of s_user_ns for existing mounts in fs_fully_visible()
From: Seth Forshee @ 2016-04-22 15:38 UTC (permalink / raw)
To: Eric W. Biederman, Alexander Viro
Cc: linux-bcache-u79uwXL29TY76Z2rM5mHXA, Serge Hallyn, Seth Forshee,
dm-devel-H+wXaHxf7aLQT0dZR+AlfA, Miklos Szeredi,
linux-security-module-u79uwXL29TY76Z2rM5mHXA,
linux-kernel-u79uwXL29TY76Z2rM5mHXA,
linux-raid-u79uwXL29TY76Z2rM5mHXA,
fuse-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f, Austin S Hemmelgarn,
linux-mtd-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
selinux-+05T5uksL2qpZYMLLGbcSA,
linux-fsdevel-u79uwXL29TY76Z2rM5mHXA,
cgroups-u79uwXL29TY76Z2rM5mHXA, Pavel Tikhomirov
In-Reply-To: <1461339521-123191-1-git-send-email-seth.forshee-Z7WLFzj8eWMS+FvcfC7Uqw@public.gmane.org>
fs_fully_visible() ignores MNT_LOCK_NODEV when FS_USERS_DEV_MOUNT
is not set for the filesystem, but there is a bug in the logic
that may cause mounting to fail. It is doing this only when the
existing mount is not in init_user_ns but should check the new
mount instead. But the new mount is always in a non-init
namespace when fs_fully_visible() is called, so that condition
can simply be removed.
Signed-off-by: Seth Forshee <seth.forshee-Z7WLFzj8eWMS+FvcfC7Uqw@public.gmane.org>
---
fs/namespace.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/fs/namespace.c b/fs/namespace.c
index f20c82f91ecb..c133318bec35 100644
--- a/fs/namespace.c
+++ b/fs/namespace.c
@@ -3234,8 +3234,7 @@ static bool fs_fully_visible(struct file_system_type *type, int *new_mnt_flags)
mnt_flags = mnt->mnt.mnt_flags;
if (mnt->mnt.mnt_sb->s_iflags & SB_I_NOEXEC)
mnt_flags &= ~(MNT_LOCK_NOSUID | MNT_LOCK_NOEXEC);
- if (mnt->mnt.mnt_sb->s_user_ns != &init_user_ns &&
- !(mnt->mnt.mnt_sb->s_type->fs_flags & FS_USERNS_DEV_MOUNT))
+ if (!(mnt->mnt.mnt_sb->s_type->fs_flags & FS_USERNS_DEV_MOUNT))
mnt_flags &= ~(MNT_LOCK_NODEV);
/* Verify the mount flags are equal to or more permissive
--
1.9.1
------------------------------------------------------------------------------
Find and fix application performance issues faster with Applications Manager
Applications Manager provides deep performance insights into multiple tiers of
your business applications. It resolves application problems quickly and
reduces your MTTR. Get your free trial!
https://ad.doubleclick.net/ddm/clk/302982198;130105516;z
--
fuse-devel mailing list
To unsubscribe or subscribe, visit https://lists.sourceforge.net/lists/listinfo/fuse-devel
^ permalink raw reply related
* [PATCH v3 03/21] fs: Allow sysfs and cgroupfs to share super blocks between user namespaces
From: Seth Forshee @ 2016-04-22 15:38 UTC (permalink / raw)
To: Eric W. Biederman, Alexander Viro, Greg Kroah-Hartman,
Jeff Layton, J. Bruce Fields, Tejun Heo, Li Zefan,
Johannes Weiner
Cc: linux-bcache-u79uwXL29TY76Z2rM5mHXA, Serge Hallyn, Seth Forshee,
dm-devel-H+wXaHxf7aLQT0dZR+AlfA, Miklos Szeredi,
linux-security-module-u79uwXL29TY76Z2rM5mHXA,
linux-kernel-u79uwXL29TY76Z2rM5mHXA,
linux-raid-u79uwXL29TY76Z2rM5mHXA,
fuse-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f, Austin S Hemmelgarn,
linux-mtd-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
selinux-+05T5uksL2qpZYMLLGbcSA,
linux-fsdevel-u79uwXL29TY76Z2rM5mHXA,
cgroups-u79uwXL29TY76Z2rM5mHXA, Pavel Tikhomirov
In-Reply-To: <1461339521-123191-1-git-send-email-seth.forshee-Z7WLFzj8eWMS+FvcfC7Uqw@public.gmane.org>
Both of these filesystems already have use cases for mounting the
same super block from multiple user namespaces. For sysfs this
happens when using criu for snapshotting a container, where sysfs
is mounted in the containers network ns but the hosts user ns.
The cgroup filesystem shares the same super block for all mounts
of the same hierarchy regardless of the namespace.
As a result, the restriction on mounting a super block from a
single user namespace creates regressions for existing uses of
these filesystems. For these specific filesystems this
restriction isn't really necessary since the backing store is
objects in kernel memory and thus the ids assigned from inodes
is not subject to translation relative to s_user_ns.
Add a new filesystem flag, FS_USERNS_SHARE_SB, which when set
causes sget_userns() to skip the check of s_user_ns. Set this
flag for the sysfs and cgroup filesystems to fix the
regressions.
Signed-off-by: Seth Forshee <seth.forshee-Z7WLFzj8eWMS+FvcfC7Uqw@public.gmane.org>
---
fs/super.c | 3 ++-
fs/sysfs/mount.c | 3 ++-
include/linux/fs.h | 1 +
kernel/cgroup.c | 4 ++--
4 files changed, 7 insertions(+), 4 deletions(-)
diff --git a/fs/super.c b/fs/super.c
index 092a7828442e..ead156b44bf8 100644
--- a/fs/super.c
+++ b/fs/super.c
@@ -472,7 +472,8 @@ retry:
hlist_for_each_entry(old, &type->fs_supers, s_instances) {
if (!test(old, data))
continue;
- if (user_ns != old->s_user_ns) {
+ if (!(type->fs_flags & FS_USERNS_SHARE_SB) &&
+ user_ns != old->s_user_ns) {
spin_unlock(&sb_lock);
if (s) {
up_write(&s->s_umount);
diff --git a/fs/sysfs/mount.c b/fs/sysfs/mount.c
index f3db82071cfb..9555accd4322 100644
--- a/fs/sysfs/mount.c
+++ b/fs/sysfs/mount.c
@@ -59,7 +59,8 @@ static struct file_system_type sysfs_fs_type = {
.name = "sysfs",
.mount = sysfs_mount,
.kill_sb = sysfs_kill_sb,
- .fs_flags = FS_USERNS_VISIBLE | FS_USERNS_MOUNT,
+ .fs_flags = FS_USERNS_VISIBLE | FS_USERNS_MOUNT |
+ FS_USERNS_SHARE_SB,
};
int __init sysfs_init(void)
diff --git a/include/linux/fs.h b/include/linux/fs.h
index be0f8023e28c..66a639ec1bc4 100644
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
@@ -1988,6 +1988,7 @@ struct file_system_type {
#define FS_USERNS_MOUNT 8 /* Can be mounted by userns root */
#define FS_USERNS_DEV_MOUNT 16 /* A userns mount does not imply MNT_NODEV */
#define FS_USERNS_VISIBLE 32 /* FS must already be visible */
+#define FS_USERNS_SHARE_SB 64 /* Allow sharing sb between userns-es */
#define FS_RENAME_DOES_D_MOVE 32768 /* FS will handle d_move() during rename() internally. */
struct dentry *(*mount) (struct file_system_type *, int,
const char *, void *);
diff --git a/kernel/cgroup.c b/kernel/cgroup.c
index 671dc05c0b0f..9c9aa27e531a 100644
--- a/kernel/cgroup.c
+++ b/kernel/cgroup.c
@@ -2247,14 +2247,14 @@ static struct file_system_type cgroup_fs_type = {
.name = "cgroup",
.mount = cgroup_mount,
.kill_sb = cgroup_kill_sb,
- .fs_flags = FS_USERNS_MOUNT,
+ .fs_flags = FS_USERNS_MOUNT | FS_USERNS_SHARE_SB,
};
static struct file_system_type cgroup2_fs_type = {
.name = "cgroup2",
.mount = cgroup_mount,
.kill_sb = cgroup_kill_sb,
- .fs_flags = FS_USERNS_MOUNT,
+ .fs_flags = FS_USERNS_MOUNT | FS_USERNS_SHARE_SB,
};
static char *cgroup_path_ns_locked(struct cgroup *cgrp, char *buf, size_t buflen,
--
1.9.1
------------------------------------------------------------------------------
Find and fix application performance issues faster with Applications Manager
Applications Manager provides deep performance insights into multiple tiers of
your business applications. It resolves application problems quickly and
reduces your MTTR. Get your free trial!
https://ad.doubleclick.net/ddm/clk/302982198;130105516;z
--
fuse-devel mailing list
To unsubscribe or subscribe, visit https://lists.sourceforge.net/lists/listinfo/fuse-devel
^ permalink raw reply related
* [PATCH v3 04/21] block_dev: Support checking inode permissions in lookup_bdev()
From: Seth Forshee @ 2016-04-22 15:38 UTC (permalink / raw)
To: Eric W. Biederman, Kent Overstreet, Alasdair Kergon, Mike Snitzer,
dm-devel, Shaohua Li, David Woodhouse, Brian Norris,
Alexander Viro, Jan Kara, Jeff Layton, J. Bruce Fields
Cc: Serge Hallyn, Richard Weinberger, Austin S Hemmelgarn,
Miklos Szeredi, Pavel Tikhomirov, linux-kernel, linux-bcache,
linux-raid, linux-mtd, linux-fsdevel, fuse-devel,
linux-security-module, selinux, cgroups, Seth Forshee
In-Reply-To: <1461339521-123191-1-git-send-email-seth.forshee@canonical.com>
When looking up a block device by path no permission check is
done to verify that the user has access to the block device inode
at the specified path. In some cases it may be necessary to
check permissions towards the inode, such as allowing
unprivileged users to mount block devices in user namespaces.
Add an argument to lookup_bdev() to optionally perform this
permission check. A value of 0 skips the permission check and
behaves the same as before. A non-zero value specifies the mask
of access rights required towards the inode at the specified
path. The check is always skipped if the user has CAP_SYS_ADMIN.
All callers of lookup_bdev() currently pass a mask of 0, so this
patch results in no functional change. Subsequent patches will
add permission checks where appropriate.
Signed-off-by: Seth Forshee <seth.forshee@canonical.com>
Acked-by: Serge Hallyn <serge.hallyn@canonical.com>
---
drivers/md/bcache/super.c | 2 +-
drivers/md/dm-table.c | 2 +-
drivers/mtd/mtdsuper.c | 2 +-
fs/block_dev.c | 13 ++++++++++---
fs/quota/quota.c | 2 +-
include/linux/fs.h | 2 +-
6 files changed, 15 insertions(+), 8 deletions(-)
diff --git a/drivers/md/bcache/super.c b/drivers/md/bcache/super.c
index a296425a7270..e169739a0253 100644
--- a/drivers/md/bcache/super.c
+++ b/drivers/md/bcache/super.c
@@ -1950,7 +1950,7 @@ static ssize_t register_bcache(struct kobject *k, struct kobj_attribute *attr,
sb);
if (IS_ERR(bdev)) {
if (bdev == ERR_PTR(-EBUSY)) {
- bdev = lookup_bdev(strim(path));
+ bdev = lookup_bdev(strim(path), 0);
mutex_lock(&bch_register_lock);
if (!IS_ERR(bdev) && bch_is_open(bdev))
err = "device already registered";
diff --git a/drivers/md/dm-table.c b/drivers/md/dm-table.c
index f9e8f0bef332..13f568d527b5 100644
--- a/drivers/md/dm-table.c
+++ b/drivers/md/dm-table.c
@@ -372,7 +372,7 @@ dev_t dm_get_dev_t(const char *path)
dev_t uninitialized_var(dev);
struct block_device *bdev;
- bdev = lookup_bdev(path);
+ bdev = lookup_bdev(path, 0);
if (IS_ERR(bdev))
dev = name_to_dev_t(path);
else {
diff --git a/drivers/mtd/mtdsuper.c b/drivers/mtd/mtdsuper.c
index 20c02a3b7417..b5b60e1af31c 100644
--- a/drivers/mtd/mtdsuper.c
+++ b/drivers/mtd/mtdsuper.c
@@ -176,7 +176,7 @@ struct dentry *mount_mtd(struct file_system_type *fs_type, int flags,
/* try the old way - the hack where we allowed users to mount
* /dev/mtdblock$(n) but didn't actually _use_ the blockdev
*/
- bdev = lookup_bdev(dev_name);
+ bdev = lookup_bdev(dev_name, 0);
if (IS_ERR(bdev)) {
ret = PTR_ERR(bdev);
pr_debug("MTDSB: lookup_bdev() returned %d\n", ret);
diff --git a/fs/block_dev.c b/fs/block_dev.c
index 3e84d62d0a25..e9b937845bdb 100644
--- a/fs/block_dev.c
+++ b/fs/block_dev.c
@@ -1431,7 +1431,7 @@ struct block_device *blkdev_get_by_path(const char *path, fmode_t mode,
struct block_device *bdev;
int err;
- bdev = lookup_bdev(path);
+ bdev = lookup_bdev(path, 0);
if (IS_ERR(bdev))
return bdev;
@@ -1821,12 +1821,14 @@ EXPORT_SYMBOL(ioctl_by_bdev);
/**
* lookup_bdev - lookup a struct block_device by name
* @pathname: special file representing the block device
+ * @mask: rights to check for (%MAY_READ, %MAY_WRITE, %MAY_EXEC)
*
* Get a reference to the blockdevice at @pathname in the current
* namespace if possible and return it. Return ERR_PTR(error)
- * otherwise.
+ * otherwise. If @mask is non-zero, check for access rights to the
+ * inode at @pathname.
*/
-struct block_device *lookup_bdev(const char *pathname)
+struct block_device *lookup_bdev(const char *pathname, int mask)
{
struct block_device *bdev;
struct inode *inode;
@@ -1841,6 +1843,11 @@ struct block_device *lookup_bdev(const char *pathname)
return ERR_PTR(error);
inode = d_backing_inode(path.dentry);
+ if (mask != 0 && !capable(CAP_SYS_ADMIN)) {
+ error = __inode_permission(inode, mask);
+ if (error)
+ goto fail;
+ }
error = -ENOTBLK;
if (!S_ISBLK(inode->i_mode))
goto fail;
diff --git a/fs/quota/quota.c b/fs/quota/quota.c
index 0f10ee9892ce..59223384b22e 100644
--- a/fs/quota/quota.c
+++ b/fs/quota/quota.c
@@ -799,7 +799,7 @@ static struct super_block *quotactl_block(const char __user *special, int cmd)
if (IS_ERR(tmp))
return ERR_CAST(tmp);
- bdev = lookup_bdev(tmp->name);
+ bdev = lookup_bdev(tmp->name, 0);
putname(tmp);
if (IS_ERR(bdev))
return ERR_CAST(bdev);
diff --git a/include/linux/fs.h b/include/linux/fs.h
index 66a639ec1bc4..173b8adc6131 100644
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
@@ -2438,7 +2438,7 @@ static inline void unregister_chrdev(unsigned int major, const char *name)
#define BLKDEV_MAJOR_HASH_SIZE 255
extern const char *__bdevname(dev_t, char *buffer);
extern const char *bdevname(struct block_device *bdev, char *buffer);
-extern struct block_device *lookup_bdev(const char *);
+extern struct block_device *lookup_bdev(const char *, int mask);
extern void blkdev_show(struct seq_file *,off_t);
#else
--
1.9.1
^ permalink raw reply related
* [PATCH v3 05/21] block_dev: Check permissions towards block device inode when mounting
From: Seth Forshee @ 2016-04-22 15:38 UTC (permalink / raw)
To: Eric W. Biederman, Alexander Viro
Cc: linux-bcache-u79uwXL29TY76Z2rM5mHXA, Serge Hallyn, Seth Forshee,
dm-devel-H+wXaHxf7aLQT0dZR+AlfA, Miklos Szeredi,
linux-security-module-u79uwXL29TY76Z2rM5mHXA,
linux-kernel-u79uwXL29TY76Z2rM5mHXA,
linux-raid-u79uwXL29TY76Z2rM5mHXA,
fuse-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f, Austin S Hemmelgarn,
linux-mtd-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
selinux-+05T5uksL2qpZYMLLGbcSA,
linux-fsdevel-u79uwXL29TY76Z2rM5mHXA,
cgroups-u79uwXL29TY76Z2rM5mHXA, Pavel Tikhomirov
In-Reply-To: <1461339521-123191-1-git-send-email-seth.forshee-Z7WLFzj8eWMS+FvcfC7Uqw@public.gmane.org>
Unprivileged users should not be able to mount block devices when
they lack sufficient privileges towards the block device inode.
Update blkdev_get_by_path() to validate that the user has the
required access to the inode at the specified path. The check
will be skipped for CAP_SYS_ADMIN, so privileged mounts will
continue working as before.
Signed-off-by: Seth Forshee <seth.forshee-Z7WLFzj8eWMS+FvcfC7Uqw@public.gmane.org>
Acked-by: Serge Hallyn <serge.hallyn-Z7WLFzj8eWMS+FvcfC7Uqw@public.gmane.org>
---
fs/block_dev.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/fs/block_dev.c b/fs/block_dev.c
index e9b937845bdb..2007040afb7b 100644
--- a/fs/block_dev.c
+++ b/fs/block_dev.c
@@ -1429,9 +1429,14 @@ struct block_device *blkdev_get_by_path(const char *path, fmode_t mode,
void *holder)
{
struct block_device *bdev;
+ int perm = 0;
int err;
- bdev = lookup_bdev(path, 0);
+ if (mode & FMODE_READ)
+ perm |= MAY_READ;
+ if (mode & FMODE_WRITE)
+ perm |= MAY_WRITE;
+ bdev = lookup_bdev(path, perm);
if (IS_ERR(bdev))
return bdev;
--
1.9.1
------------------------------------------------------------------------------
Find and fix application performance issues faster with Applications Manager
Applications Manager provides deep performance insights into multiple tiers of
your business applications. It resolves application problems quickly and
reduces your MTTR. Get your free trial!
https://ad.doubleclick.net/ddm/clk/302982198;130105516;z
--
fuse-devel mailing list
To unsubscribe or subscribe, visit https://lists.sourceforge.net/lists/listinfo/fuse-devel
^ permalink raw reply related
* [PATCH v3 06/21] fs: Treat foreign mounts as nosuid
From: Seth Forshee @ 2016-04-22 15:38 UTC (permalink / raw)
To: Eric W. Biederman, Alexander Viro, Serge Hallyn, James Morris,
Serge E. Hallyn, Paul Moore, Stephen Smalley, Eric Paris
Cc: Miklos Szeredi, Seth Forshee, dm-devel-H+wXaHxf7aLQT0dZR+AlfA,
linux-security-module-u79uwXL29TY76Z2rM5mHXA,
linux-bcache-u79uwXL29TY76Z2rM5mHXA,
linux-kernel-u79uwXL29TY76Z2rM5mHXA,
linux-raid-u79uwXL29TY76Z2rM5mHXA,
fuse-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f, Austin S Hemmelgarn,
linux-mtd-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
selinux-+05T5uksL2qpZYMLLGbcSA,
linux-fsdevel-u79uwXL29TY76Z2rM5mHXA,
cgroups-u79uwXL29TY76Z2rM5mHXA, Andy Lutomirski, Pavel Tikhomirov
In-Reply-To: <1461339521-123191-1-git-send-email-seth.forshee-Z7WLFzj8eWMS+FvcfC7Uqw@public.gmane.org>
From: Andy Lutomirski <luto-kltTT9wpgjJwATOyAt5JVQ@public.gmane.org>
If a process gets access to a mount from a different user
namespace, that process should not be able to take advantage of
setuid files or selinux entrypoints from that filesystem. Prevent
this by treating mounts from other mount namespaces and those not
owned by current_user_ns() or an ancestor as nosuid.
This will make it safer to allow more complex filesystems to be
mounted in non-root user namespaces.
This does not remove the need for MNT_LOCK_NOSUID. The setuid,
setgid, and file capability bits can no longer be abused if code in
a user namespace were to clear nosuid on an untrusted filesystem,
but this patch, by itself, is insufficient to protect the system
from abuse of files that, when execed, would increase MAC privilege.
As a more concrete explanation, any task that can manipulate a
vfsmount associated with a given user namespace already has
capabilities in that namespace and all of its descendents. If they
can cause a malicious setuid, setgid, or file-caps executable to
appear in that mount, then that executable will only allow them to
elevate privileges in exactly the set of namespaces in which they
are already privileges.
On the other hand, if they can cause a malicious executable to
appear with a dangerous MAC label, running it could change the
caller's security context in a way that should not have been
possible, even inside the namespace in which the task is confined.
As a hardening measure, this would have made CVE-2014-5207 much
more difficult to exploit.
Signed-off-by: Andy Lutomirski <luto-kltTT9wpgjJwATOyAt5JVQ@public.gmane.org>
Signed-off-by: Seth Forshee <seth.forshee-Z7WLFzj8eWMS+FvcfC7Uqw@public.gmane.org>
Acked-by: James Morris <james.l.morris-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org>
Acked-by: Serge Hallyn <serge.hallyn-Z7WLFzj8eWMS+FvcfC7Uqw@public.gmane.org>
---
fs/exec.c | 2 +-
fs/namespace.c | 13 +++++++++++++
include/linux/mount.h | 1 +
security/commoncap.c | 8 +++++++-
security/selinux/hooks.c | 2 +-
5 files changed, 23 insertions(+), 3 deletions(-)
diff --git a/fs/exec.c b/fs/exec.c
index c4010b8207a1..706088dd0cb1 100644
--- a/fs/exec.c
+++ b/fs/exec.c
@@ -1391,7 +1391,7 @@ static void bprm_fill_uid(struct linux_binprm *bprm)
bprm->cred->euid = current_euid();
bprm->cred->egid = current_egid();
- if (bprm->file->f_path.mnt->mnt_flags & MNT_NOSUID)
+ if (!mnt_may_suid(bprm->file->f_path.mnt))
return;
if (task_no_new_privs(current))
diff --git a/fs/namespace.c b/fs/namespace.c
index c133318bec35..6e9db4c166b4 100644
--- a/fs/namespace.c
+++ b/fs/namespace.c
@@ -3284,6 +3284,19 @@ found:
return visible;
}
+bool mnt_may_suid(struct vfsmount *mnt)
+{
+ /*
+ * Foreign mounts (accessed via fchdir or through /proc
+ * symlinks) are always treated as if they are nosuid. This
+ * prevents namespaces from trusting potentially unsafe
+ * suid/sgid bits, file caps, or security labels that originate
+ * in other namespaces.
+ */
+ return !(mnt->mnt_flags & MNT_NOSUID) && check_mnt(real_mount(mnt)) &&
+ in_userns(current_user_ns(), mnt->mnt_sb->s_user_ns);
+}
+
static struct ns_common *mntns_get(struct task_struct *task)
{
struct ns_common *ns = NULL;
diff --git a/include/linux/mount.h b/include/linux/mount.h
index f822c3c11377..54a594d49733 100644
--- a/include/linux/mount.h
+++ b/include/linux/mount.h
@@ -81,6 +81,7 @@ extern void mntput(struct vfsmount *mnt);
extern struct vfsmount *mntget(struct vfsmount *mnt);
extern struct vfsmount *mnt_clone_internal(struct path *path);
extern int __mnt_is_readonly(struct vfsmount *mnt);
+extern bool mnt_may_suid(struct vfsmount *mnt);
struct path;
extern struct vfsmount *clone_private_mount(struct path *path);
diff --git a/security/commoncap.c b/security/commoncap.c
index 8912ef117faa..a306c5d90709 100644
--- a/security/commoncap.c
+++ b/security/commoncap.c
@@ -453,8 +453,14 @@ static int get_file_caps(struct linux_binprm *bprm, bool *effective, bool *has_c
if (!file_caps_enabled)
return 0;
- if (bprm->file->f_path.mnt->mnt_flags & MNT_NOSUID)
+ if (!mnt_may_suid(bprm->file->f_path.mnt))
return 0;
+
+ /*
+ * This check is redundant with mnt_may_suid() but is kept to make
+ * explicit that capability bits are limited to s_user_ns and its
+ * descendants.
+ */
if (!in_userns(current_user_ns(), bprm->file->f_path.mnt->mnt_sb->s_user_ns))
return 0;
diff --git a/security/selinux/hooks.c b/security/selinux/hooks.c
index 912deee3f01e..1350167635cb 100644
--- a/security/selinux/hooks.c
+++ b/security/selinux/hooks.c
@@ -2234,7 +2234,7 @@ static int check_nnp_nosuid(const struct linux_binprm *bprm,
const struct task_security_struct *new_tsec)
{
int nnp = (bprm->unsafe & LSM_UNSAFE_NO_NEW_PRIVS);
- int nosuid = (bprm->file->f_path.mnt->mnt_flags & MNT_NOSUID);
+ int nosuid = !mnt_may_suid(bprm->file->f_path.mnt);
int rc;
if (!nnp && !nosuid)
--
1.9.1
------------------------------------------------------------------------------
Find and fix application performance issues faster with Applications Manager
Applications Manager provides deep performance insights into multiple tiers of
your business applications. It resolves application problems quickly and
reduces your MTTR. Get your free trial!
https://ad.doubleclick.net/ddm/clk/302982198;130105516;z
--
fuse-devel mailing list
To unsubscribe or subscribe, visit https://lists.sourceforge.net/lists/listinfo/fuse-devel
^ permalink raw reply related
* [PATCH v3 07/21] selinux: Add support for unprivileged mounts from user namespaces
From: Seth Forshee @ 2016-04-22 15:38 UTC (permalink / raw)
To: Eric W. Biederman, Paul Moore, Stephen Smalley, Eric Paris
Cc: linux-bcache-u79uwXL29TY76Z2rM5mHXA, Serge Hallyn, Seth Forshee,
James Morris, dm-devel-H+wXaHxf7aLQT0dZR+AlfA, Miklos Szeredi,
linux-security-module-u79uwXL29TY76Z2rM5mHXA,
linux-kernel-u79uwXL29TY76Z2rM5mHXA,
linux-raid-u79uwXL29TY76Z2rM5mHXA,
fuse-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f, Austin S Hemmelgarn,
linux-mtd-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, Alexander Viro,
selinux-+05T5uksL2qpZYMLLGbcSA,
linux-fsdevel-u79uwXL29TY76Z2rM5mHXA,
cgroups-u79uwXL29TY76Z2rM5mHXA, Pavel Tikhomirov, Serge E. Hallyn
In-Reply-To: <1461339521-123191-1-git-send-email-seth.forshee-Z7WLFzj8eWMS+FvcfC7Uqw@public.gmane.org>
Security labels from unprivileged mounts in user namespaces must
be ignored. Force superblocks from user namespaces whose labeling
behavior is to use xattrs to use mountpoint labeling instead.
For the mountpoint label, default to converting the current task
context into a form suitable for file objects, but also allow the
policy writer to specify a different label through policy
transition rules.
Pieced together from code snippets provided by Stephen Smalley.
Signed-off-by: Seth Forshee <seth.forshee-Z7WLFzj8eWMS+FvcfC7Uqw@public.gmane.org>
Acked-by: Stephen Smalley <sds-+05T5uksL2qpZYMLLGbcSA@public.gmane.org>
Acked-by: James Morris <james.l.morris-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org>
---
security/selinux/hooks.c | 23 +++++++++++++++++++++++
1 file changed, 23 insertions(+)
diff --git a/security/selinux/hooks.c b/security/selinux/hooks.c
index 1350167635cb..33beed3ac589 100644
--- a/security/selinux/hooks.c
+++ b/security/selinux/hooks.c
@@ -820,6 +820,28 @@ static int selinux_set_mnt_opts(struct super_block *sb,
goto out;
}
}
+
+ /*
+ * If this is a user namespace mount, no contexts are allowed
+ * on the command line and security labels must be ignored.
+ */
+ if (sb->s_user_ns != &init_user_ns) {
+ if (context_sid || fscontext_sid || rootcontext_sid ||
+ defcontext_sid) {
+ rc = -EACCES;
+ goto out;
+ }
+ if (sbsec->behavior == SECURITY_FS_USE_XATTR) {
+ sbsec->behavior = SECURITY_FS_USE_MNTPOINT;
+ rc = security_transition_sid(current_sid(), current_sid(),
+ SECCLASS_FILE, NULL,
+ &sbsec->mntpoint_sid);
+ if (rc)
+ goto out;
+ }
+ goto out_set_opts;
+ }
+
/* sets the context of the superblock for the fs being mounted. */
if (fscontext_sid) {
rc = may_context_mount_sb_relabel(fscontext_sid, sbsec, cred);
@@ -888,6 +910,7 @@ static int selinux_set_mnt_opts(struct super_block *sb,
sbsec->def_sid = defcontext_sid;
}
+out_set_opts:
rc = sb_finish_set_opts(sb);
out:
mutex_unlock(&sbsec->lock);
--
1.9.1
------------------------------------------------------------------------------
Find and fix application performance issues faster with Applications Manager
Applications Manager provides deep performance insights into multiple tiers of
your business applications. It resolves application problems quickly and
reduces your MTTR. Get your free trial!
https://ad.doubleclick.net/ddm/clk/302982198;130105516;z
--
fuse-devel mailing list
To unsubscribe or subscribe, visit https://lists.sourceforge.net/lists/listinfo/fuse-devel
^ permalink raw reply related
* [PATCH v3 08/21] userns: Replace in_userns with current_in_userns
From: Seth Forshee @ 2016-04-22 15:38 UTC (permalink / raw)
To: Eric W. Biederman, Alexander Viro, Serge Hallyn, James Morris,
Serge E. Hallyn
Cc: Miklos Szeredi, Seth Forshee, dm-devel-H+wXaHxf7aLQT0dZR+AlfA,
linux-security-module-u79uwXL29TY76Z2rM5mHXA,
linux-bcache-u79uwXL29TY76Z2rM5mHXA,
linux-kernel-u79uwXL29TY76Z2rM5mHXA,
linux-raid-u79uwXL29TY76Z2rM5mHXA,
fuse-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f, Austin S Hemmelgarn,
linux-mtd-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
selinux-+05T5uksL2qpZYMLLGbcSA,
linux-fsdevel-u79uwXL29TY76Z2rM5mHXA,
cgroups-u79uwXL29TY76Z2rM5mHXA, Pavel Tikhomirov
In-Reply-To: <1461339521-123191-1-git-send-email-seth.forshee-Z7WLFzj8eWMS+FvcfC7Uqw@public.gmane.org>
All current callers of in_userns pass current_user_ns as the
first argument. Simplify by replacing in_userns with
current_in_userns which checks whether current_user_ns is in the
namespace supplied as an argument.
Signed-off-by: Seth Forshee <seth.forshee-Z7WLFzj8eWMS+FvcfC7Uqw@public.gmane.org>
Acked-by: James Morris <james.l.morris-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org>
Acked-by: Serge Hallyn <serge.hallyn-Z7WLFzj8eWMS+FvcfC7Uqw@public.gmane.org>
---
fs/namespace.c | 2 +-
include/linux/user_namespace.h | 6 ++----
kernel/user_namespace.c | 6 +++---
security/commoncap.c | 2 +-
4 files changed, 7 insertions(+), 9 deletions(-)
diff --git a/fs/namespace.c b/fs/namespace.c
index 6e9db4c166b4..0ad8e4a4f50b 100644
--- a/fs/namespace.c
+++ b/fs/namespace.c
@@ -3294,7 +3294,7 @@ bool mnt_may_suid(struct vfsmount *mnt)
* in other namespaces.
*/
return !(mnt->mnt_flags & MNT_NOSUID) && check_mnt(real_mount(mnt)) &&
- in_userns(current_user_ns(), mnt->mnt_sb->s_user_ns);
+ current_in_userns(mnt->mnt_sb->s_user_ns);
}
static struct ns_common *mntns_get(struct task_struct *task)
diff --git a/include/linux/user_namespace.h b/include/linux/user_namespace.h
index a43faa727124..9217169c64cb 100644
--- a/include/linux/user_namespace.h
+++ b/include/linux/user_namespace.h
@@ -72,8 +72,7 @@ extern ssize_t proc_projid_map_write(struct file *, const char __user *, size_t,
extern ssize_t proc_setgroups_write(struct file *, const char __user *, size_t, loff_t *);
extern int proc_setgroups_show(struct seq_file *m, void *v);
extern bool userns_may_setgroups(const struct user_namespace *ns);
-extern bool in_userns(const struct user_namespace *ns,
- const struct user_namespace *target_ns);
+extern bool current_in_userns(const struct user_namespace *target_ns);
#else
static inline struct user_namespace *get_user_ns(struct user_namespace *ns)
@@ -103,8 +102,7 @@ static inline bool userns_may_setgroups(const struct user_namespace *ns)
return true;
}
-static inline bool in_userns(const struct user_namespace *ns,
- const struct user_namespace *target_ns)
+static inline bool current_in_userns(const struct user_namespace *target_ns)
{
return true;
}
diff --git a/kernel/user_namespace.c b/kernel/user_namespace.c
index dee3be5445da..68f594212759 100644
--- a/kernel/user_namespace.c
+++ b/kernel/user_namespace.c
@@ -942,10 +942,10 @@ bool userns_may_setgroups(const struct user_namespace *ns)
* Returns true if @ns is the same namespace as or a descendant of
* @target_ns.
*/
-bool in_userns(const struct user_namespace *ns,
- const struct user_namespace *target_ns)
+bool current_in_userns(const struct user_namespace *target_ns)
{
- for (; ns; ns = ns->parent) {
+ struct user_namespace *ns;
+ for (ns = current_user_ns(); ns; ns = ns->parent) {
if (ns == target_ns)
return true;
}
diff --git a/security/commoncap.c b/security/commoncap.c
index a306c5d90709..e657227d221e 100644
--- a/security/commoncap.c
+++ b/security/commoncap.c
@@ -461,7 +461,7 @@ static int get_file_caps(struct linux_binprm *bprm, bool *effective, bool *has_c
* explicit that capability bits are limited to s_user_ns and its
* descendants.
*/
- if (!in_userns(current_user_ns(), bprm->file->f_path.mnt->mnt_sb->s_user_ns))
+ if (!current_in_userns(bprm->file->f_path.mnt->mnt_sb->s_user_ns))
return 0;
rc = get_vfs_caps_from_disk(bprm->file->f_path.dentry, &vcaps);
--
1.9.1
------------------------------------------------------------------------------
Find and fix application performance issues faster with Applications Manager
Applications Manager provides deep performance insights into multiple tiers of
your business applications. It resolves application problems quickly and
reduces your MTTR. Get your free trial!
https://ad.doubleclick.net/ddm/clk/302982198;130105516;z
--
fuse-devel mailing list
To unsubscribe or subscribe, visit https://lists.sourceforge.net/lists/listinfo/fuse-devel
^ permalink raw reply related
* [PATCH v3 09/21] Smack: Handle labels consistently in untrusted mounts
From: Seth Forshee @ 2016-04-22 15:38 UTC (permalink / raw)
To: Eric W. Biederman, Casey Schaufler
Cc: linux-bcache-u79uwXL29TY76Z2rM5mHXA, Serge Hallyn, Seth Forshee,
James Morris, dm-devel-H+wXaHxf7aLQT0dZR+AlfA, Miklos Szeredi,
linux-security-module-u79uwXL29TY76Z2rM5mHXA,
linux-kernel-u79uwXL29TY76Z2rM5mHXA,
linux-raid-u79uwXL29TY76Z2rM5mHXA,
fuse-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f, Austin S Hemmelgarn,
linux-mtd-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, Alexander Viro,
selinux-+05T5uksL2qpZYMLLGbcSA,
linux-fsdevel-u79uwXL29TY76Z2rM5mHXA,
cgroups-u79uwXL29TY76Z2rM5mHXA, Pavel Tikhomirov, Serge E. Hallyn
In-Reply-To: <1461339521-123191-1-git-send-email-seth.forshee-Z7WLFzj8eWMS+FvcfC7Uqw@public.gmane.org>
The SMACK64, SMACK64EXEC, and SMACK64MMAP labels are all handled
differently in untrusted mounts. This is confusing and
potentically problematic. Change this to handle them all the same
way that SMACK64 is currently handled; that is, read the label
from disk and check it at use time. For SMACK64 and SMACK64MMAP
access is denied if the label does not match smk_root. To be
consistent with suid, a SMACK64EXEC label which does not match
smk_root will still allow execution of the file but will not run
with the label supplied in the xattr.
Signed-off-by: Seth Forshee <seth.forshee-Z7WLFzj8eWMS+FvcfC7Uqw@public.gmane.org>
Acked-by: Casey Schaufler <casey-iSGtlc1asvQWG2LlvL+J4A@public.gmane.org>
---
security/smack/smack_lsm.c | 29 +++++++++++++++++++----------
1 file changed, 19 insertions(+), 10 deletions(-)
diff --git a/security/smack/smack_lsm.c b/security/smack/smack_lsm.c
index aa17198cd5f2..ca564590cc1b 100644
--- a/security/smack/smack_lsm.c
+++ b/security/smack/smack_lsm.c
@@ -919,6 +919,7 @@ static int smack_bprm_set_creds(struct linux_binprm *bprm)
struct inode *inode = file_inode(bprm->file);
struct task_smack *bsp = bprm->cred->security;
struct inode_smack *isp;
+ struct superblock_smack *sbsp;
int rc;
if (bprm->cred_prepared)
@@ -928,6 +929,11 @@ static int smack_bprm_set_creds(struct linux_binprm *bprm)
if (isp->smk_task == NULL || isp->smk_task == bsp->smk_task)
return 0;
+ sbsp = inode->i_sb->s_security;
+ if ((sbsp->smk_flags & SMK_SB_UNTRUSTED) &&
+ isp->smk_task != sbsp->smk_root)
+ return 0;
+
if (bprm->unsafe & (LSM_UNSAFE_PTRACE | LSM_UNSAFE_PTRACE_CAP)) {
struct task_struct *tracer;
rc = 0;
@@ -1725,6 +1731,7 @@ static int smack_mmap_file(struct file *file,
struct task_smack *tsp;
struct smack_known *okp;
struct inode_smack *isp;
+ struct superblock_smack *sbsp;
int may;
int mmay;
int tmay;
@@ -1736,6 +1743,10 @@ static int smack_mmap_file(struct file *file,
isp = file_inode(file)->i_security;
if (isp->smk_mmap == NULL)
return 0;
+ sbsp = file_inode(file)->i_sb->s_security;
+ if (sbsp->smk_flags & SMK_SB_UNTRUSTED &&
+ isp->smk_mmap != sbsp->smk_root)
+ return -EACCES;
mkp = isp->smk_mmap;
tsp = current_security();
@@ -3546,16 +3557,14 @@ static void smack_d_instantiate(struct dentry *opt_dentry, struct inode *inode)
if (rc >= 0)
transflag = SMK_INODE_TRANSMUTE;
}
- if (!(sbsp->smk_flags & SMK_SB_UNTRUSTED)) {
- /*
- * Don't let the exec or mmap label be "*" or "@".
- */
- skp = smk_fetch(XATTR_NAME_SMACKEXEC, inode, dp);
- if (IS_ERR(skp) || skp == &smack_known_star ||
- skp == &smack_known_web)
- skp = NULL;
- isp->smk_task = skp;
- }
+ /*
+ * Don't let the exec or mmap label be "*" or "@".
+ */
+ skp = smk_fetch(XATTR_NAME_SMACKEXEC, inode, dp);
+ if (IS_ERR(skp) || skp == &smack_known_star ||
+ skp == &smack_known_web)
+ skp = NULL;
+ isp->smk_task = skp;
skp = smk_fetch(XATTR_NAME_SMACKMMAP, inode, dp);
if (IS_ERR(skp) || skp == &smack_known_star ||
--
1.9.1
------------------------------------------------------------------------------
Find and fix application performance issues faster with Applications Manager
Applications Manager provides deep performance insights into multiple tiers of
your business applications. It resolves application problems quickly and
reduces your MTTR. Get your free trial!
https://ad.doubleclick.net/ddm/clk/302982198;130105516;z
--
fuse-devel mailing list
To unsubscribe or subscribe, visit https://lists.sourceforge.net/lists/listinfo/fuse-devel
^ permalink raw reply related
* [PATCH v3 10/21] fs: Check for invalid i_uid in may_follow_link()
From: Seth Forshee @ 2016-04-22 15:38 UTC (permalink / raw)
To: Eric W. Biederman, Alexander Viro
Cc: linux-bcache-u79uwXL29TY76Z2rM5mHXA, Serge Hallyn, Seth Forshee,
dm-devel-H+wXaHxf7aLQT0dZR+AlfA, Miklos Szeredi,
linux-security-module-u79uwXL29TY76Z2rM5mHXA,
linux-kernel-u79uwXL29TY76Z2rM5mHXA,
linux-raid-u79uwXL29TY76Z2rM5mHXA,
fuse-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f, Austin S Hemmelgarn,
linux-mtd-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
selinux-+05T5uksL2qpZYMLLGbcSA,
linux-fsdevel-u79uwXL29TY76Z2rM5mHXA,
cgroups-u79uwXL29TY76Z2rM5mHXA, Pavel Tikhomirov
In-Reply-To: <1461339521-123191-1-git-send-email-seth.forshee-Z7WLFzj8eWMS+FvcfC7Uqw@public.gmane.org>
Filesystem uids which don't map into a user namespace may result
in inode->i_uid being INVALID_UID. A symlink and its parent
could have different owners in the filesystem can both get
mapped to INVALID_UID, which may result in following a symlink
when this would not have otherwise been permitted when protected
symlinks are enabled.
Add a new helper function, uid_valid_eq(), and use this to
validate that the ids in may_follow_link() are both equal and
valid. Also add an equivalent helper for gids, which is
currently unused.
Signed-off-by: Seth Forshee <seth.forshee-Z7WLFzj8eWMS+FvcfC7Uqw@public.gmane.org>
Acked-by: Serge Hallyn <serge.hallyn-Z7WLFzj8eWMS+FvcfC7Uqw@public.gmane.org>
---
fs/namei.c | 2 +-
include/linux/uidgid.h | 10 ++++++++++
2 files changed, 11 insertions(+), 1 deletion(-)
diff --git a/fs/namei.c b/fs/namei.c
index a29094c6f4a1..6fe8b0d8ca90 100644
--- a/fs/namei.c
+++ b/fs/namei.c
@@ -915,7 +915,7 @@ static inline int may_follow_link(struct nameidata *nd)
return 0;
/* Allowed if parent directory and link owner match. */
- if (uid_eq(parent->i_uid, inode->i_uid))
+ if (uid_valid_eq(parent->i_uid, inode->i_uid))
return 0;
if (nd->flags & LOOKUP_RCU)
diff --git a/include/linux/uidgid.h b/include/linux/uidgid.h
index 03835522dfcb..e09529fe2668 100644
--- a/include/linux/uidgid.h
+++ b/include/linux/uidgid.h
@@ -117,6 +117,16 @@ static inline bool gid_valid(kgid_t gid)
return __kgid_val(gid) != (gid_t) -1;
}
+static inline bool uid_valid_eq(kuid_t left, kuid_t right)
+{
+ return uid_eq(left, right) && uid_valid(left);
+}
+
+static inline bool gid_valid_eq(kgid_t left, kgid_t right)
+{
+ return gid_eq(left, right) && gid_valid(left);
+}
+
#ifdef CONFIG_USER_NS
extern kuid_t make_kuid(struct user_namespace *from, uid_t uid);
--
1.9.1
------------------------------------------------------------------------------
Find and fix application performance issues faster with Applications Manager
Applications Manager provides deep performance insights into multiple tiers of
your business applications. It resolves application problems quickly and
reduces your MTTR. Get your free trial!
https://ad.doubleclick.net/ddm/clk/302982198;130105516;z
--
fuse-devel mailing list
To unsubscribe or subscribe, visit https://lists.sourceforge.net/lists/listinfo/fuse-devel
^ permalink raw reply related
* [PATCH v3 11/21] cred: Reject inodes with invalid ids in set_create_file_as()
From: Seth Forshee @ 2016-04-22 15:38 UTC (permalink / raw)
To: Eric W. Biederman
Cc: linux-bcache-u79uwXL29TY76Z2rM5mHXA, Serge Hallyn, Seth Forshee,
dm-devel-H+wXaHxf7aLQT0dZR+AlfA, Miklos Szeredi,
linux-security-module-u79uwXL29TY76Z2rM5mHXA,
linux-kernel-u79uwXL29TY76Z2rM5mHXA,
linux-raid-u79uwXL29TY76Z2rM5mHXA,
fuse-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f, Austin S Hemmelgarn,
linux-mtd-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, Alexander Viro,
selinux-+05T5uksL2qpZYMLLGbcSA,
linux-fsdevel-u79uwXL29TY76Z2rM5mHXA,
cgroups-u79uwXL29TY76Z2rM5mHXA, Pavel Tikhomirov
In-Reply-To: <1461339521-123191-1-git-send-email-seth.forshee-Z7WLFzj8eWMS+FvcfC7Uqw@public.gmane.org>
Using INVALID_[UG]ID for the LSM file creation context doesn't
make sense, so return an error if the inode passed to
set_create_file_as() has an invalid id.
Signed-off-by: Seth Forshee <seth.forshee-Z7WLFzj8eWMS+FvcfC7Uqw@public.gmane.org>
Acked-by: Serge Hallyn <serge.hallyn-Z7WLFzj8eWMS+FvcfC7Uqw@public.gmane.org>
---
kernel/cred.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/kernel/cred.c b/kernel/cred.c
index 0c0cd8a62285..5f264fb5737d 100644
--- a/kernel/cred.c
+++ b/kernel/cred.c
@@ -689,6 +689,8 @@ EXPORT_SYMBOL(set_security_override_from_ctx);
*/
int set_create_files_as(struct cred *new, struct inode *inode)
{
+ if (!uid_valid(inode->i_uid) || !gid_valid(inode->i_gid))
+ return -EINVAL;
new->fsuid = inode->i_uid;
new->fsgid = inode->i_gid;
return security_kernel_create_files_as(new, inode);
--
1.9.1
------------------------------------------------------------------------------
Find and fix application performance issues faster with Applications Manager
Applications Manager provides deep performance insights into multiple tiers of
your business applications. It resolves application problems quickly and
reduces your MTTR. Get your free trial!
https://ad.doubleclick.net/ddm/clk/302982198;130105516;z
--
fuse-devel mailing list
To unsubscribe or subscribe, visit https://lists.sourceforge.net/lists/listinfo/fuse-devel
^ permalink raw reply related
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