On 05/02/16 16:50, Boris Ostrovsky wrote:
I don't call scsiback_add_translation_entry() in the critical case.
On 02/05/2016 08:21 AM, Juergen Gross wrote:
When adding more than one LUN to a frontend a warning for a failedAren't you just factoring out the check? The warning is still printed
assignment is issued in dom0 for each already existing LUN. Avoid this
warning.
for each scsiback_add_translation_entry() invocation, no?
@@ -962,33 +973,31 @@ static int scsiback_del_translation_entry(struct
vscsibk_info *info,
struct ids_tuple *v)
{
struct v2p_entry *entry;
- struct list_head *head = &(info->v2p_entry_lists);
unsigned long flags;
spin_lock_irqsave(&info->v2p_lock, flags);
/* Find out the translation entry specified */
- list_for_each_entry(entry, head, l) {
- if ((entry->v.chn == v->chn) &&
- (entry->v.tgt == v->tgt) &&
- (entry->v.lun == v->lun)) {
- goto found;
- }
- }
-
- spin_unlock_irqrestore(&info->v2p_lock, flags);
- return 1;
-
-found:
- /* Delete the translation entry specfied */
- __scsiback_del_translation_entry(entry);
+ entry = scsiback_chk_translation_entry(info, v);
+ if (entry)
+ __scsiback_del_translation_entry(entry);
spin_unlock_irqrestore(&info->v2p_lock, flags);
- return 0;
+ return entry == NULL;
Might be better to return -ENOENT instead of 1 above and -EEXISTS ifI just didn't want to change more than necessary. In case it is
entry!=NULL, given that this returns an int.
okay to do some cleanup as well I'd rather change the return type
to "bool".