Re: [GIT PULL] Core block bits for 2.6.40

From: Jens Axboe
Date: Thu May 26 2011 - 01:52:17 EST


On 2011-05-26 07:35, Eric Dumazet wrote:
> Le mercredi 25 mai 2011 Ã 15:03 +0200, Jens Axboe a Ãcrit :
>> Hi Linus,
>>
>> A real pull request this time. These are the core bits for the next
>> kernel. Nothing exciting in here in this round, with the churn in
>> the last release, this release will be mellow.
>>
>> - Optimizations for queue flushing on SATA devices, where we
>> can't queue a FLUSH command. This fixes up a performance regression
>> caused by a bug fix to prevent potential live lock on adding
>> FLUSH commands at the head of the queue.
>>
>> - Make stats lockless for blk-cgroup.
>>
>> - Various bug fixes for blk-cgroup.
>>
>> - Various little fixes and improvements to CFQ.
>>
>> - Last round of media event changes.
>>
>> - Fixes for discard topology reporting and sysfs documentation update
>> for the same.
>>
>> - Add support for batched discards. This greatly speeds up discarding
>> an entire device.
>>
>> - Fix for bad return value in the discard ioctl.
>>
>> - Remove request plug state debug checks. Haven't triggered even during
>> the 2.6.39-rc devel cycle, so get rid of them.
>>
>>
>> Please pull!
>>
>>
>> git://git.kernel.dk/linux-2.6-block.git for-2.6.40/core
>>
>
>> Tao Ma (2):
>> block: Remove 'plug/unplug' comment in blk_execute_rq_nowait
>> block: Remove extra discard_alignment from hd_struct.
>
> At boot, I have a crash in part_discard_alignment_show+0x1b/0x50
>
> CR2 : 000006ac
>
> fault in : mov 0x2c(%rcx),%edx
>
> I suspect commit 23ceb5b7719e9276d4 (block: Remove extra
> discard_alignment from hd_struct) being in fault

Hmm, that must be disk->queue == NULL. Do you have a trace of the crash,
with the surrounding boot messages? I wonder what is special about your
setup to trigger something like this.

diff --git a/fs/partitions/check.c b/fs/partitions/check.c
index 8ed4d34..f82e762 100644
--- a/fs/partitions/check.c
+++ b/fs/partitions/check.c
@@ -256,10 +256,12 @@ ssize_t part_discard_alignment_show(struct device *dev,
{
struct hd_struct *p = dev_to_part(dev);
struct gendisk *disk = dev_to_disk(dev);
+ unsigned int alignment = 0;

- return sprintf(buf, "%u\n",
- queue_limit_discard_alignment(&disk->queue->limits,
- p->start_sect));
+ if (disk->queue)
+ alignment = queue_limit_discard_alignment(&disk->queue->limits,
+ p->start_sect);
+ return sprintf(buf, "%u\n", alignment);
}

ssize_t part_stat_show(struct device *dev,


--
Jens Axboe

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/