Skip to content

server: charge snapshot copy primary storage to the snapshot owner ac… - #14036

Open
nagaboinaramgopal wants to merge 1 commit into
apache:mainfrom
nagaboinaramgopal:fix/snapshot-copy-resourcecount-account
Open

server: charge snapshot copy primary storage to the snapshot owner ac…#14036
nagaboinaramgopal wants to merge 1 commit into
apache:mainfrom
nagaboinaramgopal:fix/snapshot-copy-resourcecount-account

Conversation

@nagaboinaramgopal

Copy link
Copy Markdown

Description

When a snapshot is copied to an extra primary storage pool (createSnapshot with
storagepoolids), copySnapshotOnPool incremented the primary_storage resource count
using CallContext.getCallingUserId(). That method's first argument is an account
id, but getCallingUserId() returns a user id, and user ids and account ids are
independent sequences. So the usage was charged to whatever account happens to
share the caller's user id, never to the snapshot's real owner, and the delete
path never decrements it. The following guard also compared the user id against
Account.ACCOUNT_ID_SYSTEM.

Charge the snapshot owner's account id, and use the calling account id for the
system check.

Types of changes

  • Bug fix (non-breaking change which fixes an issue)

Feature/Enhancement Scale or Bug Severity

Bug Severity

  • Minor

How Has This Been Tested?

Added a unit test asserting the primary_storage count is charged to the snapshot
owner's account rather than the calling user id. Also built the standard packages
and deployed on a KVM advanced zone.

…count

copySnapshotOnPool passed CallContext.getCallingUserId() to
incrementResourceCount, whose first argument is an account id, not a user id.
User ids and account ids are independent sequences, so the primary_storage
count was charged to whichever account happened to share the caller's user id
(and never to the real owner), corrupting quota accounting. The following
guard also compared the calling user id against Account.ACCOUNT_ID_SYSTEM.
Use the snapshot owner's account id for the count and the calling account id
for the system check.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant