How to implement staging buffer

Hi,
I am attempting to make vertex buffer which is device local memory.
All my attempts so far result in “Buffer performance warning” being triggered, and I do not understand exactly what condition(s) cause this.
My current attempt:

// Creating VBO - buffer name = 2
glCreateBuffers(n = 1, buffers = 0x26da8be3be8)
Buffer_impl::Buffer_impl() capacity_byte_count = 134217728, flags = , usage = vertex, required = device_local, preferred = ) name = 2 debug_label = Mesh_memory position vertex buffer
Buffer_impl::allocate_storage buffer = 2 Mesh_memory position vertex buffer, m_capacity_byte_count = 134217728, gl_storage_mask = 
glNamedBufferStorage(buffer = 2, size = 134217728, data = 0x0, flags = )

// Upload to VBO - staging buffer name = 6
glCreateBuffers(n = 1, buffers = 0x26dac065790)
glNamedBufferStorage(buffer = 6, size = 360, data = 0x0, flags = GL_MAP_WRITE_BIT | GL_MAP_PERSISTENT_BIT)
glMapNamedBufferRange(buffer = 6, offset = 0, length = 360, access = GL_MAP_WRITE_BIT | GL_MAP_FLUSH_EXPLICIT_BIT | GL_MAP_PERSISTENT_BIT)
Created new staging buffer 6 of size 360
glFlushMappedNamedBufferRange(buffer = 6, offset = 0, length = 360)
glCopyNamedBufferSubData(readBuffer = 6, writeBuffer = 2, readOffset = 0, writeOffset = 0, size = 360)

// Use VBO in VAO
glBindVertexArray(array = 3)
glVertexArrayElementBuffer(vaobj = 3, buffer = 5)
glVertexArrayVertexBuffer(vaobj = 3, bindingindex = 0, buffer = 2, offset = 0, stride = 12)

// Draw
glDrawElementsInstancedBaseVertexBaseInstance(mode = GL_TRIANGLES, count = 36, type = GL_UNSIGNED_INT, indices = 0x0, instancecount = 1, basevertex = 0, baseinstance = 0)
GL debug message:
source:   GL_DEBUG_SOURCE_API
type:     GL_DEBUG_TYPE_PERFORMANCE
id:       0x020072
severity: GL_DEBUG_SEVERITY_MEDIUM
Buffer performance warning: Buffer object Mesh_memory position vertex buffer (bound to GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB (0), usage hint is GL_DYNAMIC_DRAW) is being copied/moved from VIDEO memory to HOST memory.

What exactly triggers buffer copied/moved from VIDEO memory to HOST memory? How can I avoid it? How should I setup the staging buffer? Thanks!