Commit 07c4e1e8 authored by Ming Lei's avatar Ming Lei Committed by Jens Axboe
Browse files

block: only define 'nr_sects_seq' in hd_part for 32bit SMP



The seqcount of 'nr_sects_seq' is only needed in case of 32bit SMP,
so define it just for 32bit SMP.

Signed-off-by: default avatarMing Lei <ming.lei@redhat.com>
Reviewed-by: default avatarChristoph Hellwig <hch@infradead.org>
Cc: Yufen Yu <yuyufen@huawei.com>
Cc: Christoph Hellwig <hch@infradead.org>
Cc: Hou Tao <houtao1@huawei.com>
Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent b7d6c303
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -1731,7 +1731,7 @@ struct gendisk *__alloc_disk_node(int minors, int node_id)
		 * TODO: Ideally set_capacity() and get_capacity() should be
		 * converted to make use of bd_mutex and sequence counters.
		 */
		seqcount_init(&disk->part0.nr_sects_seq);
		hd_sects_seq_init(&disk->part0);
		if (hd_ref_init(&disk->part0)) {
			hd_free_part(&disk->part0);
			kfree(disk);
+1 −1
Original line number Diff line number Diff line
@@ -392,7 +392,7 @@ static struct hd_struct *add_partition(struct gendisk *disk, int partno,
		goto out_free;
	}

	seqcount_init(&p->nr_sects_seq);
	hd_sects_seq_init(p);
	pdev = part_to_dev(p);

	p->start_sect = start;
+9 −0
Original line number Diff line number Diff line
@@ -68,7 +68,9 @@ struct hd_struct {
	 * can be non-atomic on 32bit machines with 64bit sector_t.
	 */
	sector_t nr_sects;
#if BITS_PER_LONG==32 && defined(CONFIG_SMP)
	seqcount_t nr_sects_seq;
#endif
	sector_t alignment_offset;
	unsigned int discard_alignment;
	struct device __dev;
@@ -274,6 +276,13 @@ static inline void disk_put_part(struct hd_struct *part)
		put_device(part_to_dev(part));
}

static inline void hd_sects_seq_init(struct hd_struct *p)
{
#if BITS_PER_LONG==32 && defined(CONFIG_SMP)
	seqcount_init(&p->nr_sects_seq);
#endif
}

/*
 * Smarter partition iterator without context limits.
 */