Skip to content

Commit 64b437c

Browse files
Christoph Hellwigaxboe
authored andcommitted
zloop: remove irq-safe locking
All of zloop runs in user context, so drop the irq-safe locking. Signed-off-by: Christoph Hellwig <[email protected]> Reviewed-by: Damien Le Moal <[email protected]> Reviewed-by: Johannes Thumshirn <[email protected]> Link: https://patch.msgid.link/[email protected] Signed-off-by: Jens Axboe <[email protected]>
1 parent ec5c045 commit 64b437c

1 file changed

Lines changed: 15 additions & 22 deletions

File tree

drivers/block/zloop.c

Lines changed: 15 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -311,7 +311,6 @@ static int zloop_update_seq_zone(struct zloop_device *zlo, unsigned int zone_no)
311311
struct zloop_zone *zone = &zlo->zones[zone_no];
312312
struct kstat stat;
313313
sector_t file_sectors;
314-
unsigned long flags;
315314
int ret;
316315

317316
lockdep_assert_held(&zone->lock);
@@ -337,7 +336,7 @@ static int zloop_update_seq_zone(struct zloop_device *zlo, unsigned int zone_no)
337336
return -EINVAL;
338337
}
339338

340-
spin_lock_irqsave(&zone->wp_lock, flags);
339+
spin_lock(&zone->wp_lock);
341340
if (!file_sectors) {
342341
zloop_mark_empty(zlo, zone);
343342
} else if (file_sectors == zlo->zone_capacity) {
@@ -348,7 +347,7 @@ static int zloop_update_seq_zone(struct zloop_device *zlo, unsigned int zone_no)
348347
zone->cond = BLK_ZONE_COND_CLOSED;
349348
zone->wp = zone->start + file_sectors;
350349
}
351-
spin_unlock_irqrestore(&zone->wp_lock, flags);
350+
spin_unlock(&zone->wp_lock);
352351

353352
return 0;
354353
}
@@ -381,7 +380,6 @@ static int zloop_open_zone(struct zloop_device *zlo, unsigned int zone_no)
381380
static int zloop_close_zone(struct zloop_device *zlo, unsigned int zone_no)
382381
{
383382
struct zloop_zone *zone = &zlo->zones[zone_no];
384-
unsigned long flags;
385383
int ret = 0;
386384

387385
if (test_bit(ZLOOP_ZONE_CONV, &zone->flags))
@@ -400,13 +398,13 @@ static int zloop_close_zone(struct zloop_device *zlo, unsigned int zone_no)
400398
break;
401399
case BLK_ZONE_COND_IMP_OPEN:
402400
case BLK_ZONE_COND_EXP_OPEN:
403-
spin_lock_irqsave(&zone->wp_lock, flags);
401+
spin_lock(&zone->wp_lock);
404402
zloop_lru_remove_open_zone(zlo, zone);
405403
if (zone->wp == zone->start)
406404
zone->cond = BLK_ZONE_COND_EMPTY;
407405
else
408406
zone->cond = BLK_ZONE_COND_CLOSED;
409-
spin_unlock_irqrestore(&zone->wp_lock, flags);
407+
spin_unlock(&zone->wp_lock);
410408
break;
411409
case BLK_ZONE_COND_EMPTY:
412410
case BLK_ZONE_COND_FULL:
@@ -424,7 +422,6 @@ static int zloop_close_zone(struct zloop_device *zlo, unsigned int zone_no)
424422
static int zloop_reset_zone(struct zloop_device *zlo, unsigned int zone_no)
425423
{
426424
struct zloop_zone *zone = &zlo->zones[zone_no];
427-
unsigned long flags;
428425
int ret = 0;
429426

430427
if (test_bit(ZLOOP_ZONE_CONV, &zone->flags))
@@ -442,10 +439,10 @@ static int zloop_reset_zone(struct zloop_device *zlo, unsigned int zone_no)
442439
goto unlock;
443440
}
444441

445-
spin_lock_irqsave(&zone->wp_lock, flags);
442+
spin_lock(&zone->wp_lock);
446443
zloop_mark_empty(zlo, zone);
447444
clear_bit(ZLOOP_ZONE_SEQ_ERROR, &zone->flags);
448-
spin_unlock_irqrestore(&zone->wp_lock, flags);
445+
spin_unlock(&zone->wp_lock);
449446

450447
unlock:
451448
mutex_unlock(&zone->lock);
@@ -470,7 +467,6 @@ static int zloop_reset_all_zones(struct zloop_device *zlo)
470467
static int zloop_finish_zone(struct zloop_device *zlo, unsigned int zone_no)
471468
{
472469
struct zloop_zone *zone = &zlo->zones[zone_no];
473-
unsigned long flags;
474470
int ret = 0;
475471

476472
if (test_bit(ZLOOP_ZONE_CONV, &zone->flags))
@@ -488,10 +484,10 @@ static int zloop_finish_zone(struct zloop_device *zlo, unsigned int zone_no)
488484
goto unlock;
489485
}
490486

491-
spin_lock_irqsave(&zone->wp_lock, flags);
487+
spin_lock(&zone->wp_lock);
492488
zloop_mark_full(zlo, zone);
493489
clear_bit(ZLOOP_ZONE_SEQ_ERROR, &zone->flags);
494-
spin_unlock_irqrestore(&zone->wp_lock, flags);
490+
spin_unlock(&zone->wp_lock);
495491

496492
unlock:
497493
mutex_unlock(&zone->lock);
@@ -581,10 +577,9 @@ static int zloop_seq_write_prep(struct zloop_cmd *cmd)
581577
bool is_append = req_op(rq) == REQ_OP_ZONE_APPEND;
582578
struct zloop_zone *zone = &zlo->zones[zone_no];
583579
sector_t zone_end = zone->start + zlo->zone_capacity;
584-
unsigned long flags;
585580
int ret = 0;
586581

587-
spin_lock_irqsave(&zone->wp_lock, flags);
582+
spin_lock(&zone->wp_lock);
588583

589584
/*
590585
* Zone append operations always go at the current write pointer, but
@@ -630,7 +625,7 @@ static int zloop_seq_write_prep(struct zloop_cmd *cmd)
630625
zloop_mark_full(zlo, zone);
631626
}
632627
out_unlock:
633-
spin_unlock_irqrestore(&zone->wp_lock, flags);
628+
spin_unlock(&zone->wp_lock);
634629
return ret;
635630
}
636631

@@ -868,13 +863,12 @@ static bool zloop_set_zone_append_sector(struct request *rq)
868863
struct zloop_zone *zone = &zlo->zones[zone_no];
869864
sector_t zone_end = zone->start + zlo->zone_capacity;
870865
sector_t nr_sectors = blk_rq_sectors(rq);
871-
unsigned long flags;
872866

873-
spin_lock_irqsave(&zone->wp_lock, flags);
867+
spin_lock(&zone->wp_lock);
874868

875869
if (zone->cond == BLK_ZONE_COND_FULL ||
876870
zone->wp + nr_sectors > zone_end) {
877-
spin_unlock_irqrestore(&zone->wp_lock, flags);
871+
spin_unlock(&zone->wp_lock);
878872
return false;
879873
}
880874

@@ -883,7 +877,7 @@ static bool zloop_set_zone_append_sector(struct request *rq)
883877
if (zone->wp >= zone_end)
884878
zloop_mark_full(zlo, zone);
885879

886-
spin_unlock_irqrestore(&zone->wp_lock, flags);
880+
spin_unlock(&zone->wp_lock);
887881

888882
return true;
889883
}
@@ -944,7 +938,6 @@ static int zloop_report_zones(struct gendisk *disk, sector_t sector,
944938
struct zloop_device *zlo = disk->private_data;
945939
struct blk_zone blkz = {};
946940
unsigned int first, i;
947-
unsigned long flags;
948941
int ret;
949942

950943
first = disk_zone_no(disk, sector);
@@ -968,9 +961,9 @@ static int zloop_report_zones(struct gendisk *disk, sector_t sector,
968961

969962
blkz.start = zone->start;
970963
blkz.len = zlo->zone_size;
971-
spin_lock_irqsave(&zone->wp_lock, flags);
964+
spin_lock(&zone->wp_lock);
972965
blkz.wp = zone->wp;
973-
spin_unlock_irqrestore(&zone->wp_lock, flags);
966+
spin_unlock(&zone->wp_lock);
974967
blkz.cond = zone->cond;
975968
if (test_bit(ZLOOP_ZONE_CONV, &zone->flags)) {
976969
blkz.type = BLK_ZONE_TYPE_CONVENTIONAL;

0 commit comments

Comments
 (0)