struct zloop_zone *zone = &zlo->zones[zone_no];
struct kstat stat;
sector_t file_sectors;
- unsigned long flags;
int ret;
lockdep_assert_held(&zone->lock);
return -EINVAL;
}
- spin_lock_irqsave(&zone->wp_lock, flags);
+ spin_lock(&zone->wp_lock);
if (!file_sectors) {
zloop_mark_empty(zlo, zone);
} else if (file_sectors == zlo->zone_capacity) {
zone->cond = BLK_ZONE_COND_CLOSED;
zone->wp = zone->start + file_sectors;
}
- spin_unlock_irqrestore(&zone->wp_lock, flags);
+ spin_unlock(&zone->wp_lock);
return 0;
}
static int zloop_close_zone(struct zloop_device *zlo, unsigned int zone_no)
{
struct zloop_zone *zone = &zlo->zones[zone_no];
- unsigned long flags;
int ret = 0;
if (test_bit(ZLOOP_ZONE_CONV, &zone->flags))
break;
case BLK_ZONE_COND_IMP_OPEN:
case BLK_ZONE_COND_EXP_OPEN:
- spin_lock_irqsave(&zone->wp_lock, flags);
+ spin_lock(&zone->wp_lock);
zloop_lru_remove_open_zone(zlo, zone);
if (zone->wp == zone->start)
zone->cond = BLK_ZONE_COND_EMPTY;
else
zone->cond = BLK_ZONE_COND_CLOSED;
- spin_unlock_irqrestore(&zone->wp_lock, flags);
+ spin_unlock(&zone->wp_lock);
break;
case BLK_ZONE_COND_EMPTY:
case BLK_ZONE_COND_FULL:
static int zloop_reset_zone(struct zloop_device *zlo, unsigned int zone_no)
{
struct zloop_zone *zone = &zlo->zones[zone_no];
- unsigned long flags;
int ret = 0;
if (test_bit(ZLOOP_ZONE_CONV, &zone->flags))
goto unlock;
}
- spin_lock_irqsave(&zone->wp_lock, flags);
+ spin_lock(&zone->wp_lock);
zloop_mark_empty(zlo, zone);
clear_bit(ZLOOP_ZONE_SEQ_ERROR, &zone->flags);
- spin_unlock_irqrestore(&zone->wp_lock, flags);
+ spin_unlock(&zone->wp_lock);
unlock:
mutex_unlock(&zone->lock);
static int zloop_finish_zone(struct zloop_device *zlo, unsigned int zone_no)
{
struct zloop_zone *zone = &zlo->zones[zone_no];
- unsigned long flags;
int ret = 0;
if (test_bit(ZLOOP_ZONE_CONV, &zone->flags))
goto unlock;
}
- spin_lock_irqsave(&zone->wp_lock, flags);
+ spin_lock(&zone->wp_lock);
zloop_mark_full(zlo, zone);
clear_bit(ZLOOP_ZONE_SEQ_ERROR, &zone->flags);
- spin_unlock_irqrestore(&zone->wp_lock, flags);
+ spin_unlock(&zone->wp_lock);
unlock:
mutex_unlock(&zone->lock);
bool is_append = req_op(rq) == REQ_OP_ZONE_APPEND;
struct zloop_zone *zone = &zlo->zones[zone_no];
sector_t zone_end = zone->start + zlo->zone_capacity;
- unsigned long flags;
int ret = 0;
- spin_lock_irqsave(&zone->wp_lock, flags);
+ spin_lock(&zone->wp_lock);
/*
* Zone append operations always go at the current write pointer, but
zloop_mark_full(zlo, zone);
}
out_unlock:
- spin_unlock_irqrestore(&zone->wp_lock, flags);
+ spin_unlock(&zone->wp_lock);
return ret;
}
struct zloop_zone *zone = &zlo->zones[zone_no];
sector_t zone_end = zone->start + zlo->zone_capacity;
sector_t nr_sectors = blk_rq_sectors(rq);
- unsigned long flags;
- spin_lock_irqsave(&zone->wp_lock, flags);
+ spin_lock(&zone->wp_lock);
if (zone->cond == BLK_ZONE_COND_FULL ||
zone->wp + nr_sectors > zone_end) {
- spin_unlock_irqrestore(&zone->wp_lock, flags);
+ spin_unlock(&zone->wp_lock);
return false;
}
if (zone->wp >= zone_end)
zloop_mark_full(zlo, zone);
- spin_unlock_irqrestore(&zone->wp_lock, flags);
+ spin_unlock(&zone->wp_lock);
return true;
}
struct zloop_device *zlo = disk->private_data;
struct blk_zone blkz = {};
unsigned int first, i;
- unsigned long flags;
int ret;
first = disk_zone_no(disk, sector);
blkz.start = zone->start;
blkz.len = zlo->zone_size;
- spin_lock_irqsave(&zone->wp_lock, flags);
+ spin_lock(&zone->wp_lock);
blkz.wp = zone->wp;
- spin_unlock_irqrestore(&zone->wp_lock, flags);
+ spin_unlock(&zone->wp_lock);
blkz.cond = zone->cond;
if (test_bit(ZLOOP_ZONE_CONV, &zone->flags)) {
blkz.type = BLK_ZONE_TYPE_CONVENTIONAL;