Re: [PATCH v3 04/10] block: Introduce zone write pointer offset caching
From: Christoph Hellwig <hch@infradead.org>
Date: 2020-03-27 17:21:15
Also in:
linux-fsdevel, linux-scsi
From: Christoph Hellwig <hch@infradead.org>
Date: 2020-03-27 17:21:15
Also in:
linux-fsdevel, linux-scsi
+static inline unsigned int *blk_alloc_zone_wp_ofst(unsigned int nr_zones)
+{
+ return kvcalloc(nr_zones, sizeof(unsigned int), GFP_NOIO);
+}This helper seems a bit pointless.
+int blk_get_zone_wp_offset(struct blk_zone *zone, unsigned int *wp_ofst)
+{
+ switch (zone->cond) {
+ case BLK_ZONE_COND_EMPTY:
+ *wp_ofst = 0;
+ return 0;
+ case BLK_ZONE_COND_IMP_OPEN:
+ case BLK_ZONE_COND_EXP_OPEN:
+ case BLK_ZONE_COND_CLOSED:
+ *wp_ofst = zone->wp - zone->start;
+ return 0;
+ case BLK_ZONE_COND_FULL:
+ *wp_ofst = zone->len;
+ return 0;
+ case BLK_ZONE_COND_NOT_WP:
+ case BLK_ZONE_COND_OFFLINE:
+ case BLK_ZONE_COND_READONLY:
+ /*
+ * Conventional, offline and read-only zones do not have a valid
+ * write pointer. Use 0 as a dummy value.
+ */
+ *wp_ofst = 0;
+ return 0;
+ default:
+ return -ENODEV;
+ }Why not just return the offset? The error case is impossible anyway.