func: static BdrvDirtyBitmap *block_dirty_bitmap_lookup(const char *node,
  
                                                    const char *name,
  
                                                    BlockDriverState **pbs,
  
                                                    AioContext **paio,
  
                                                    Error **errp)
  
  {
  
      BlockDriverState *bs;
  
      BdrvDirtyBitmap *bitmap;
  
      AioContext *aio_context;
  
  
  
      if (!node) {
  
          error_setg(errp, "Node cannot be NULL");
  
          return NULL;
  
      }
  
      if (!name) {
  
          error_setg(errp, "Bitmap name cannot be NULL");
  
          return NULL;
  
      }
  
      bs = bdrv_lookup_bs(node, node, NULL);
  
      if (!bs) {
  
          error_setg(errp, "Node '%s' not found", node);
  
          return NULL;
  
      }
  
  
  
      aio_context = bdrv_get_aio_context(bs);
  
      aio_context_acquire(aio_context);
  
  
  
      bitmap = bdrv_find_dirty_bitmap(bs, name);
  
      if (!bitmap) {
  
          error_setg(errp, "Dirty bitmap '%s' not found", name);
  
          goto fail;
  
      }
  
  
  
      if (pbs) {
  
          *pbs = bs;
  
      }
  
      if (paio) {
  
          *paio = aio_context;
  
      } else {
  
          aio_context_release(aio_context);
  
      }
  
  
  
      return bitmap;
  
  
  
   fail:
  
      aio_context_release(aio_context);
  
      return NULL;
  
  }
  