All of lore.kernel.org
 help / color / mirror / Atom feed
From: Koen De Wit <koen.de.wit@oracle.com>
To: linux-btrfs@vger.kernel.org
Subject: [BUG?] Btrfs quota: overwritten space is counted twice
Date: Fri, 05 Apr 2013 23:03:06 +0200	[thread overview]
Message-ID: <515F3C0A.8080603@oracle.com> (raw)

When data in a file is overwritten, starting somewhere in the middle of 
the file, the overwritten space is counted twice against the space usage 
numbers. Is this a bug, or did I something wrong?

This is what I did:

I create a subvolume and limit it to 4 MB, and create a 1000 KB file in 
the subvol:

     # btrfs subvol create s
       Create subvolume './s'
     # btrfs qgroup limit 4m s
     # btrfs qgroup show ./ | grep 260
       0/260 4096 4096
     # dd if=/dev/zero of=s/file bs=1024 count=1000; sync
     # ls -lah s/file
       -rw-r--r--. 1 root root 1000K Apr  6 00:13 s/file
     # btrfs qgroup show ./ | grep 260
       0/260 1028096 1028096

Then I overwrite the last 900 KB of the file, and add 100 KB of data, 
resulting in a 1.1 MB file. The space usage numbers shows 2 MB however:

     # dd if=/dev/zero of=s/file bs=1024 count=1000 seek=100; sync
     # ls -lah s/file
       -rw-r--r--. 1 root root 1.1M Apr  6 00:13 s/file
     # btrfs qgroup show ./ | grep 260
       0/260 2052096 2052096

I repeat this twice, the file becomes 1.3 MB but the usage number goes 
to almost 4 MB:

     # dd if=/dev/zero of=s/file bs=1024 count=1000 seek=200; sync
     # dd if=/dev/zero of=s/file bs=1024 count=1000 seek=300; sync
     # ls -lah s/file
       -rw-r--r--. 1 root root 1.3M Apr  6 00:14 s/file
     # btrfs qgroup show ./ | grep 260
       0/260 4100096 4100096

Doing the same again results in "quota exceeded" errors:

     # dd if=/dev/zero of=s/file bs=1024 count=1000 seek=400; sync
       dd: writing `s/file': Disk quota exceeded
       78+0 records in
       77+0 records out
       78848 bytes (79 kB) copied, 0.00138135 s, 57.1 MB/s
     # ls -lah s/file
       -rw-r--r--. 1 root root 477K Apr  6 00:15 s/file
     # btrfs qgroup show ./ | grep 260
       0/260 4182016 4182016
     # touch s/emptyfile
       touch: cannot touch `s/emptyfile': Disk quota exceeded

Koen.

             reply	other threads:[~2013-04-05 21:06 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-04-05 21:03 Koen De Wit [this message]
2013-04-06  7:28 ` [BUG?] Btrfs quota: overwritten space is counted twice Arne Jansen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=515F3C0A.8080603@oracle.com \
    --to=koen.de.wit@oracle.com \
    --cc=linux-btrfs@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.